STARM マイコン基板 (13) -- USB-MIDI(1)

FR60 基板の「フル機能版」のプログラムの次は STARM 基板のベースボード作成の順番ですが、指定の SD カードコネクタをまだ入手していなくて、ヘッダピンを取り付けられないでいます。
そういうわけで、ベースボードおよびフル機能版プログラムの作成は SD カードコネクタを入手次第ということで、一時棚上げし、現在は「Audio Speaker」プログラムを改造して、USB-MIDI 機能を実現する試みをしています。
具体的には、「Audio Speaker」プログラムのコンフィギュレーションディスクリプタ

  • MIDIStreaming Interface Descriptor
  • MIDI OUT Jack Descriptor
  • MS Bulk OUT Desctiptor

などを追加し、USB-MIDI 機器として認識されるようにします。
そして USB インターフェースに MIDI データを受け取るためのエンドポイントを設定し、プログラムでこのエンドポイントからデータを取り出します。
ディスクリプタの変更は、比較的に順調に行ったのですが、エンドポイントの追加がうまくいかなくて、少し悩みましたが、結局、データが通るようになりました。
現在は、エンドポイントからのデータの取り出し部分は実装しておらず、エンドポイントにバルクデータが到着するたびに LED の ON/OFF を反転し、目で見て分かるようにしてあります。
データ自体は捨てているので、確信は持てませんが、LED の点滅具合を見る限り、データはうまく送られて来ていると思います。
今後、実装するデータの取り出し方としては、USART に出力して、外部の MIDI あるいはシリアル MIDI 信号とすることを考えています。
わざわざ外部に取り出さなくても、プログラム内部で MIDI データは利用できますが、現在のFM音源プログラムでは2系統の MIDI 入力をマージして扱うことはできません。
そのため、FM音源プログラムと、USB-MIDI インターフェースとを単に同居させるだけで、USB-MIDIMIDI OUT をFM音源プログラムの MIDI IN にハードウェア的に接続する方法を取りたいと思います。