You are currently reviewing an older revision of this page.
GR-SAKURAのUSBホスト機能を利用して、USB-MIDIクラスドライバを実装しました。
元々Arduino用に開発したライブラリをGR-SAKURAに移植したものです。
USB-MIDIデバイスを接続すると、GR-SAKURAから制御出来るようになります。
MIDI in/outの両方に対応しているため、
ができます。
※MIDIによる機器制御を目的としたもので、音楽演奏用ではありません。タイミング制御は利用者自身で実装する必要があります。
接続可能な機器としては
のデバイスだけではなく、ベンダー固有のクラスとしている機器も存在するため、
上記クラスが見つからない場合でも、最初のバルク転送エンドポイントを設定して接続を試みます。
全てのUSB-MIDI機器の接続を保証するものではありませんが、ある程度の接続性があると思います。
接続確認済みの機器は以下を参照ください。
https://github.com/YuuichiAkagawa/USBH_MIDI/wiki
使用方法
本ドキュメントに添付されている"GR-SAKURA-USBH_MIDI.zip"をダウンロードして解凍すると
の2つのファイルが含まれています。
このうち、"USBH_MIDI-1.1.zip"をWeb Complierにて「zipファイルインポート」でプロジェクトに取り込んで下さい。
"USBH_MIDI_samples-1.1.zip"を解凍して下さい。
サンプルとして以下の4つを用意しました。
※仕様については変更される可能性があります。予めご了承下さい。
コンストラクタ
引数にtrueを指定すると、LED0が接続状態を表すインジケータとして使用されます。
引数を省略すると、LED0はフリーになります。
グローバル変数としてインスタンスを定義してください。
USBデバイスが接続されているかどうかをチェックする。
接続されている場合はtrueを返す。
関数内で接続処理や切断処理も行っているため、loop()の先頭付近で呼び出すこと。
MIDIメッセージを受信する。
引数で指定するバッファは3バイト以上確保すること。
受信が成功した場合はバイト数を、失敗した場合は-1を返す。
USB-MIDI Event Packetsを受信する。
4バイト形式。データ形式の詳細は http://www.usb.org/developers/devclass_docs/midi10.pdf を参照。
※tkusbh_bulk_readの戻り値そのまま
MIDIメッセージを送信する。
引数に渡せるのは一度に1メッセージのみ。
第2引数として、Cable Numberを指定可能。省略時は0。
送信が成功した場合はバイト数を、失敗した場合は-1を返す。
※tkusbh_bulk_readの戻り値そのまま。成功時は4が返えってくる。
MIDI SysExメッセージを送信する。
255バイトまでのSysExメッセージを送信可能。
送信に失敗した場合は-1を返す。
接続されている機器のベンダーIDを返す。(device descriptorのidVendor)
接続されている機器のプロダクトIDを返す。(device descriptorのidProduct)
機器が指定するポーリングインターバル値を返す。(endpoint descriptorのbInterval)
Attachment: http://japan.renesasrulz.com/gr_user_forum_japanese/m/mediagallery/27.aspx