経緯
ハッカソンとかで、複数人で開発を進めようとして、ハードとソフトのつなぎがある場合、
- ハードウェア
- インターフェース
- ソフトウェア
とおおまかに分けられると思う。
で、こういう分け方をした時は、俺がハードウェアとインターフェースを担当して、誰かがソフトウェアをやるという分け方が多い。
俺がインターフェース部分で使うのはいつも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段階の値が送られます。
まとめ
インストールは面倒くさいけど、思いのほか、便利なので、お試しあれ。
- OpenSound Control (http://opensoundcontrol.org/introduction-osc) ↩
- USBポートはArduino IDEの[ツール]-[ポート]を見ればわかります。 ↩
コメントを残す