USB-MIDI (3)

USB の規格では MIDI データの取り扱い方法が標準のクラスとして定められていて、その規約に従っているデバイスならばユーザがドライバをインストールする必要はなく、自動的に OS の標準のドライバがロードされ動作します。
MIDI データは独立のクラスではなく、オーディオ・クラスに含まれる下の 3 つのサブクラス

  • オーデイオ・コントロール・インターフェース・サブクラス
    (AC : AudioControl interface subclass)
  • オーディオ・ストリーミング・インターフェース・サブクラス
    (AS : AudioStreaming interface subclass)
  • MIDI ストリーミング・インターフェース・サブクラス
    (MS: MIDIStreaming interface subclass)

のひとつとして定義されています。 (ここでの「インターフェース」は USB 用語の「インターフェース」)
AC は必須ですが、AS / MS は任意であり、必ずしも両方を含める必要はありません。
MIDI 入出力インターフェース付きの USB オーディオ・インターフェース装置 (ここでの「インターフェース」は一般的な用語の「インターフェース」) は無理に合体させたわけではなく、USB オーディオ規格に従った自然な製品ということになります。
逆に MIDI 入出力だけを持つ USB-MIDIバイスは、オーディオ・クラスなのに USB ディジタル・オーディオ・データを扱えない装置ということになります。
親となるオーディオ・クラスの規格としては、フルスピード (FS: 12 Mbps) までを定めている USB 1.1 の時代にオーディオ・クラス 1.0 が制定され、ハイスピード (HS: 480 Mbps) までを規定している USB 2.0 の時代になってからは HS 対応のオーディオ・クラス 2.0 の規格が定められています。
MIDIStreaming サブクラスの規格については、USB 1.1 の時代に定められたリビジョン 1.0 から改定されていません。
Windows では現状のところオーディオ・クラス 2.0 のサポートはなく、USB-MIDIバイスも USB 2.0 ハイスピード (480 Mbps) のデバイスとして動作させることはできません。
また、マイコンの内蔵 USB モジュールでも HS (480 Mbps) 対応のものは多くなく、その大部分ではハイスピード PHY 部分 (バス・トランシーバ) は外付けとなり、ハイスピード PHY まで内蔵しているものは非常に少なくなります。
したがって、マイコンのハードおよび OS のサポート状況から、USB-MIDI 機能はフルスピード (12 Mbps) での実現が唯一の選択肢です。
ただし、後で示すように、USB 2.0 HS ポートに (ハブを介して) 接続した場合と、USB 1.1 FS ネイティブのポートに直接接続した場合とではレイテンシーが違ってきます。
サウス・ブリッジに ICH (I/O Contoroller Hub) を使う世代のインテルチップセットでは、ICH の中に

  • USB ハイスピード (480 Mbps) 担当の
    EHCI (Enhanced Host Contoroller Interface)
  • FS (12 Mbps) / LS (1.5 Mbps) 担当の
    UHCI (Universal Host Controller Inteface)

の 2 種のホスト・コントローラが内蔵されており、接続されたデバイスが FS / LS ならば UHCI、FS ならば EHCI が使われて、USB 2.0 ハイスピード・ハブのような「速度変換」は行われません。
サウス・ブリッジに ICH7 を使っている (古い) ノート・パソコンのデバイス・マネージャの画面を示します。

USB ポート数は最大 8 で、そのどこかのポートに HS デバイスが差し込まれると、8 ポートの HS リピータ・ハブを介して (1 個のインスタンスだけがある) ECHI に接続されます。
FS / LS を担当する UHCI は合計 4 個のインスタンスがあり、それぞれ 2 ポートの FS / LS リピータ・ハブを介して 2 つの USB ポートの口につながっており、全体では 8 ポートをサポートします。
どこかの USB ポートに HS / LS デバイスが差し込まれると、2 ポート・リピータ・ハブを介して UHCI の 4 つのインスタンスのどれかに接続されることになります。
つまり、パソコン本体の USB ポートに FS / LS デバイスを差し込むと、それは「FS / LS ネイティブ」の UHCI で直接に扱われることになります。
一方、USB 2.0 ハイスピード・ハブを介して FS / LS デバイスを接続すると、

FS/LS デバイス → USB 2.0 HS ハブ → (ハブ 内で速度変換) → EHCI

というルートでデータが流れ、パソコンの USB ポートに直接に接続した場合と経路が異なります。
intel 5 チップセットを使う世代からは USB コントローラの構成が変わり、ECHI + USB 2.0 HS ハブの形になりました。
B75 チップセットを使っている PC でのデバイス・マネージャーの画面を下に示します。

USB 3.0 関係は無視して USB 2.0 以下の構成だけを見ると、UHCI は存在せず、ECHI が 2 インスタンスあるだけになっています。
それぞれの EHCI には 2 ポートのルート・ハブが接続されていて、一方は USB 3.0 と共用する USB ポートに、もう一方は 6 ポートの USB 2.0 HS ハブに接続されています。 このハブのダウンストリーム・ポートがメインボードの USB の口としてリア・パネルやフロント・パネル用コネクタに出ています。
したがって、PC 本体の USB ポートに FS / LS デバイスを接続しても、必ず USB 2.0 HS ハブの速度変換機構 (TT: Transaction Translator) が入ることになります。
次回は、USB-MIDIバイスを FS ネイティブのポートに接続した場合と、USB 2.0 HS ハブを経由した場合とでレイテンシーに差が出ることを示します。