curious4dev

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

*

YMZシールドのMIDI化を検討

 

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

Arduino UNOにYMZシールドをくっつけ、さらに音階をLEDで表示させる所まで出来たので、次はMIDI化です。

うちにはKAWAIの電子ピアノがあります。奥さんが「弾く」というので買ったのですが、結局使ってるのは私だけです。

IMG_5385

こいつの演奏をMIDI OUTし、MIDI INで受け付け、YMZ294で鳴らすという流れです。

実体配線図

下記が実体配線図です。

041501

MIDIコネクタは、DIP5pinの物です。ヒロセの地下で137円。MIDI INとArduinoの間にあるICは、フォトカプラFOD817Bで、30円。抵抗は1個1円で2円。MIDIケーブルは350円。519円でMIDI化出来るのなら安いものです。

MIDI関連のフォトカプラでググるとTLP552という物が鉄板らしい記述を多く目にするのですが、秋月には無くマルツで1個440円!!!という値段で売られています。こんなの高くて買えないので、30円で妥協します。

そもそもフォトカプラも必要あるのかどうなのか。ググるとMIDI INから直接RXに接続している作例もあるのですが、とりあえず実験で使ってみます。

考えられる課題

ピン数のダイエット

YMZ294はArduinoの貴重なピンを11本使い、音階LEDは9本を使っています。既に限界ギリギリです。そこで、YMZの11本を、シフトレジスタ74HC595を使って6本に圧縮。空いた5本の内シリアル受信のRXを1本、MIDI INに使おうと思います。今これ書いてて思いつきましたが、残り4本あるとI2C LCDで2本使えるので、贅沢に文字の表示や、MIDI INから受け付けた値の出力なんかも出来そうです。

以前はんだカフェで、まりすさん(webサイト: 構想100年)という達人が作られたシフトレジスタ+YMZという組み合わせをマジマジと観察させてもらい、いじらせてもらい、裏も表も何もかも写真を撮らせてもらいました。まりすさんのこのページではLCD+シフトレジスタ74HC164の回路図がありますが、多分595でもイケるはず。ダメだったら念のため164も買ってある自分の用意周到さを褒めたい気分です。

既存のYMZライブラリの改修。

インパクトドリルさんのYMZライブラリを、使わせてもらっていますが、最終的にArduinoにビットを流し込んでいるset_registerメソッドを、シフトレジスタ用に改造する必要があります。

void YMZ294::set_register(byte addr, byte value)
{
 // addr
 digitalWrite(WRCS_PIN, LOW);
 digitalWrite(A0_PIN, LOW);
 PORTD = addr;
 digitalWrite(WRCS_PIN, HIGH);

 // value
 digitalWrite(WRCS_PIN, LOW);
 digitalWrite(A0_PIN, HIGH);
 PORTD = value;
 digitalWrite(WRCS_PIN, HIGH);
}

直感ですが、ここは多分全く問題無く実装出来る予感がします。

ピアノからのMIDI OUTを3和音で鳴らす

これが難問。

おそらく電子ピアノからのリアルタイム演奏のMIDI OUT信号は、チャンネルに1つにまとまった状態で和音が流れてきます。一方YMZ294は1チャンネル1音で3和音を実現しています。

解決策として今のところ考えているのが、常時開いているチャンネルの状態を保持しつつ、空いているチャンネルを見つけたらそこを使う、という感じのプログラムの実装。

ただこの方法だと、メロディ部、ベース部、真ん中部がごちゃ混ぜになって、折角赤と緑と青で実現したLEDの箇所が、ごちゃ混ぜになってしまう事です。

もう少し検討が必要ですが、まずは鳴らす所まで行きたいと思います。

 

 

 

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

 - 電子工作

  関連記事

抵抗が焼けた – Arduinoで赤外線リモコン

お疲れ様です。高橋です。 今日の実験中、抵抗が焼けてしまいました。 なんか異臭が …

遠隔でRaspberryPi+DCモーターを制御してaitendoの名刺をクルクルさせる。

お疲れ様です。高橋です。 「猫×おもちゃ×動画×アプリ」のための要素技術として必 …

電子オルゴール 動作試験 #2

お疲れ様です。高橋です。 Pro Mini互換機とYMZ294、EEPROMで作 …

猫×おもちゃ×動画×アプリ

お疲れ様です。高橋です。 金魚水槽 先日フラフラとネットサーフィンしていて目に入 …

MIDI INの実験

お疲れ様です。高橋です。 Arduino+YMZをMIDI化するための第一歩の実 …

マウスを分解してみた。

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

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

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

YMZシールドの作成 #2

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

電子オルゴール 基板実装 #2 ~ワイヤストリッパー~

お疲れ様です。高橋です。 先日秋葉原でワイヤーストリッパーを買ってきました。 被 …

赤外線リモコンをケースに格納

お疲れ様です。高橋です。 先日作ったATtiny13Aの赤外線リモコンを、ケース …