curious4dev

中国旅行、Arduinoなどを使った電子工作、その他色々。

*

MIDI INの実験

 

お疲れ様です。高橋です。

Arduino+YMZをMIDI化するための第一歩の実験として、まずはMIDI INを受け付けて、ピエゾスピーカーで音が鳴るかどうか実験してみました。

曲はパズーが吹いてるラッパのアレです。うろ覚えですが、多分こんな曲だったような気がします。

回路

フォトカプラを使ってゴテゴテと配線したものの・・・

IMG_5407

結局はMIDIの5番をArduinoのRXに、MIDIの4番をGNDに刺し、ピエゾスピーカーを2番とGNDに刺しただけで動きました。フォトカプラ周りはまた今度実験してみます。

041601

ライブラリは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に挑戦です。

 

 

以上、よろしくお願い致します。

 - 電子工作

  関連記事

シフトレジスタLED付きのYMZ294回路をFritzingに起こしてみた。

お疲れ様です。高橋です。 ユニバーサル基板で作ったYMZボードと、音階LED及び …

aitendoのArduino用生シールド基板を1枚120円で買った。

お疲れ様です。高橋です。 今日もaitendoに行ってきたのですが、120円のシ …

Pro Mini互換機でFF2戦闘音楽を使ったYMZ動作試験

お疲れ様です。高橋です。 電子オルゴールの最終形をイメージしてブレッドボード上で …

100均で買ったボリュームコントロール付きステレオ延長コードを、バブ型スピーカーに搭載してみた。

お疲れ様です。高橋です。 先日作ったバブ型スピーカーですが、実は裏側がとても汚い …

マウスを分解してみた(リベンジ)

お疲れ様です。高橋です。 壊れたマウスを貰った 本日、壊れたマウスを貰いました。 …

耳コピミキサー 試作

お疲れ様です。高橋です。 iPhoneから流す音と電子ピアノから流す音を合成する …

遠隔でRaspberryPi+DCモーターを制御 #2

お疲れ様です。高橋です。 WiMAXが上限オーバー 私の家の自宅回線はWiMAX …

音階LED完成、YMZのノイズの原因判明

お疲れ様です。高橋です。 音階LEDの実装が完了しました。 青色LEDが眩しすぎ …

YMZシールドの作成 #2

お疲れ様です。高橋です。 先日から作っていたYMZシールドですが、本日完成しまし …

ArduinoIDE1.6.4+ATTiny13Aで赤外線リモコン

お疲れ様です。高橋です。 先日実験したArduinoで赤外線リモコンの問題点、そ …