USB-MIDI (1)

第 14 回アナログシンセ・ビルダーズ・サミットで USB-MIDI についてプレゼンを行ったのですが、10 分の持ち時間を大幅に超過したあげく内容も十分に説明できなかったので、ブログ上に解説の記事を書いていこうと思っています。
USB 規格上は出力エンドポイントに 2 つの「Embedded MIDI IN JACK」を接続すればホスト・ドライバ上では 2 つの MIDI 出力ポートと認識されることになっていますが、これまで実際に確認したことがありませんでした。
そこで、まず USB-MIDI の解説を始める前に、このことを確かめて見ました。
実験は LPC11U35 用の USB-MIDI OUT コンバータ・プログラム (TG11U35 プログラムの USB-MIDI 部分の原型) のコンフィギュレーションディスクリプタ部分だけを書き換えて行いました。
プログラム本体は変更していないので、ケーブル・ナンバー (CN: Cable Number) による「割り振り」には対応していません。
まず、Windows XP 上の「YAMAHA MidRadio Player」のオプション選択ダイアログのスクリーン・ショットを下に示します。

Windows XP ではデバイスディスクリプタの iProduct の指す文字列は参照されず、全部「USB オーディオ デバイス」という表示になってしまいますが、追加した Embedded MIDI IN JACK に対応するポートに対しては [2] が追加され、「USB オーディオ デバイス[2]」と表示されています。
Windows Vista 上の「KORG KONTROL Editor」の環境設定ダイアログのスクリーン・ショットを下に示します。

こちらではデバイスディスクリプタの iProduct の指す文字列「TG11U35 USB-MIDI」が使われ、 2 つ目のポートには文字列 "MIDIOUT2()" が追加され、「MIDIOUT2(TG11U35 USB-MIDI)」と表示されています。
Windows 8 でも同様の表示でした。
USB-MIDI プログラム本体にはケーブル・ナンバー対応の変更を加えていないので、どちらのポートを選んでも区別なく同じ MIDI 端子からシリアル・データが出力されます。