Renesas Rulz - Japan
Renesas Rulz - Japan
  • User
    Join or sign in
  • Site
  • Search Japan.RenesasRulz.com
  • User
  • Renesas Rulz
  • FAQ
  • パートナー
  • 半導体セミナ
  • eラーニング
  • ヘルプ
  • More
  • Cancel
  • かふぇルネ
  • がじぇるね
  • English Community
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
がじぇっとるねさす ゆーざー会 - Wiki USBホスト MIDIクラスドライバ(USBH_MIDI) for GR-SAKURA
  • Forums
  • Blog
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New
  • がじぇっとるねさす ゆーざー会 - Wiki
  • (GR-SAKURA) リセットボタンを押さずにプログラムを書込む方法
  • 448KBの壁を越える方法(Windows)
  • Android ADK for GR-SAKURA
  • Arduinoとの互換性のまとめ(Language Reference編)
  • Color LCD シールド
  • EEPROMのサンプルコードと注意点
  • E1接続コネクタ
  • FAQ: GR-SAKURAの電源は、USBバスパワーかAC電源が必要か?
  • FAQ: RXマイコンの汎用ポートの駆動電流
  • FreeRTOS
  • Fritzing 用のパーツ(GR-SAKURA)
  • GR-SAKURA サンプルコードまとめ
  • GR-SAKURAからLinuxへの仮想コムポートでの通信
  • GR-SAKURAでキャラクタ液晶を制御
  • GR-SAKURAでサーボモータ
  • GR-SAKURAにXBeeをつなげる
  • GR-SAKURAスタートガイド 作例
  • GR-SAKURA用アクリルケースのデータ
  • HEWを使用したローカルデバッグ環境(USBファーム付き)
  • How to use USB virtual serial and UART
  • LAN経由でアナログセンサの値を拾うサンプル
  • MP3再生ライブラリとサンプルスケッチ 9/4追記 11/7追記
  • RTCに時刻を決め打ちで設定するスケッチ
  • SAKURAとKURUMIでWire(I2C) スレーブアドレスに注意
  • Smart Analog Shield for GR-SAKURA ボードβ版仕様
  • TOPPERS/ASP GR-SAKURA依存部 と sample1のHEWプロジェクト
  • uIPウエブサーバ
  • USBホスト MIDIクラスドライバ(USBH_MIDI) for GR-SAKURA
  • USBホストサンプル(マウス)
  • USB仮想COMポート用デバイスドライバ
  • USB仮想シリアルとUARTの使い方
  • Web Compilerへの要求やトラブル事項、対応事項
  • Webコンパイラで使うHTTPクライアント
  • Webコンパイラへのログイン~ボードへの書き込み動画(ビギナー向け)
  • wireライブラリを使用してみました
  • がじぇるねはじめてのプログラミング動画(ビギナー向け)
  • でんしゃの模型をSAKURAとUMEでコントロール!
  • シリアル通信(SCI)パラメータの変更方法(パリティ・データ長など)
  • シールドを横に並べる基板 (プチマザーボード)
  • プロジェクトバックアップツール
  • 手っ取り早くシールドを重ねた時の問題を解決するには
  • 温度センサーLM61の測定値をマイクロSDに書き込むスケッチ
  • 無印からFULLにする部品の購入先について
  • 足の長いピンソケット

USBホスト MIDIクラスドライバ(USBH_MIDI) for GR-SAKURA

はじめに

GR-SAKURAのUSBホスト機能を利用して、USB-MIDIクラスドライバを実装しました。

元々Arduino用に開発したライブラリをGR-SAKURAに移植したものです。

USB-MIDIデバイスを接続すると、GR-SAKURAから制御出来るようになります。

MIDI in/outの両方に対応しているため、

  • USB-MIDIキーボードを接続して、MIDIメッセージを受信する
  • USB-MIDI音源を接続して、MIDIメッセージを送信する(演奏する)

ができます。

※MIDIによる機器制御を目的としたもので、音楽演奏用ではありません。タイミング制御は利用者自身で実装する必要があります。

接続可能な機器としては

  • InterfaceClass = USB_CLASS_AUDIO
  • InterfaceSubClass = USB_SUBCLASS_MIDISTREAMING

のデバイスだけではなく、ベンダー固有のクラスとしている機器も存在するため、

上記クラスが見つからない場合でも、最初のバルク転送エンドポイントを設定して接続を試みます。

全てのUSB-MIDI機器の接続を保証するものではありませんが、ある程度の接続性があると思います。

接続確認済みの機器は以下を参照ください。

https://github.com/YuuichiAkagawa/USBH_MIDI/wiki

使用方法

本ドキュメントに添付されている"GR-SAKURA-USBH_MIDI.zip"をダウンロードして解凍すると

  • USBH_MIDI-1.1.zip
  • USBH_MIDI_samples-1.1.zip

の2つのファイルが含まれています。

このうち、"USBH_MIDI-1.1.zip"をWeb Complierにて「zipファイルインポート」でプロジェクトに取り込んで下さい。

a9a9zipimport.png

サンプルプログラムについて

"USBH_MIDI_samples-1.1.zip"を解凍して下さい。

サンプルとして以下の4つを用意しました。

  • USB-MIDIキーボードを接続し、シリアルMIDI音源を鳴らす(MIDIコンバータ)    
    • sample1.cpp
  • USB-MIDIコントローラを接続し、スライダでフルカラーLEDの光量を調整する    
    • sample2.cpp
  • Pepper-monaka(USB-MIDIを利用したフィジカルインターフェイス)と接続し、GR-SAKURAから制御
    • sample3.cpp
  • eVY1 Shieldと接続し、GR-SAKURAから制御
    • sample4.cpp

リファレンス

※仕様については変更される可能性があります。予めご了承下さい。

USBH_MIDI クラス

USBH_MIDI(bool enableLED = false)

コンストラクタ

引数にtrueを指定すると、LED0が接続状態を表すインジケータとして使用されます。

引数を省略すると、LED0はフリーになります。

グローバル変数としてインスタンスを定義してください。

bool isConnected()

USBデバイスが接続されているかどうかをチェックする。

接続されている場合はtrueを返す。

関数内で接続処理や切断処理も行っているため、loop()の先頭付近で呼び出すこと。

int read(unsigned char *dataptr)

MIDIメッセージを受信する。

引数で指定するバッファは3バイト以上確保すること。

受信が成功した場合はバイト数を、失敗した場合は-1を返す。

int  rawRead(unsigned char *dataptr)

USB-MIDI Event Packetsを受信する。

4バイト形式。データ形式の詳細は http://www.usb.org/developers/devclass_docs/midi10.pdf を参照。

受信が成功した場合はバイト数を、失敗した場合は-1を返す。

※tkusbh_bulk_readの戻り値そのまま

int  write(unsigned char *dataptr, unsigned char nCable=0)

MIDIメッセージを送信する。

引数に渡せるのは一度に1メッセージのみ。

第2引数として、Cable Numberを指定可能。省略時は0。

送信が成功した場合はバイト数を、失敗した場合は-1を返す。

※tkusbh_bulk_readの戻り値そのまま。成功時は4が返えってくる。

int  writeSysEx(unsigned char *dataptr, word datasize, byte nCable=0)

MIDI SysExメッセージを送信する。

255バイトまでのSysExメッセージを送信可能。

第2引数として、Cable Numberを指定可能。省略時は0。

送信に失敗した場合は-1を返す。

unsigned short getVendorId()

接続されている機器のベンダーIDを返す。(device descriptorのidVendor)

unsigned short getProductId()

接続されている機器のプロダクトIDを返す。(device descriptorのidProduct)

unsigned char  getInterval()

機器が指定するポーリングインターバル値を返す。(endpoint descriptorのbInterval)



Attachment: http://japan.renesasrulz.com/gr_user_forum_japanese/m/mediagallery/27.aspx

  • midi
  • gr-sakura
  • usbホスト
  • Share
  • History
  • More
  • Cancel
Related
Recommended
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2020 Renesas Electronics Corporation. All rights reserved.