USB-MIDI

PIC18F14K50 (22) / PIC16F145x (4) --- USB-MIDI コンバータ (4)

PIC18F14K50 / PIC16F1455 /PIC16F1459 を使って USB-MIDI コンバータとして動作させるためのファームウェア・パッケージを公開しました。(→こちら) 上記リンクをクリックすると Dropbox が開きます。 Dropbox にアカウントを持っている必要はありません。 (…

PIC16F145x (3) --- USB-MIDI コンバータ (3)

「最小構成」版の USB-MIDI コンパータを、秋月・片面ユニバーサル基板 D タイプ (47 × 36 mm) (通販コード P-08241) 上に組んでみました。 写真を下に示します。

PIC18F14K50 (21) / PIC16F145x (2) --- USB-MIDI コンバータ (2)

USB - MIDI コンバータのプログラムが大体できあがりました。 元ネタにしたのは Microchip アプリケーション用ライブラリ MLA (Microchip Libraries for Applications) に含まれる USB オーディオクラス・MIDI ストリーミング・サブクラスに関するデモ・プロ…

PIC18F14K50 (20) --- USB-MIDI コンバータ (1)

Microchip アプリケーション用ライブラリ MLA (Microchip Libraries for Applications) には、USB オーディオクラス・MIDI ストリーム・サブクラスに関するサンプルプログラムが含まれています。 それに手を入れて、USB-MIDI コンバータとして機能するプログ…

PSoC5LP Prototyping Kit (31) --- USB MIDI (3)

前回示したように、USBMIDI コンポーネントを「USB-MIDI コンバータ」として利用するために必要なコード量は 10 行程度なので、「USB 接続の音源」を作る場合には、「レガシー MIDI 入力の音源」+「USB-MIDI コンバータ」という構成にするのが最も容易です。…

PSoC5LP Prototyping Kit (30) --- USB MIDI (2)

標準ライブラリとして用意されている「USBMIDI」コンポーネントでは、下の図のように、USBFS コンポーネントと、UART、入出力ピン、インバータの回路がセットになったものがデフォルトとして定義されています。 「USB_MIDI」サンプル・プロジェクトは、これ…

PSoC5LP Prototyping Kit (29) --- USB MIDI (1)

PSoC5LP のサンプル・プロジェクト「USB_MIDI」を試してみました。 プロジェクトが想定している開発ボードは CY8CKIT-001 で、プロセッサとしては CY8C5868AXI-LP035 が選択されています。 これを CY8C5888LTI-LP079 に変更し、ポートの割り当ても適当に変更…

USB-MIDI (13)

今回は USB-MIDI コンバータの MIDI IN 側の処理の話です。 MIDI OUT 側に比べて処理は複雑になります。 それは、 ランニング・ステータスに必ず対応する必要がある 入力される MIDI メッセージに対応して MIDI パケットを組み立てる必要がある USB ホスト側…

USB-MIDI (12)

今回は USB-MIDI コンバータの MIDI OUT 側の処理の話です。 USB-MIDI イベント・パケットから直接に内蔵音源をドライブするのではなく、MIDI のシリアル・データに変換して MIDI 端子から出力するという機能に限れば、(MIDI IN 側に比べて) その処理は非常…

USB-MIDI (11)

システム・エクスクルーシブ・メッセージ (System Exclusive Message) はステータス・バイト 0xF0 に始まり 0xF7 (EOX: End Of eXclusive) に終わる、MIDI メッセージでは唯一の可変長のメッセージです。 USB-MIDI イベント・パケット内のペイロードは 3 バ…

USB-MIDI (10)

MIDI ケーブルの中を流れる MIDI データは、「バイト・オリエンテッド」なビット・レート 31.25 kbps、データビット数 8、パリティなし、1 ストップビットの調歩同期形式です。 一方、USB を介してやりとりされる MIDI データの形式は「バイト・オリエンテッ…

USB-MIDI (9)

前回の規格書付録 B のディスクリプタと同等のディスクリプタを。C 言語の初期値付き配列の形で表現したものを下に示します。 LPC11U35 を使った FM 音源プログラムの USB-MIDI 機能部分で、このディスクリプタを使ってコンパイルして MIDI OUT 機能が正常に…

USB-MIDI (8)

MIDIStreaming サブクラスの規格書[*1]の付録 B に示されているディスクリプタを元に解説を加えます。 規格書は、「usb.org midi」 を検索キーワードとしてググればすぐに見つかります。 ここで示すディスクリプタは、 2 箇所を除いて規格書の付録 B と同じ…

USB-MIDI (7)

MIDIStraming 要素の MIDI ジャックや「エレメント」のトポロジーは、実際にはクラス固有ディスクリプタで表現されます。 MIDIStreaming の場合 (AudioStreaming なし) のコンフィギュレーション・ディスクリプタ(群) の構成図を左に示します。 先頭に「Std.…

USB-MIDI (6)

MIDIStreaming インターフェース・サブクラスの例として、規格書の付録 B "Example: Simple MIDI Adapter (Informative)" のディスクリプタで示されている (外部) MIDI 入力 1 系統、(外部) MIDI 出力 1 系統の最も基本的な USB-MIDI 機能を実現するトポロジ…

USB-MIDI (5)

AudioControl インターフェース・サブクラスのディスクリプタのクラス固有 (Class Specific) 部分には、USB から制御可能な要素および要素間の接続の「トポロジー」を抽象化して記述することになっており、エレメントごとに記述方法が規格化されています。 …

USB-MIDI (4)

「レイテンシ」の観点から結論を先に言うと、USB 2.0 ハイスピード・ハブを介して接続した方が、USB 1.1 FS ネイティブなポートに接続した場合よりもレイテンシが小さくなります。 後述するような条件では、HS ハブ経由では最短 250 μs (2 マイクロフレーム)…

USB-MIDI (3)

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

USB-MIDI (2)

LPC11U35 には USART は 1 系統しかなく、実際に同時に 2 つの MIDI OUT を得ることはできないので、UART を 2 系統持つ (無印) EZ-USB (旧 Anchor Chips / 現 Cypress 製 AN2131SC) でケーブル・ナンバー対応の出力振り分け処理を追加したプログラムを作成…

USB-MIDI (1)

第 14 回アナログシンセ・ビルダーズ・サミットで USB-MIDI についてプレゼンを行ったのですが、10 分の持ち時間を大幅に超過したあげく内容も十分に説明できなかったので、ブログ上に解説の記事を書いていこうと思っています。 USB 規格上は出力エンドポイ…