今日
不調続く.
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);
)