アーカイブ

06:59 のアーカイブ

OSC on Air (Open Sound Control)

2018年05月01日 morecat_lab Comments off

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つの拡張ヘッダーには互換性がありません。

ハードウェアの設計仕様は、以下の場所で公開しています。

ESP8266-BB/ESP32-BB

ソフトウェア

OSCのメッセージを扱うため、TinyOSCの一部を変更して利用しました。まだArduino用のライブラリとして実装していないため、ソースコードと同じフォルダーにTinyOSCのソースコードを置いています。

3. デモ

メッセージの送受信の実験をしました。

次の構成になっています。

OSC-ON-AIR-01

ESP32をコントローラにしてOSCメッセージを送っています。メッセージを受けたESP32/ESP02はLEDを点滅しています。

YouTube Preview Image

iPhoneのアプリ(TouchOSC)をコントローラにしてOSCメッセージを送っています。メッセージを受けたESP32/ESP02はLEDを点滅しています。

YouTube Preview Image

4. 続く

@tadmacさんとコラボをしています。OSC on airを使ってこれまで作成したアプリケーションをつなげて動かします。

MFT2018_01MFT2018_02

カテゴリー: Arduino, ESP8266/ESP32 タグ: