MIDI INの実験
お疲れ様です。高橋です。
Arduino+YMZをMIDI化するための第一歩の実験として、まずはMIDI INを受け付けて、ピエゾスピーカーで音が鳴るかどうか実験してみました。
曲はパズーが吹いてるラッパのアレです。うろ覚えですが、多分こんな曲だったような気がします。
回路
フォトカプラを使ってゴテゴテと配線したものの・・・
結局はMIDIの5番をArduinoのRXに、MIDIの4番をGNDに刺し、ピエゾスピーカーを2番とGNDに刺しただけで動きました。フォトカプラ周りはまた今度実験してみます。
ライブラリはArduino MIDI Library v4.2を使っています。
ArduinoのスケッチはイチロヲさんのサイトのArduinoでMIDI音源を作ってみたを参考にさせてもらいました。
スケッチ下記の通り、非常にシンプルです。
#include <MIDI.h>
#define Speaker1 2
MIDI_CREATE_DEFAULT_INSTANCE();
int m2t[127] = {
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
3,
11,
19,
27,
35,
43,
51,
59,
67,
75,
83,
91,
99,
107,
115,
123, //NOTE_B2
131, //NOTE_C3
139, //NOTE_CS3
147, //NOTE_D3
156, //NOTE_DS3
165, //NOTE_E3
175, //NOTE_F3
185, //NOTE_FS3
196, //NOTE_G3
208, //NOTE_GS3
220, //NOTE_A3
233, //NOTE_AS3
247, //NOTE_B3
262, //NOTE_C4
277, //NOTE_CS4
294, //NOTE_D4
311, //NOTE_DS4
330, //NOTE_E4
349, //NOTE_F4
370, //NOTE_FS4
392, //NOTE_G4
415, //NOTE_GS4
440, //NOTE_A4
466, //NOTE_AS4
494, //NOTE_B4
523, //NOTE_C5
554, //NOTE_CS5
587, //NOTE_D5
622, //NOTE_DS5
659, //NOTE_E5
698, //NOTE_F5
740, //NOTE_FS5
784, //NOTE_G5
831, //NOTE_GS5
880, //NOTE_A5
932, //NOTE_AS5
988, //NOTE_B5
1047, //NOTE_C6
1109, //NOTE_CS6
1175, //NOTE_D6
1245, //NOTE_DS6
1319, //NOTE_E6
1397, //NOTE_F6
1480, //NOTE_FS6
1568, //NOTE_G6
1661, //NOTE_GS6
1760, //NOTE_A6
1865, //NOTE_AS6
1976, //NOTE_B6
2093, //NOTE_C7
2217, //NOTE_CS7
2349, //NOTE_D7
2489, //NOTE_DS7
2637, //NOTE_E7
2794, //NOTE_F7
2960, //NOTE_FS7
3136, //NOTE_G7
3322, //NOTE_GS7
3520, //NOTE_A7
3729, //NOTE_AS7
3951, //NOTE_B7
4186, //NOTE_C8
4435, //NOTE_CS8
4699, //NOTE_D8
4978 //NOTE_DS8
};
int vol = 1;
int tone1Interval = 0;
int note;
void setup() {
MIDI.begin(0);
}
void loop() {
if (MIDI.read()) {
MIDI.setInputChannel(vol); // Channel
switch (MIDI.getType()) {
case midi::NoteOn:
note = MIDI.getData1(); // note no
tone1Interval = note;
tone(Speaker1, m2t[note]);
break;
case midi::NoteOff:
note = MIDI.getData1(); // note no
tone1Interval = 0;
noTone(Speaker1);
break;
default:
break;
}
}
}
電子ピアノはKAWAIの奴なんですが、久しぶりに説明書を開きMIDIのチャンネル番号周りの設定を読むと、デフォルトでで1番が設定されてるようなので、そのまま。
また、MIDI OUT時に電子ピアノ側の音を、鳴らすか鳴らさないかの設定も出来るようでしたが、ピエゾスピーカーからの音だけを聞きたい時は、電子ピアノ側のボリュームを0するだけでok。
次回はYMZに挑戦です。
以上、よろしくお願い致します。
関連記事
-
-
Raspberry Pi2 model B
お疲れ様です。高橋です。 今年見た初夢、「猫×おもちゃ×動画×アプリ」の実現のた …
-
-
電子オルゴール設計
お疲れ様です。高橋です。 電子オルゴールがどんな形状になるのか、実体配線図を作っ …
-
-
満員電車内でのオナラと検知 #3
お疲れ様です。高橋です。 先日秋月で購入した音声合成LSIのATP3011。やっ …
-
-
Arduino電源ON/OFF機
お疲れ様です。高橋です。 Arduinoを使っている時、特に2個とか複数同時に使 …
-
-
Arduino Pro MiniでLチカしてみた
お疲れ様です。高橋です。 最近ずっと忙しく、平日はもちろん、土日も疲労のため何も …
-
-
満員電車内でのオナラと検知 #2
お疲れ様です。高橋です。 最近なんだか忙しかったので、なかなか物が作れませんでし …
-
-
EEPROM書き込みシールドの作成
お疲れ様です。高橋です。 先日成功したPCからのEEPROM書き込みですが、ジャ …
-
-
遠隔でRaspberryPi+DCモーターを制御してaitendoの名刺をクルクルさせる。
お疲れ様です。高橋です。 「猫×おもちゃ×動画×アプリ」のための要素技術として必 …
-
-
電子オルゴール 回路図
お疲れ様です。高橋です。 電子オルゴールの回路図を書いてみました。 実体配線図よ …
-
-
aitendoで買った4桁7セグLEDを使う
お疲れ様です。高橋です。 aitendoの4桁7セグLED aitendoで1個 …
- PREV
- YMZシールドのMIDI化を検討
- NEXT
- YMZ294のMIDI音源化と、YMZのピン数圧縮


