狠狠撸

狠狠撸Share a Scribd company logo
Interactive Music II
SuperCollider応用
JITLib - ライブコーディング 1
2013年11月14日
東京藝術大学芸術情報センター(AMC)
田所 淳
本日の内容
? 前半 : 講評会
? 前回出題した「自分の楽器をつくる」の発表を、サウンドスタ
ジオのコントロールルームで行います
!

? 後半 : ライブコーディング
? JITLibを使用したライブコーディングの導入を行います
「ライブ?コーディング」とは?
ライブ?コーディング
? ライブ?コーディング (Live Coding) とは?
!

? 「on-the-?y programming」「just in time programming」
? 即興的にプログラミングを行う
!

? コンピュータ音楽、CGアニメーションなどで多くの試み
ライブ?コーディング
? ライブコーディングに対応した言語
!

?
?
?
?
?
?
?
?

SuperCollider
ChucK
COLT
Impromptu
Pure Data
Max
LiveCode
Fluxus
ライブ?コーディング
? 参考サイト: TOPLAP
ライブ?コーディング
? Study In Keith - A livecoding performance by Andrew Sorensen
厂耻辫别谤颁辞濒濒颈诲别谤で、ライブコーディング
厂耻辫别谤颁辞濒濒颈诲别谤で、ライブコーディング
? 厂耻辫别谤颁辞濒濒颈诲别谤で、ライブコーディングに挑戦!!
? 奥深い世界なので、今回はさわりの部分のみ
? 闯滨罢尝颈产というライブラリを使用します
厂耻辫别谤颁辞濒濒颈诲别谤で、ライブコーディング
? JITlibとは?
? 標準のsupercolliderサーバ?リリースとともに配布されるサー
ド?パーティ?ライブラリの1つ
? SuperCollider (SCLang) にライブコーディング機能を追加
? 参考: http://doc.sccode.org/Overviews/JITLib.html
厂耻辫别谤颁辞濒濒颈诲别谤で、ライブコーディング
? JITlibモードに入る、元に戻る
//セットアップ。これによって「jitlibモード」に入る	
p= ProxySpace.push(s);	

!
//通常のsc langに戻るには	
p.pop;	

!
厂耻辫别谤颁辞濒濒颈诲别谤で、ライブコーディング
? JITlibモードに入る、元に戻る
//セットアップ。これによって「jitlibモード」に入る	
p= ProxySpace.push(s);	

!
//通常のsc langに戻るには	
p.pop;	

!
厂耻辫别谤颁辞濒濒颈诲别谤で、ライブコーディング
? JITlibモードに入る、元に戻る
//「~ + 変数名」はサーバーで処理される何かの場所を確保する(NodeProxy)	
//ugen関数、静的な数、pbind、lfoなどを入れることが可能	

!
//例えば、UGenのひとつSinOscの出力結果をNodeProxyに入れる	
~out = {SinOsc.ar};	

!
//proxyspaceに定義したもののリストを見る	
p;	

!
//ProxySpaceに定義したものを再生する	
~out.play;
厂耻辫别谤颁辞濒濒颈诲别谤で、ライブコーディング
? JITlibモードに入る、元に戻る
//プロキシの中に現在あるものを別のugen関数で置き換える	
~out = {SinOsc.ar([220, 222], 0, 0.5)};	

!
//クロスフェードの時間を設定	
~out.fadeTime = 4;	

!
//クロスフェードしながら、別のUgenに置き換え	
~out = {SinOsc.ar([300, 333], 0, 0.5)};	

!
//無音にフェードアウト	
~out.release;
厂耻辫别谤颁辞濒濒颈诲别谤で、ライブコーディング
? JITlibモードに入る、元に戻る
//アルゴリズミック?ハーモニーをライブコーディングで!	
~out = {Mix.arFill(24,{SinOsc.ar([220,221]*(3.0/2**rrand(1,6))*(0.5**
rrand(1,6)),0,1.0/24)})};	
~out = {Mix.arFill(24,{SinOsc.ar([220,221]*(4.0/3**rrand(1,6))*(0.5**
rrand(1,6)),0,1.0/24)})};	
~out = {Mix.arFill(24,{SinOsc.ar([220,221]*(5.0/3**rrand(1,8))*(0.5**
rrand(1,6)),0,1.0/24)})};	
~out = {Mix.arFill(24,{SinOsc.ar([220,221]*(9.0/8**rrand(1,20))*(0.5**
rrand(1,6)),0,1.0/24)})};
今日はここまで!

More Related Content

Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1