今日
不調続く.
SuperColliderの授業準備(Granular Sampling)と,夕方から授業.
それにしても,TGrains.ar()を使った,SuperColliderのGranular Samplingはべらぼうに簡単である.
Dseqでグレインごとの挙動もコントロールできるし.
Maxで苦労しながらプログラミングしていたのが嘘みたいだ.
ヘルプファイルに解説を加えたものが下のコード.
TriggerにSinOsc.kr,再生位置にXLine.krとかを使えば,いろいろな値を突っ込んで読むことも可能.
再生する早さに逆再生を指定できるのもよい.
( s = Server.internal; //Scopeを使うためにinternalサーバを起動 Server.default = s; s.boot; ) b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav"); ( { var trate, dur, rate; //MouseY.kr(minValue, maxValue, linear:0 or exponential:1); internalサーバでのみ使える trate = MouseY.kr(2,200,1); dur = 4 / trate; rate = Dseq([10, 1, 1, 0.5, 0.5, 0.2, 0.1], inf); //TGrans.ar(順次再生するバッファの数:最低2, triger(値がくれば起動), bufferNum, サンプル再生のレート(1:通常の早さ,2:2倍の早さ,0.5: 半分の早さ:-1:逆再生), バッファの中のどこを再生させるか,1グレインの長さ(サンプル数), Pan, amp, 各グレインを再生させるときの交差のさせ方(1:交差させない,2:線形に交差させる,4:矩形状に交差させる TGrains.ar(2, Impulse.ar(trate), b, rate, MouseX.kr(0,BufDur.kr(b)), dur, Dseq([-1, 1], inf), 0.1, 2); }.scope(zoom: 4); )