[Diary/2012/June]

SuperColliderのGranular Sampling / 2012-06-13 (水)

今日

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