2010年8月9日月曜日

OLWS #4-a 繋がりは OSC。

ツナガル・ツナガレ2篇のフォローアップとして、Quartz Composer でOSC (Open Sound Control) を利用する方法を解説します。

OSC を使うと、ネットワークを介して値のやりとりができます。
OSC について詳しく知りたい場合は、オフィシャルサイトの仕様書を読んでください。

OSC を扱うために、最低限必要なスキルは「TCP/IP のネットワークが組める」ことです。つまり IP アドレスを手動で割り当てたり、http://127.0.0.1:8080/ が、どこに繋がるのか説明できる、といったことです。


Quartz Composer でOSC を扱うには?
まずは新規作成で、空のコンポジションを2つ用意します。


それぞれを「Sender (送り手)」、「Receiver (受け手)」とします。
1) Sender 側にはOSC Sender パッチ、Receiver 側にOSC Receiver パッチを配置します。
2) Sender 側の/test インレットにLFO パッチのResult を接続します。
3) Receiver 側の/test アウトレットに "Image With String"と"Billboard" を接続します。

これで完成です。

Receiver のViewer で、Sender のLFO の値が出力されていますか?
出力されていない(0で固定)場合はネットワークの設定を確認しましょう。

「システム環境設定 > ネットワーク」
を開いて、正常なネットワーク(緑色)があることを確認してください。


正常なネットワークがない状態では、OSC パッチは動作しません。

これだけで、2つのコンポジションの間で、データのやりとりができました。
もう1台、Quarz Composer が動くMac を用意できる場合は、2つのコンポジションを別のマシンで動かしてみましょう。同一ネットワーク上にあれば、このままで問題なく動きます。


ここで、OSC パッチの設定を確認します。
「OSC Sender」、「OSC Receiver」それぞれのInspector 2枚目(⌘2 の項目)を開きます。



Sender にはIP Address として0.0.0.0 が設定されています。
これはブロードキャストアドレスといって、同一ネットワーク上の全ての端末が受信します。
Port Number 60000 はSender とReceiver で同じ値にします。(他のサービスと被らなければなんでも良いです。)
Max Frequency は1秒間に送信する回数の上限を設定します。

Receiver にはIP Address の設定はありません。Port Number のみ設定します。

この設定で、1つのSender から、同一ネットワーク上の複数のReceiver に対して値を送ることができます。
もし、A のマシンにはa の値、B のマシンにはb の値と、選択的に送る必要がある場合は、
OSC Sender パッチを複数使って、それぞれの宛先IP Address を指定します。


OSC Arguments として、予め用意されている /test は Float(浮動小数点)型のデータを送る事ができます。
OSC では、データを送る際、「アドレス」と「データ型」を指定します。
新たに自分で作る場合は、Inscpector 下部で「データ型」を選択し、「アドレス」を入力して、[+] ボタンを押します。
試しに、Index (整数)型の「/QC/int-test」を作成してみましょう。(アドレスは自分で決めます。必ず「/(slash)」で始まります。/iPhone/button1, /iPad/slider1 など、わかりやすいものをつけましょう。)



新しくできたインレット/アウトレットに先ほどのLFO を接続すると、整数に丸められた値が送られます。



以上が、Quartz Composer における、OSC の使い方になります。

0 件のコメント:

コメントを投稿