Upload
atsushi-tadokoro
View
2.200
Download
6
Embed Size (px)
Citation preview
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
東京藝術大学芸術情報センター (AMC) 2013年12月12日 田所 淳
今日の内容‣ 先週の復習: ‣ OSC (OpenSoundControlについて) !
‣ Pdから、OSCを介してSuerColliderの楽器を鳴らしてみる ‣ Pdをインタフェイスとして、SuperColliderの楽器を使用する
先週の復習: Open Sound Control (OSC) について
Open Sound Control とは‣ Open Sound Control のポイント !
‣ ポストMIDIを目指す ‣ インターネットのプロトコルの仕組みを、音楽やマルチメディアの世界へ適用 (UDP/IPを利用)
‣ 多くの機器、言語、アプリケーションに実装済み ‣ オープンでシンプルな命名規則 ← URLの仕組みに似ている
OSCのプロトコル
OSC Message OSC Arguments
• 情報内容をラベリング • URLに同様の名前付けの規則
• 情報の本体 • いろいろな型を同時に含めることができる
‣ では、実際にOSCのプロトコルは、どんななっているのか? !!/trigger/inst/a 440 0.1 “hello”
‣ OSC Messageのアドレスパターン → URLのような階層構造
OSC Message
OSC の通信のしくみ
‣ 送信側:IPアドレスとportを指定
OSC の通信のしくみ
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. クライアント
‣ クライアント v.s. サーバー
SuperCollider application
SuperColliderの構造
sclang scsynth
language
Client Server
‣ クライアント v.s. サーバー
SuperCollider application
SuperColliderの構造
sclang scsynth
language
Client Server
OSCで連携
SuperColliderの構造‣ クライアント v.s. サーバー ‣ 今までのプログラムも、その裏ではOSCで連携していた!! !
‣ OSXのアクティビティーモニタで確認
SuperColliderの構造‣ クライアント v.s. サーバー ‣ サーバーとクライアントのOSC連携の詳細
PdでSuperColliderを操作
PdでSuperColliderを操作‣ dumpOSCで表示されたOSCメッセージを、そのまま外部のプログラムから送信すると、同じようにコントロールできる
‣ 試しに、PdからOSCを送出して、SuperColliderを動かす !
‣ SuperColliderのOSCの受信ポート: 57120 ‣ sclangからscsynthが受信するポート: 57110
PdでSuperColliderを操作‣ 接続の詳細
SC lang
ip : 任意のものを port:57120
SC synth
ip : 127.0.0.1 port:57110
SC言語 SC音響合成
SuperCollider
PdでSuperColliderを操作‣ 接続の詳細 ‣ SCLangの代わりに、Pdから直接SCSynthに指示を送る
SC synth
ip : 127.0.0.1 port:57110
SC音響合成
SuperCollider
Pd
PdでSuperColliderを操作‣ Pdテストパッチ ‣ 上から順番にクリック、音が再生されるはず
//別の楽器 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でSuperColliderを操作‣ Pd側パッチ ‣ metroを使用して、連続してs_newを送出
PdでSuperColliderを操作‣ SuperColliderの楽器のインターフェイスとしてPdを利用 !
‣ 例: ‣ SuperCollider側でFM合成の楽器 ‣ Pdでパラメータをコントロール
//FM合成の楽器(SynthDef("fm1", { arg detune = 0.001, freq = 440, carPartial = 1, modPartial = 1, index = 3, mul = 0.3; var mod; var car; mod = SinOsc.ar( [freq * modPartial, freq * (1 + detune) * modPartial], 0, freq * index * LFNoise1.kr(5.reciprocal).abs ); car = SinOsc.ar( (freq * carPartial) + mod, 0, mul ); Out.ar(0, car)}).add;)
PdでSuperColliderを操作‣ SC側
PdでSuperColliderを操作‣ Pd側
次週へのステップ Processing入門
Processingとは?‣ Processingは、イメージやアニメーションそしてサウンドのプログラミングをしたいと思っている人々のためのオープンソースのプログラミンング言語であり開発環境です。アーティスト、デザイナー、建築家、研究者、そして趣味として使う人が、プロトタイピングや制作のために使うものです。ビジュアルな文脈でコンピュータプログラミングの基礎を教えるため、そしてソフトウェアのスケッチブックとして、またはプロフェッショナルのための制作ツールとして作られています。Processingは、アーティスト達やデザイナー達によって、おなじ分野の商業ソフトウェアへの代替手段として開発されています。
Processingとは?‣ Processingの特徴 ‣ JavaやC++でプログラミングするよりも遥かに容易に、スケッチするようにインタラクティブなビジュアルプログラミングを構築できる
‣ スレッド、ダブルバッファリングなど、初級者にとってハードルとなる技術的な詳細を外し、アイデアの実現に専念できる
‣ 独自のシンタックスで書かれたプログラムをJavaコードに解析、コードは実行可能なJavaアプッレットとして書き出すことが可能
‣ PostScript、OpenGLの機能セットを利用した、カスタム2D/3Dレンダリングエンジンを使用
‣ 既存のJavaライブラリを統合することで容易に拡張が可能 ‣ 無料で利用できる ‣ Windows、MacOSX、Linuxで実行可能
Processing 誕生の歴史‣ Design by Numbers - John Maeda (MIT Media Lab.) ‣ http://dbn.media.mit.edu/ ‣ Processingの祖先
Processing 誕生の歴史‣ MIT Media Lab. で John Maedaの博士課程の学生だった Ben FryとCasey Reas によりProcessing が生みだされた (2001)
‣ その後バージョンアップを重ねて現在のバージョンは1.5.1 ‣ Javaをベースにしたクロスプラットフォーム ‣ Mac OSX, Windows, Linux 版 ‣ JavaScript版のProcessing.jsなどの派生プロジェクトも
Processingに触れてみる‣ まずは起動してみる ‣ Processingの起動画面
Processingに触れてみる‣ メニューの解説 ‣ 操作方法
Processingに触れてみる‣ とりあえず、何も入力せずに再生ボタンを押してみる ‣ Windowが表示され、グレーの領域が表示 ‣ 空の状態
Processingに触れてみる‣ エディターの画面に次のプログラムを入力
!!
!!!
‣ 線が描かれる
line(0,0,100,100);
Processingに触れてみる‣ さらに命令を追加
line(0,0,100,100); ellipse(50,50,80,80);
Processingに触れてみる‣ Processingでは、簡単な命令(関数)で形を描くことができる ‣ 面倒な処理は勝手にやってくれる ‣ Windowの生成 ‣ 描画する領域の生成 !
‣ プログラムの書き出し ‣ Java Applet ‣ 実行ファイル ‣ Javascript ‣ Androidアプリ !
‣ クリエイティブな部分にのみ専念できる
Processingに触れてみる‣ Java Appletとして書き出してみる ‣ Exportボタンを押すだけ
次週までの課題 Hello Processingを視聴
次週までの課題
次週までの課題‣ Hello Processing (http://hello.processing.org/) ‣ Daniel Shiffman 氏によるチュートリアル ‣ 映像とコードでインタラクティブに学べる教材
次週までの課題‣ 次週までに一通り視聴してきてください ‣ 1時間で終わります! !
‣ 参考: 『Hour of Code』キャンペーン ‣ http://www.cbc-net.com/topic/2013/12/hourofcode/