2011年4月7日木曜日

Ethernet Shield で OSC

Arduino のEthernet Shield を使ったOSC (Open Sound Control) 通信を紹介します。

Arduino 用のOSC ライブラリは Recotana さん作、ArdOSC というOSC ライブラリがあります。

私は昨年10月ごろまで、旧 ver (OSCClass) をバージョンアップせずに使っていたのですが、Arduino Uno 購入を機に IDE のバージョンをあげたら、使えなくなってしまいました。

IDE ver 0019 でEthernet のライブラリに変更があったのですが、ArdOSC は 2011年4月現在、その対応がされていません。
しかし、上記 ArdOSC のページのコメント欄に、旧Ver をIDE ver 0021 に対応させたものが紹介されています。


こちらをダウンロードして、IDE ver 0022 で使ってみましょう。


Arduino のライブラリは、libraries フォルダに入れて使用します。
libraries フォルダはアプリケーション本体の中か、各自のホームディレクトリに作ります。

Mac 版では、Arduino.app アプリケーション本体を「パッケージの内容を表示」し、以下の場所か、
/Applications/Arduino.app/Contents/Resources/Java/libraries

ホーム > 書類につくられるスケッチの保存場所「Arduino」フォルダの中に、libraries フォルダを作り、
~/Documents/Arduino/libraries

そこにダウンロードしたライブラリをフォルダ丸ごとコピーします。
その後は普通に Arduino IED を起動するだけです。(起動中だった場合は再起動)

File > Examples に、OSCClass 用のサンプルスケッチが増えていることを確認します。



このなかから、「Simple_Send_Arduino」を使ってみましょう。

とりあえず、コンパイル(再生ボタン) します。
エラーになるので、エラーにしたがって、Sketch メニューから SPI ライブラリをインポートします。


Sketch > Import Library... > SPI

実はこれ、ソースコードの先頭に1行追加されるだけです。
#include <SPI.h>

これで、コンパイルが通るようになります。

serverMac[] にEthernet Shield のMAC アドレス、serverIp[] にArduino のIP アドレスを入れます。
destIp[] は宛先(通常はPC)のIP アドレスを入れます。
serverPort、destPort は必要に応じて変更します。
(通信相手となるOSC 受信ポートに合わせます。)

設定が終わったら再度コンパイルし、エラーがなければArduino に転送します。

このサンプルは、OSC のアドレス /ard/test1 にfloat値2つを、1秒毎に送るようになっています。
適当なOSC 受信ソフトで受信してみましょう。


Mac のOSC 受信ソフトは別途、紹介する予定です。
Quartz Composer での受信方法は、こちらを参考にして下さい。


1 件のコメント: