USB-MIDI Converter もこ
USB-MIDI Converter もこ
1.はじめに
自作のアナログシンセサイザーなどで手軽にUSBインタフェースが作成できるようにシンプルなUSB-MIDIコンバータを設計しました。
(1)MOCO (MIDI-Out COnverter) もこ
パソコン側からUSB-MIDIを受けて、MIDI-OUT信号を出します。
(2)MICO (MIDI-In COnverter ) みこ
MIDI-IN信号を受けて、パソコン側にUSB-MIDI信号を出します。
2.回路図
V-USB-MIDIを使っています。回路は次の構成です。
•Tiny2313と水晶発振回路(16MHz)
•V-USBのための電圧変換回路
•MIDI インタフェース(フォトカップラ)
Tiny2313のフラッシュメモリ(2KB)の中に、V-USBとMIDIの入出力機能の両方を入れることが出来ませんでした。従って、MIDI-INまたはMIDI-OUTどちらか決めて実装することが必要になります。
•MOCOの場合にはMIDI-OUT側の回路のみ実装して下さい。フォトカップラは要りません。
•MICOの場合にはMIDI-IN側の回路のみ実装して下さい。
3.使い方
PC側はOS標準のドライバが使えます。ドライバソフトのインストールは不要です。
USBを差し込むとMIDIデバイスと認識されますので、DTMソフトから入出力先として指定すれば使えます。
4.注意点
•手持ちの機器で試験している都合で、ソフトウエアの試験がまだ十分ではありません。
•V-USBの制限でUSB-HUB経由だとうまく動作しないことがあります。その場合、他のUSB機器をはずし、パソコンのUSBポートに直接つないでみて下さい。
•OS標準ドライバはレイテンシなどの問題が出ることがあるようです。また、多量のデータを送受信すると処理が遅れることがあります。AVR 一つで全ての処理をしていることもさることながらドライバ周りのチューニングが必要になるようです。
•プログラム容量の関係でSys-Exclusiveメッセージには対応していません。(無視します)
•既にTiny2313のフラッシュメモリはほとんど一杯なので、これ以上機能の追加は出来ません。またソースコードのコンパイルにはgcc3系が必要です。gcc4系だと生成されるオブジェクトファイルが大きくなり、メモリに入り切らなくなります。
•なるべくシンプルにするためにTiny45/Tiny85/Tiny861の利用を考えましたが、UARTがチップに内蔵されていないため、ソフトウエアによるレガシMIDIの処理とUSB側の割り込みと両立できませんでした。
•Tiny4313が入手できたので、MiciMocoという名称でサポートに加えました。入出力が同時に利用可能です。Tiny4313を利用するためにはgcc-4.X系が必須です。また、avrdudeの最新版にもt4313の情報がないため、avrdude.confに自分で追加する必要がありました。パッチの提供先はこちら(2011/02/12)
5.作例
表紙の写真はプロトタイプ基板でMIDI-IN/MIDI-OUT両方の回路を実装しています。実際に使えるのはどちらか一方です。アナログシンセに組み込む場合にはこれくらい大きく作ると良いと思います。
作例1:MOCOをMIDIケーブルに無理矢理組み込んだ作例です。
・入手性からDIP版のTiny2313を使いました。秋月で@100円です。
・予めジグでプログラムを書き込んでからハンダ付けしてあります。
・AVRの下にSMDの水晶発振器が埋め込んであります。
・その他のパーツも、SMDの部品を使っています。
・普通の大きさのハウジングでは回路が入り切らないため、少し長めのメスのハウジングを流用しています。
作例2:MICOをSOPパッケーのTiny2313で作成しました。オプトカップラにはHP社のHCPL-M701を使っています。
6.ダウンロード
20110211版(moco-110211.tgz) UPDATED 2011/02/12
※ Tiny4313によるMicoMocoをサポートに加えました。
7.謝辞
シリアルMIDIのパーサはRJBさん、武田さんのMIDI-CVを参考にさせて頂きました。コード量削減のため、状態遷移図をテーブル形式にして格納しています。
V-USBおよびV-USB-MIDIを使っています。