PIC32MX220F032B ベースボード (2)
Microchip 社の PIC18/PIC24/PIC32 用 USB ライブラリの USB MIDI デバイスのデモ・プログラムと、USB MIDI ホストのデモ・プログラムを PIC32MX220F032B 用に修正して動作させることができました。
「単価 220 円のマイコンによる USB MIDI ホスト」の実現にめどが立ちました。
USB MIDI デバイスのデモ・プログラムでは、デモ・ボードのスイッチを押すと MIDI ノート・オン・メッセージが発生し、USB ホスト側に送られます。スイッチを一回押すたびに音程が半音ずつ上がっていき、1 オクターブに達すると元の音程に戻ります。
USB MIDI ホストのデモ・プログラムでは、いわばホスト版の「USB-MIDI アダプタ」として機能し、
- マイコンの UART2 入力で受信した MIDI メッセージを接続した USB MIDI デバイスに対して送信
- 接続した USB MIDI デバイスから受信した MIDI メッセージをマイコンの UART2 出力から送信
します。
これを利用すると、USB 端子のみで MIDI 出力をもたないキーボード・コントローラを、ホスト PC なしで (レガシー) MIDI 機器に接続できます。
ただし、「USB ハブ」には対応していないので、(ハブ内蔵型でない)「素」の USB キーボード・コントローラを 1 個だけ接続することに限られます。
残念ながら、手持ちの MIDI キーボード・コントローラはハブ内蔵型の KORG microKEY 37 なので、MIDI キーボード・コントローラと接続して実際に機能するかどうかという検証はできていません。
ただ、自作の USB-MIDI デバイス (MIDI 出力専用) と接続して、
PC → MIDI ケーブル → USB MIDI ホスト → USB ケーブル → USB MIDI デバイス → MIDI ケーブル → MIDI 音源
という、「逆方向」のルートで演奏データを流すのは、ほぼ正常に行えています。
「ほぼ」と言ったのは、どうやら USB MIDI ホスト・プログラムにバグがあるようで、システム・エクスクルーシブ・メッセージの最後の 1 あるいは 2 バイトが欠ける場合があります。
音源のパネルにシステム・エクスクルーシブで文字列を表示させる場合に最後の 1 〜 2 文字が欠けるのは「ご愛嬌」ですが、GM システム・オン や XG システム・オンのエクスクルーシブでもデータ欠けを起こします。
もうひとつの PIC32MX マイコンに USB MIDI デバイス・プログラムを書き込んで接続するか、あるいは、自作の USB-MIDI デバイスを入力可能なように改造するなどして、
の方向の動作を確認して、近日中に USB MIDI ホスト・デモ・プログラムの PIC32MX220F032B 用のオブジェクトの HEX ファイルを公開したいと思います。