ぐる式 (貳) より引っ越し作業中.未完.

2008年6月15日日曜日

Squeak Pd

udp port for OSC

Pd (Pure Data) と OSC

特盛り Pd-[\d\.]+-extended には OSC を使うオブジェクトが組み込まれている.これらは extra 扱いなので, pd-vanillae には含まれていない[Pd 上では (Squeak も) OSC は UDP を介して通信を行う.他に netsend や netreceive という通信用オブジェクトがあり, TCP (UDP も) を介した通信を行うことができる.これらは標準で組込まれているので, pd-vanillae でも使用できる.

Netsend -- send Pd messages over a network

The Netsend object connects to another machine over the network for sending TCP ("stream") or UDP ("datagram") messages. An outlet reports whether the connection is open or not. A connection request should specify the name or IP address of the other host and the port number. There should be a "Netreceive" on the remote host with a matching port number.

Netreceive -- listen for incoming messages from network

The Netreceive object opens a socket for TCP ("stream") or UDP ("datagram") network reception on a specified port. If using TCP \, an outlet gives you the number of Netsend objects (or other compatible clients) have opened connections here.

Incoming network messages appear on "receive" objects \; it's up to the sender to select which one. Here \, a "receive foo" fields messages sent from the Netsend help window \, q.v.

There are some possibilities for intercommunication with other programs... see the help for "netsend."

SECURITY ALERT: don't publish the port number of your netreceive unless you wouldn't mind other people being able to send you messages.

]. OSC 本家の Implementations を見てみると,他に, BluePDcSounds,PHP,Java (サーバ版もあり), Python, Ruby, Abelton Live (Windows) とかもあるそうな. Flash だと flosc 経由になるのか.面倒くせぇ. VisualWorks だと VWOSC というのがあるけど,めっさ古いんで, Siren 経由になるんだろか (Squeak OSC を持って来る方が早いかも).さすがに MAX 版がないわきゃねぇよな (笑).というわけなので,モノは試しっつ〜ことで localhost 内で Squeak (3.10.1) と Pd-extended とを繋げてみた.

準備するもの

実験材料は以下のとおり.

  1. sq3.10.1-7175dev08.06.1
  2. Squeak OSC OSC-SimonHolland.14.mcz
  3. Pd-0.39.3-extendedPd-0.40.3-extended-rc1

まず Squeak の方. Squeak OSC は dev 版には含まれていないので,要インストール. SqueakMap に置いてある SimonHolland.14 版 (23 Sept 2007) を使う. SqueakSource では Release ページに置いてある.イメージは,あえて 3.10 ベース Squeak-dev の 08.06.1[Squeak OSC は 3.9 までしかテストされてないようなので.]. VM は現時点最新の 3.8.18beta4U. Pd の方はいずれも extended で stable の 0.39.3 と 0.40.3 の RC1 (笑).あと,システム環境設定でポートを開けとくのを忘れないように[システム環境設定 -> 共有 -> ファイアウォール で新規なり編集なり. UDP ポートを二つ開けておく.]

繋ぐ

結論からいうと,あっさり動いた (笑).

Pd-0.39.3-extended <-> Squeak (3.10.1)
  • Pd-0.39.3-extended から sq3.10.1-7175dev08.06.1 へ送信.まず Squeak 上で OSCServer を起動しておき,次いで Pd のパッチ sendOSC-help.pd[ヘルプ・プラウザから 5.reference -> oscx.] から Squeak 側に接続してメッセージを流す (send /foobar). Squeak の Transcript に送信されて来たメッセージが表示されている. Pd-0.39.3-extended -> sq3.10.1-7175dev08.06.1
  • sq3.10.1-7175dev08.06.1 から Pd-0.39.3-extended へ送信.今度は逆方向. Pd 側で受信ポートに接続して待ち受ける. Squeak の方は OSCMessage クラスから例題メソッドを連続して送信する (Shout Workspace). Pd 側は dumpOSC-help.pd で受信.受信内容が Pd コンソールに表示されている.途中, / で始まってないメッセージが送られて来ているので, invalid message pattern だとお怒りのご様子. sq3.10.1-7175dev08.06.1 -> Pd-0.39.3-extended
Pd-0.40.3-extended-rc1 <-> Squeak (3.10.1)
  • Pd-0.40.3-extended-rc1 から sq3.10.1-7175dev08.06.1 へ送信.手順は Pd-0.39.3-extended と同様. Pd-0.40.3-extended-rc1 は見た目の印象がちょい変わった. Pd-0.40.3-extended-rc1 -> sq3.10.1-7175dev08.06.1
  • sq3.10.1-7175dev08.06.1 から Pd-0.40.3-extended-rc1 へ送信. Pd-0.39.3-extended では invalid message pattern と怒られた / なしメッセージは素通し. sq3.10.1-7175dev08.06.1 -> Pd-0.40.3-extended-rc1

と,まぁ,こんな感じ. Pd と Squeak (MMM) の連係も可能っつ〜こってすな.しかし,おっそろしい程にファンがブン回るな…….どうでもエエが, OSC (OpenSoundControl) って, oscillator だったり, Open Source Consortium だったり, Open Source Conference だったり, Oxford Synthesiser Company だったりしてややこしい.

0 件のコメント:

コメントを投稿