« 2012年04月 | トップ

2012年05月27日

mbed版 MIDI USBホスト

LPC1768版のmbedにはUSBホストコントローラが内蔵されており、当然MIDI USBホストとしての応用が考えられます。そこでmbed.orgのクックブックで公開されているBlueUSBに若干の手を加えることで、簡単にmbed版のMIDI USBホスト機能が実装できましたのでご紹介します。

MIDI USBホストの実験プログラムはmbed.orgで公開しています。

  • MIDI_BlueUSB
    オリジナルのBlueUSBはUSBデバイスが接続されるとデバイスorインタフェースディスクリプタ等を読み込みますが、MIDIデバイスについては接続時の処理ルーチンが無いためそのままでは機能しません。
    そこで、AutoEvents.cppにインターフェースディスクリプタがAUDIOクラスかつサブクラスがMIDIストリームの場合「MIDIデバイスが接続された」と判断する処理を追加し、MidiUSB.cppでMIDIストリーム用のエンドポイントを確認後、バルク転送によってMIDIストリームを取得するようにしました。

    実験ハードウェアはmbedにUSBホスト用コネクタとシリアル出力(p9)にMIDIコネクタを接続するだけですが、mbed用評価ベースボードのStarBoard Orengeを利用するともっと簡単に実験できます。

  • mbed_MIDI_USB_HOST.pdf

    手持ちの関係でAKAI LPK-25とKORG nanoKEYでしか動作確認ができてませんが、BlueUSBの機能によりUSBハブ経由での接続についても確認できました。

    さらに、このMIDI USBホストを応用してKAMUI用の実験アプリも作成してみました。これはUSB MIDIキーボードの演奏データをそのままCV/GATE信号に変換するものです。

  • KAMUI_USBHOST_MIDI-CV_Example

    実験動画 - KAMUI DEMO1

    最後の3:25以降がnanoKEYによるUSBホストMIDI-CVの実験です。

  • 2012年05月06日

    KAMUIサンプルアプリケーション

    ようやくKAMUIのサンプルアプリケーションの整理が一段落したので、mbed.orgPublishしてみました。

    今回公開したサンプルアプリケーションは次の4つです。参考例ということで機能的にあまり複雑にせず、ごく基本的なものとしてみました。

  • KAMUI_DIN-SYNC_Example
    DIN-SYNC(SYNC24)を発生させるアプリです。VRでテンポ(40-220BPM)とシャッフル具合を調整できます。またSYNC1とSYNC2出力は同一クロックソースですが、スタート・ストップを独立して制御できます。

  • KAMUI_MIDI-CV_Example
    シリアルMIDI-CVコンバータです。ピッチベンド、LFOモジュレーションもCVにMIXされて出力されます。VRでCV1〜4をMIDI1〜16chに連続的にアサインできます。また、CV5〜8はCV1〜4をHz/Vに変換した電圧を出力します。今回はソフトウェアによるグライド(ポルタメント)機能も実装してみました。

  • KMAUI_USBMIDI-CV_Example
    上記、MIDI-CVコンバータのUSB版です。mbedのhandbookで公開されているUSBMIDIデバイスクラスを利用しています。

  • KAMUI_OSC-CV_Example
    以前の記事「KAMUI OSC-CV/GATEの実験」で紹介した機能です。MIDI-CVと同様にグライド機能を実装したので、離散的になりがちなOSCメッセージでもスムーズなCV出力が得られます。なお、CV出力は-10〜+10Vの範囲です。

    なお、写真のアクリルパネル(ベゼル?)は工房Emerge+さんでレーザー加工して頂いたものです。デザインはさておき、代金もリーズナブルな上、綺麗な加工でとても満足しました。

    USBホストやMicroSD等を利用したアプリも考えられますが、とりあえずこんなことが出来ますといったご紹介でした。

    # KAMUIは試作中です

  • « 2012年04月 | トップ