MIDI-Decoder
このページではMIDI信号をPICで受信、デコードして音を鳴らす方法を紹介します。
オーディオDRSSTCを作る時に作った物ですが、DRSSTC以外にも応用が利くと思われます。


さて、MIDIですよ、MIDI。
DTMでお馴染みのアレですね。
で、そのお馴染みのMIDIなんですが、そのままスピーカーに突っ込んだところで音楽は鳴りません。
規格化されて普通の音声信号じゃなくなっている訳ですね。
なので、MIDI信号から音楽を聴くためにはデコードしてやって、元の音声信号に戻してやらにゃならん訳です。

と、言うことなので、早速『詳細MIDI規格』この辺のページを参考にしながら
ボリボリとデコードプログラムを書いていきます。

するとこんなのができます。

MIDIデコードプログラム(ノーマル)
MIDIデコードプログラム(1オクターブ下げ)

「うはwwコード作るのマンドクセwwっうぇ」って人は
中のHEXファイルをPIC16F88に書き込んで、
このページの下の方にある回路図通りに回路組んだら動きます。が、和音は鳴らせません。
そして1音ごとにメモリを食ってるので効率的なプログラムとは言えません。

「いや、俺は自分で美しいコードを書くんだ!!」って人は
Cファイルも入っていますので、それを読んで更に美しいプログラムを仕上げてください。
※ただし、Cファイル中の私が書いたコメントを妄信すると多分痛い目に合います;;ごめんなさい;;


こんな感じにソフトができたら、次にハード部分を作ります。が。
PCにはMIDIポートが無いので、その部分をまず何とかします。
その部分を自作しても良いのですが、私はPCのIOをごにょごにょする気力が無かったので
USB-MIDI
こいつを使いました。結構丈夫で良い感じです。

で、我々はこいつ以降の回路をPICに合わせて自作する訳です。

まず、コネクタ部分。
千石で 『7P DINソケット(パネル用)』 ってヤツを買ってきて
コネクタ部分
こんな風に繋ぎます。
ここはプラスマイナス間違えたところでぶっ壊れたりしないので気楽にやりましょう(笑

次にメインのPIC周辺の回路。
私のプログラムをそのまま使うなら
回路図
この回路を組めばおkです。

OSC=20[MHz]
で、ch選択の部分をいじくる事で、そのPICが受信するMIDIのchを変更できるようになっています ※1

いや、自分d(ry って人は別の回路になると思われますので、是非がんばって下さい。

動くと

ダウンロード版
こんな感じになるはずです。
※動画中では明らかに余分な回路がくっ付いていますが、この余分な部分はDRSSTC用のパルス変調回路で、基本回路部分は上図と全く同じです。

ね?簡単でしょ?
あとは、これをからりおんよろしく、色々な物と融合させてカオスな世界を創るだけです!

ではノシ





※1  ch選択についての詳細
電源を入れる前にch選択のピンのプラス(5V)-マイナス(GND)を選ぶ事でそのPICが受信するMIDIのch数を選択することができます。
17ピンを1bit目、18ピンを2bit目にした2進数でch4までの設定が可能です。

選択例1
17ピン=GND
18ピン=+5V
の時、ch3を受信

選択例2
17ピン=18ピン=GND
の時、ch1を受信