狠狠撸

狠狠撸Share a Scribd company logo
SuperCollider応用
SuperColliderと
OSC (Open Sound Control)
東京藝術大学芸術情報センター (AMC)
2013年12月5日
田所 淳
今日の内容
? OSC (Open Sound Control) というプロトコルについて
? この仕組みを理解することで、SuperColliderと他のアプケーショ
ンとの連携が可能に
!

? 最終的な目標
? SuperColliderを、他のアプケーションのGUIからコントロール
? SuperColliderの音を、他のアプリケーションでビジュアライズ
Open Sound Control (OSC) について
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 bene?ts of modern networking technology to
the world of electronic musical instruments, OSC's
advantages include interoperability, accuracy, ?exibility, and
enhanced organization and documentation.
Open Sound Control とは
? 要点: Open Sound Control (OSC)とは
!

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

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

? 相互運用性、正確さ、柔軟さ、拡張性に優れる
Open Sound Control とは
? Open Sound Control のポイント
!

? ポストMIDIを目指す
? インターネットのプロトコルの仕組みを、音楽やマルチメディ
アの世界へ適用 (UDP/IPを利用)
? 多くの機器、言語、アプリケーションに実装済み
? オープンでシンプルな命名規則 ← URLの仕組みに似ている
Open Sound Control とは
? Open Sound Control が実装された主な環境
? サウンド系
? Max/MSP
? Pd
? SuperCollider
? Chuck
? Csound
? Reactor ..etc.
!

? ビジュアル系
? Flash ( ?osc )
? Processing
? OpenFrameworks
? QuartzComposer
? vvvv ..etc.
Open Sound Control とは
? ハードウェアにも対応したものが出てきている
? Lemur
? monome ..etc.
Open Sound Control とは
? iPhoneやiPadからも!
OSCのプロトコル
? では、実際にOSCのプロトコルは、どんななっているのか?
!
!

/trigger/inst/a 440 0.1 “hello”
OSC Message

OSC Arguments

?

情報内容をラベリング

?

?

URLに同様の名前付けの規則

?

情報の本体
いろいろな型を同時に含めることがで
きる
OSC Message
? OSC Messageのアドレスパターン → URLのような階層構造
OSC の通信のしくみ
OSC の通信のしくみ
? 送信側:IPアドレスとportを指定

IP: 192.168.1.3
port: 57120
OSC の通信のしくみ
? 受信側:ポートをオープン

IP: 192.168.1.3
port: 57120
OSC の通信のしくみ
? 接続

IP: 192.168.1.3
port: 57120
OSC の通信のしくみ
? 送信側:情報を送信
? 受信側:受信

/trigger/inst/a 440 0.1

hello

IP: 192.168.1.3
port: 57120
OSC の通信のしくみ
? 受信側:OSCのメッセージを解釈、アプリケーションに適用
/trigger/inst/a 440 0.1

hello

IP: 192.168.1.3
port: 57120
SuperColliderの構造
サーバー v.s. クライアント
SuperColliderの構造
? クライアント v.s. サーバー
SuperCollider application

Client

Server

language
sclang

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

Client

Server

language
sclang

scsynth

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

? OSXのアクティビティーモニタで確認
SuperColliderの構造
? クライアント v.s. サーバー
? サーバーとクライアントのOSC連携の詳細
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
? これまでやってきた操作の背後でやりとりされていた、OSCメッ
セージをモニタしてみる
!

? { 関数 }.play で再生
? SynthDefで作成した楽器を再生
? 楽器のパラメータを変更 …etc.
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
? OSCをモニターする (dumpOSC)
//サーバーのブート
s = Server.default;
s.boot;

!

//全てのOSCメッセージを表示する
s.dumpOSC;
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
? OSCをモニターする (dumpOSC)
//楽器の定義
SynthDef("test_osc", {
var out;
out = SinOsc.ar([220, 221],0,0.5);
Out.ar(0, out);
}).store;
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
? OSCをモニターする (dumpOSC)
//サウンド再生開始
s.sendMsg("/s_new", "test_osc", x = s.nextNodeID, 1, 1);

!

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

!

//サーバーの終了
s.quit;
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
? 様々な操作をしたタイミングで、Post Windowにメッセージが
表示されているはず
? どのようなメッセージが出ていたのか确认する
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
? OSCをモニターする (dumpOSC)
//SuperCollider側プログラム
s.dumpOSC;

//表示されたOSCメッセージ
[ "/dumpOSC", 1 ]
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
? OSCをモニターする (dumpOSC)
//楽器の定義
SynthDef("test_osc", {
var out;
out = SinOsc.ar([220, 221],0,0.5);
Out.ar(0, out);
}).store;

//表示されたOSCメッセージ
[ "/d_recv", DATA[244], 0 ]
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
? OSCをモニターする (dumpOSC)
//サウンド再生開始
s.sendMsg("/s_new", "test_osc", x = s.nextNodeID, 1, 1);

//表示されたOSCメッセージ
[ "/s_new", "test_osc", 1000, 1, 1 ]
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
? OSCをモニターする (dumpOSC)
//再生終了
s.sendMsg("/n_free", x);

//表示されたOSCメッセージ
[ "/n_free", 1000 ]
厂耻辫别谤颁辞濒濒颈诲别谤で翱厂颁を试す
? OSCをモニターする (dumpOSC)
//サーバーの終了
s.quit;

//表示されたOSCメッセージ
[ "/quit", ]
外部アプリから、SuperColliderを操作する
PdでSuperColliderを操作
PdでSuperColliderを操作
? dumpOSCで表示されたOSCメッセージを、そのまま外部のプ
ログラムから送信すると、同じようにコントロールできる
? 試しに、PdからOSCを送出して、SuperColliderを動かす
!

? SuperColliderのOSCの受信ポート: 57120
? sclangからscsynthが受信するポート: 57110
PdでSuperColliderを操作
? 接続の詳細

ip : 任意のものを
port:57120

Pd

ip : 127.0.0.1
port:57110

SC
lang
SC言語

SC
synth
SC音響合成

SuperCollider
PdでSuperColliderを操作
? Pdテストパッチ
? 上から順番にクリック、音が再生されるはず
PdでSuperColliderを操作
? もう少し複雑な例
//別の楽器
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を操作
? Pd側パッチ
? metroを使用して、連続してs_newを送出

More Related Content

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