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に挑戦です。
以上、よろしくお願い致します。
関連記事
-
-
「びんぼうでいいの」を組み立ててみた。
お疲れ様です。高橋です。 懸案だったヘッドフォンの修理が片付き、やりたい事をやり …
-
-
YMZシールド 再作成
お疲れ様です。高橋です。 YMZのノイズが超気になる YMZ294用の音楽を聞く …
-
-
遠隔でRaspberryPi+DCモーターを制御してaitendoの名刺をクルクルさせる。
お疲れ様です。高橋です。 「猫×おもちゃ×動画×アプリ」のための要素技術として必 …
-
-
iPhoneでルンバを操作してみたい
お疲れ様です。高橋です。 突然ですがiPhoneでルンバを操作したいと思います。 …
-
-
100均で買ったボリュームコントロール付きステレオ延長コードを、バブ型スピーカーに搭載してみた。
お疲れ様です。高橋です。 先日作ったバブ型スピーカーですが、実は裏側がとても汚い …
-
-
EEPROM書き込みシールドの作成
お疲れ様です。高橋です。 先日成功したPCからのEEPROM書き込みですが、ジャ …
-
-
YMZシールドの基板設計 #2
お疲れ様です。高橋です。 先日行ったYMZシールドの基板設計の設計図を元に、部品 …
-
-
電子オルゴール 基板実装 #2 ~ワイヤストリッパー~
お疲れ様です。高橋です。 先日秋葉原でワイヤーストリッパーを買ってきました。 被 …
-
-
音階に合わせてLEDを光らせてみた。
お疲れ様です。高橋です。 主旋律に合わせてLEDを光らせてみる実験を行いました。 …
-
-
上司の離着席状態をクラウドに飛ばし、スマホで見れるようにした。
お疲れ様です。高橋です。 前回ブレッドボード上に構築した上司離着席検知システムで …
- PREV
- YMZシールドのMIDI化を検討
- NEXT
- YMZ294のMIDI音源化と、YMZのピン数圧縮


