Edited at

ArduinOSC - Arduinoの信号をOSCに変換するツール作った

More than 3 years have passed since last update.


経緯

ハッカソンとかで、複数人で開発を進めようとして、ハードとソフトのつなぎがある場合、


  • ハードウェア

  • インターフェース

  • ソフトウェア

とおおまかに分けられると思う。

で、こういう分け方をした時は、私がハードウェアとインターフェースを担当して、誰かがソフトウェアをやるという分け方が多い。

私がインターフェース部分で使うのはいつもopenFrameworksだったり、Processingだったりするが、ソフトウェアを組む人もこれらを使っているとは限らないので、「とりあえず、OSC1で送るから受け取ってね」という風にしたら、完全に疎結合になって役割分担もはっきりして気分がいい。

よくよく考えると同じことを何回も何回も書いている気がするので、いっそ、汎用的なアプリケーション書いてやろうと思ったのが、今回。

ArduinOSCという如何にもな名前をつけてみた。

https://github.com/nmbakfm/arduinosc

今回作ったのはArduinoからの信号をOSCに変換するところだけ。


前提

自分がRubyistということもあって、今回Rubyでやった。

前提としては以下。


  • Ruby 2.2.3がインストールされている

  • BundlerをRuby 2.2.3で利用できる環境である

  • ArduinoにはFirmata Libraryがアップデートされている


ダウンロード

以下のコマンドを実行して、ソースコードをcloneしてくればOK

cd your/app/path

git clone git@github.com:nmbakfm/arduinosc.git
cd arduinosc
bundler install --path=vendor/bundle


使い方

以下のコマンドを実行するだけ。

ruby arduinosc.rb


設定の記述方法

設定は中に入っているsetting.json.templateをコピーしてsetting.jsonを作成します。

例えばこんな感じ。

{

"osc":{
"host": "localhost",
"port": "3333"
},
"arduino":{
"modem": "/dev/cu.usbmodem1d1131",
"available_pins":{
"analog": [0,1],
"digital": [13]
}
}
}

意味は大体、分かると思うけど、こんな感じ。

名前
意味

host
oscの送り先のホスト

port
oscの送り先のポート

modem
arduinoが接続されているUSBポート2

analog
値を取得するアナログピンの番号

digital
値を取得するデジタルピンの番号

つまり、上の設定ファイルだと、


"/dev/cu.usbmodem1d1131"に接続されたArduinoの

アナログピンA0,A1とデジタルピン13のデータを

OSCとして"localhost"の3333番ポートにおくる


という感じです。


送られるOSC

┣ /analog

┃ ┣ /pin0
┃ ┗ /pin1

┗ /digital
┗ /pin13

デジタルのHIGHかLOWかは1か0かで送られます。

アナログの値は0-1023の1024段階の値が送られます。


まとめ

インストールは面倒くさいけど、思いのほか、便利なので、お試しあれ。


参考記事

http://shokai.org/blog/archives/6631

http://qiita.com/5t111111/items/f8504e382e348df430d0

私の個人ブログから転載

ArduinOSC – Arduinoの信号をOSCに変換するツール作った






  1. OpenSound Control (http://opensoundcontrol.org/introduction-osc



  2. USBポートはArduino IDEの[ツール]-[ポート]を見ればわかります。