PIC32MX220F032B USB MIDI ホスト (14)

pic32mx USB MIDI ホスト・プログラムにロースピード・デバイス (1.5 Mbps) を接続する例として、もあ (morecat_lab) さん開発の USB-MIDI コンバータ・デバイス MICO (MIDI-In COnverter) / MOCO (MIDI-Out COnverter)

USB-MIDI Converter もこ

を試してみました。
現状の pic32_usbhost プログラムでは、ロースピード・デバイスは PIC32MX に直接接続する必要があり、ハブ経由での接続には対応していません。
試用してみた感想としては、フルスピード・デバイス (12 Mbps) と比べて、以下のふたつの点で「実用的」ではないと感じました。

  • データ転送能力が小さく、データの取りこぼしや演奏テンポの乱れを生ずる
  • MICO ではシステム・コモン/エクスクルーシブ・メッセージに対応していない (MOCO は全メッセージ対応)

MICO/MOCO はロースピードでのバルク転送を許さない Windows でも使用できるように、インタラプト転送を使っているのですが、転送間隔の最小値が規格上は 10 ms、Windows 環境での実際の値としては 8 ms になり、フルスピード・デバイスでのバルク転送の 1/8 の能力しかありません。
転送能力の低さと、ATtiny2313 のプログラム・サイズの制約によって、MIDI 入力デバイスである MICO ではシステム・コモン・メッセージとシステム・リアルタイム・メッセージをサポートしていません。
このふたつの点を解決するために MICO/MOCO のファームウェアに改造を加え、pic32_usbhost や Linux 環境では十分「実用的」なプログラムとすることができました。
ただし、Windows に対しては転送速度は改善されず、実用的ではありません。
また、MAC は持っていないので、MAC の環境での効果は不明です。
もあさんのオリジナルのソースにパッチをあてるための「差分ファイル」の形で、いつもの Yahoo! ボックス上に置きました。(→こちら)
ファイル名は

    micomoco-patch-20130524.zip

です。