OSC on Air (Open Sound Control)
1. はじめに
OSC (Open Sound Control)はネットワーク経由で音楽情報を交換するために開発されたプロトコルです。カリフォルニア大学バークレー校で1982年に次世代のMIDIとして開発されました。
ネットワークベースのプロトコルのため、マイコンでOSCを実装しようとするとLAN機能が必要で、それなりに強力なものが必要でした。Wi-Fiを搭載したESP-WROOM-02 / ESP-WROOM-32が登場し、安価にかつ手軽にネットワークプログラミングができるようになりました。
そこで、ESP-WROOM-02 / ESP-WROOM-32上でOSCの通信を実現してみました。
2. OSC on Airの実装
ハードウェア
開発ボードが流通していますので、そちらを使っても良かったのですが、次の理由からESP-WROOM-02/ESP-WROOM-32を搭載したオリジナルのボードを作成しました。
- 組み込みやすい余計な機能のない小型のボードとする
- 角丸のボードはかわいい(@tadmacさん)
- 用途によって使い分けられるように、同じサイズでESP-WROOM-02版とESP-WROOM-32版を用意する
- OSCはネットワーク経由で利用するため、USB-シリアルアダプターも外付けとする
- USB-シリアルアダプターは拡張仕様(7ピン)とし、書き込み時の自動リセットに対応する
- オンボードのUSB-Serialで複数のボードに書き込むと、シリアルポートの切り替えが必要になってめんどうくさい(@tadmacさん)
- 外付けだと、ボードだけ変えれば良いので楽
- 市販のボードより安価に作成できる(@tadmacさん)
- OSSで設計公開しており、garber作ってelecrowに投げて1000円くらいで1台作れる。約半額
モジュールのピンをそのままピンヘッダーに出しているため、2つの拡張ヘッダーには互換性がありません。
ハードウェアの設計仕様は、以下の場所で公開しています。
ソフトウェア
OSCのメッセージを扱うため、TinyOSCの一部を変更して利用しました。まだArduino用のライブラリとして実装していないため、ソースコードと同じフォルダーにTinyOSCのソースコードを置いています。
3. デモ
メッセージの送受信の実験をしました。
次の構成になっています。
ESP32をコントローラにしてOSCメッセージを送っています。メッセージを受けたESP32/ESP02はLEDを点滅しています。
[youtube]https://www.youtube.com/watch?v=YIanvIaj_zo[/youtube]
iPhoneのアプリ(TouchOSC)をコントローラにしてOSCメッセージを送っています。メッセージを受けたESP32/ESP02はLEDを点滅しています。
[youtube width=”560″ height=”315″]https://www.youtube.com/watch?v=slrvLsoxkoA[/youtube]
4. 続く
@tadmacさんとコラボをしています。OSC on airを使ってこれまで作成したアプリケーションをつなげて動かします。