RubyのOSCモジュール
RubyでOSC(OpenSoundControl)を扱うためのモジュールをインストールする手順をメモしておく。
インストール
We retire raa.ruby-lang.org からtarアーカイブをダウンロード。
今日ダウンロードしたファイルは osc-0.1.3.tar.gz でした。
コマンドラインで、展開してできた osc-0.1.3 ディレクトリに移動し、インストールスクリプトを実行します。
>cd osc-0.1.3 >ruby install.rb
テストコード
サーバーアプリとクライアントアプリを作成してテストしてみる。参考にしたのは lib/osc.rb, sample/localtest.rb と sample/send.rb 。
# # mytest_osc_s.rb .. サーバーアプリ. # require 'osc' include OSC # OSCメッセージを受けるポートは 7700. ss = SimpleServer.new( 7700 ) # OSCメッセージを受けたときの挙動を記述して登録。 ss.add_method(nil) do |mesg| p [mesg.address, mesg.to_a] end # 実行開始(戻ってきません) ss.run
# # mytest_osc_c.rb .. クライアントアプリ. # require 'osc' include OSC # OSCメッセージの送り先は、同じPCのポート 7700 sc = SimpleClient.new( 'localhost', 7700 ) loop do begin mesg = Readline.readline('? ', true) # '.' を入力したら終わります. break if mesg == nil || mesg == '.' # メッセージを数値に変換して送ります. sc.send( Message.new( "/foo/test", nil, mesg.to_i ) ) rescue warn $! end end
上の二つのスクリプトを実行します。サーバー側は戻ってこないので、そのまま放置。クライアント側は '?'というプロンプトが出るので、そこに数字を入力して Enterキー を押します。すると、その数字が数値として送られます。
>ruby mytest_osc_c.rb ? 10
とタイプして、Enter を押すと、サーバー側のウィンドウで次のような出力が得られるはずです。
["/foo/test", [10]]
以上のように、OSCメッセージをやり取りします。