39
SuperCollider応用 SuperColliderと OSC (Open Sound Control) 東京藝術大学芸術情報センター (AMC) 2013年12月5日 田所 淳

Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

Embed Size (px)

Citation preview

Page 1: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

SuperCollider応用 SuperColliderと OSC (Open Sound Control)

東京藝術大学芸術情報センター (AMC) 2013年12月5日 田所 淳

Page 2: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

今日の内容‣ OSC (Open Sound Control) というプロトコルについて ‣ この仕組みを理解することで、SuperColliderと他のアプケーションとの連携が可能に !

‣ 最終的な目標 ‣ SuperColliderを、他のアプケーションのGUIからコントロール ‣ SuperColliderの音を、他のアプリケーションでビジュアライズ

Page 3: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

Open Sound Control (OSC) について

Page 4: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

Open Sound Control とは‣ Open Sound Control のプロジェクトのWebページより ‣ Open Sound Control (OSC) is a protocol for communication among computers, sound synthesizers, and other multimedia devices that is optimized for modern networking technology. Bringing the benefits of modern networking technology to the world of electronic musical instruments, OSC's advantages include interoperability, accuracy, flexibility, and enhanced organization and documentation.

Page 5: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

Open Sound Control とは‣ 要点: Open Sound Control (OSC)とは !

‣ コンピュータ、シンセサイザーや、その他のマルチメディアデバイス同士でコミュニケーションするための通信プロトコル !

‣ 現代のネットワーク技術の成果を電子楽器の世界に適用 ‣ → UDP/IP !

‣ 相互運用性、正確さ、柔軟さ、拡張性に優れる

Page 6: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

Open Sound Control とは‣ Open Sound Control のポイント !

‣ ポストMIDIを目指す ‣ インターネットのプロトコルの仕組みを、音楽やマルチメディアの世界へ適用 (UDP/IPを利用)

‣ 多くの機器、言語、アプリケーションに実装済み ‣ オープンでシンプルな命名規則 ← URLの仕組みに似ている

Page 7: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

Open Sound Control とは‣ Open Sound Control が実装された主な環境 ‣ サウンド系 ‣ Max/MSP ‣ Pd ‣ SuperCollider ‣ Chuck ‣ Csound ‣ Reactor ..etc. !

‣ ビジュアル系 ‣ Flash ( flosc ) ‣ Processing ‣ OpenFrameworks ‣ QuartzComposer ‣ vvvv ..etc.

Page 8: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

‣ ハードウェアにも対応したものが出てきている ‣ Lemur ‣ monome ..etc.

Open Sound Control とは

Page 9: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

‣ iPhoneやiPadからも!

Open Sound Control とは

Page 10: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

OSCのプロトコル

OSC Message OSC Arguments

• 情報内容をラベリング • URLに同様の名前付けの規則

• 情報の本体 • いろいろな型を同時に含めることができる

‣ では、実際にOSCのプロトコルは、どんななっているのか? !!/trigger/inst/a 440 0.1 “hello”

Page 11: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

‣ OSC Messageのアドレスパターン → URLのような階層構造

OSC Message

Page 12: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

OSC の通信のしくみ

Page 13: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

‣ 送信側:IPアドレスとportを指定

OSC の通信のしくみ

IP: 192.168.1.3 port: 57120

Page 14: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

‣ 受信側:ポートをオープン

OSC の通信のしくみ

IP: 192.168.1.3 port: 57120

Page 15: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

‣ 接続

OSC の通信のしくみ

IP: 192.168.1.3 port: 57120

Page 16: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

‣ 送信側:情報を送信 ‣ 受信側:受信

OSC の通信のしくみ

/trigger/inst/a 440 0.1 “hello”

IP: 192.168.1.3 port: 57120

Page 17: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

‣ 受信側:OSCのメッセージを解釈、アプリケーションに適用

OSC の通信のしくみ

/trigger/inst/a 440 0.1 “hello”

IP: 192.168.1.3 port: 57120

Page 18: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

SuperColliderの構造 サーバー v.s. クライアント

Page 19: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

‣ クライアント v.s. サーバー

SuperCollider application

SuperColliderの構造

sclang scsynth

language

Client Server

Page 20: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

‣ クライアント v.s. サーバー

SuperCollider application

SuperColliderの構造

sclang scsynth

language

Client Server

OSCで連携

Page 21: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

SuperColliderの構造‣ クライアント v.s. サーバー ‣ 今までのプログラムも、その裏ではOSCで連携していた!! !

‣ OSXのアクティビティーモニタで確認

Page 22: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

SuperColliderの構造‣ クライアント v.s. サーバー ‣ サーバーとクライアントのOSC連携の詳細

Page 23: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

SuperColliderでOSCを試す

Page 24: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

SuperColliderでOSCを試す‣ これまでやってきた操作の背後でやりとりされていた、OSCメッセージをモニタしてみる !

‣ { 関数 }.play で再生 ‣ SynthDefで作成した楽器を再生 ‣ 楽器のパラメータを変更 …etc.

Page 25: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

//サーバーのブート s = Server.default; s.boot; !//全てのOSCメッセージを表示する s.dumpOSC;

SuperColliderでOSCを試す‣ OSCをモニターする (dumpOSC)

Page 26: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

//楽器の定義 SynthDef("test_osc", { var out; out = SinOsc.ar([220, 221],0,0.5); Out.ar(0, out); }).store;

SuperColliderでOSCを試す‣ OSCをモニターする (dumpOSC)

Page 27: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

//サウンド再生開始 s.sendMsg("/s_new", "test_osc", x = s.nextNodeID, 1, 1); !//再生終了 s.sendMsg("/n_free", x); !//サーバーの終了 s.quit;

SuperColliderでOSCを試す‣ OSCをモニターする (dumpOSC)

Page 28: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

SuperColliderでOSCを試す‣ 様々な操作をしたタイミングで、Post Windowにメッセージが表示されているはず

‣ どのようなメッセージが出ていたのか確認する

Page 29: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

//SuperCollider側プログラム s.dumpOSC;

SuperColliderでOSCを試す‣ OSCをモニターする (dumpOSC)

//表示されたOSCメッセージ [ "/dumpOSC", 1 ]

Page 30: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

//楽器の定義 SynthDef("test_osc", { var out; out = SinOsc.ar([220, 221],0,0.5); Out.ar(0, out); }).store;

SuperColliderでOSCを試す‣ OSCをモニターする (dumpOSC)

//表示されたOSCメッセージ [ "/d_recv", DATA[244], 0 ]

Page 31: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

//サウンド再生開始 s.sendMsg("/s_new", "test_osc", x = s.nextNodeID, 1, 1);

SuperColliderでOSCを試す‣ OSCをモニターする (dumpOSC)

//表示されたOSCメッセージ [ "/s_new", "test_osc", 1000, 1, 1 ]

Page 32: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

//再生終了 s.sendMsg("/n_free", x);

SuperColliderでOSCを試す‣ OSCをモニターする (dumpOSC)

//表示されたOSCメッセージ [ "/n_free", 1000 ]

Page 33: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

//サーバーの終了 s.quit;

SuperColliderでOSCを試す‣ OSCをモニターする (dumpOSC)

//表示されたOSCメッセージ [ "/quit", ]

Page 34: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

外部アプリから、SuperColliderを操作する PdでSuperColliderを操作

Page 35: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

PdでSuperColliderを操作‣ dumpOSCで表示されたOSCメッセージを、そのまま外部のプログラムから送信すると、同じようにコントロールできる

‣ 試しに、PdからOSCを送出して、SuperColliderを動かす !

‣ SuperColliderのOSCの受信ポート: 57120 ‣ sclangからscsynthが受信するポート: 57110

Page 36: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

PdでSuperColliderを操作‣ 接続の詳細

SC lang

ip : 任意のものを port:57120

SC synth

ip : 127.0.0.1 port:57110

SC言語 SC音響合成

SuperCollider

Pd

Page 37: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

PdでSuperColliderを操作‣ Pdテストパッチ ‣ 上から順番にクリック、音が再生されるはず

Page 38: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

//別の楽器 SynthDef("perc", { arg freq, dur; var out, env; env = Env.perc(0.01, dur, 0.2); out = SinOsc.ar(freq,0,0.5) * EnvGen.kr(env, doneAction:2); out = Pan2.ar(out, Rand(-1.0, 1.0)); Out.ar(0, out); }).store;

PdでSuperColliderを操作‣ もう少し複雑な例

Page 39: Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)

PdでSuperColliderを操作‣ Pd側パッチ ‣ metroを使用して、連続してs_newを送出