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に挑戦です。
以上、よろしくお願い致します。
関連記事
-
-
上司離着席検知システムの開発
お疲れ様です。高橋です。 下記、フィクションでイメージです。 背景 何かしらの相 …
-
-
YMZ294の基板が動いた。
お疲れ様です。高橋です。 先日「ブレッドボード上のYMZ294をユニバーサル基板 …
-
-
満員電車内でのオナラと検知 #5
お疲れ様です。高橋です。 マイコンと5V給電 先日実験に成功した硫化水素センサー …
-
-
音階LED実装 #1
お疲れ様です。高橋です。 今日の進捗 音階LEDの半田付け 1日目です。 ICソ …
-
-
満員電車内でのオナラと検知 #3
お疲れ様です。高橋です。 先日秋月で購入した音声合成LSIのATP3011。やっ …
-
-
ブレッドボード上のYMZ294をユニバーサル基板化してみたが。
お疲れ様です。高橋です。 ArduinoからYMZを鳴らしているブレッドボードが …
-
-
シフトレジスタLED付きのYMZ294回路をFritzingに起こしてみた。
お疲れ様です。高橋です。 ユニバーサル基板で作ったYMZボードと、音階LED及び …
-
-
音階LED実装 #2
お疲れ様です。高橋です。 本日も昨日に引き続き半田付け。 今日の進捗 昨日の残り …
-
-
aitendoのArduino用生シールド基板を1枚120円で買った。
お疲れ様です。高橋です。 今日もaitendoに行ってきたのですが、120円のシ …
-
-
EEPROM書き込みシールドの作成
お疲れ様です。高橋です。 先日成功したPCからのEEPROM書き込みですが、ジャ …
- PREV
- YMZシールドのMIDI化を検討
- NEXT
- YMZ294のMIDI音源化と、YMZのピン数圧縮


