axjack's blog

axjack is said to be an abbreviation for An eXistent JApanese Cool Klutz.

do-loopのネスト

yoppaさんのなかなか良いサンプルができたのSynthDefがとてもきれいで感動した。RLPFのcutoff frequencyをLFNoiseで動かしているのだけど、右と左でcutoffの周期が違うので立体感が増すように感じる。こんな風に作れたらなぁ。。

今回作ったもの

  • SynthDef

    • yoppaさんがSawを3つステレオで重ねていたのをパkインスパイアして、4つほど重ねてみる。
    • freq * 2 => 1オクターブ
    • freq * 4.5 = freq * 3 * 3/2 = freq * (3/2) * (3/2) * 2 => (完全五度上の完全五度 = 長9度?)の1オクターブ
    • freq * 6 = freq * 2 * 2 * (3/2) => 完全五度上の2オクターブ
  • Routine

    • i = 0の時, 2**(i+1) = 2, (2**i).reciprocal = 1 => 四分音符を2拍
    • i = 1の時, 2**(i+1) = 4, (2**i).reciprocal = 1/2 => 八分音符を4拍
    • i = 2の時, 2**(i+1) = 8, (2**i).reciprocal = 1/4 => 十六分音符を8拍

コード

(
SynthDef(\h,
{
        arg freq = 48;
        Out.ar(0,(
            LFTri.ar([freq,freq-5]) + 
            LFTri.ar([freq * 2 + 1,freq * 2 - 1]) +
            LFTri.ar([freq * 4.5 + 1,freq * 4.5 + 2]) +
            LFTri.ar([freq * 6 - 2,freq * 6 + 5])
        ) * 0.1 * EnvGen.ar(Env.perc,doneAction:2)
        );
}).add;

)


(
~r = r({

    inf.do({
        3.do({|i|
            ( 2**(i+1) ).do({
                Synth(\h,[\freq,48*(i+1)]);
                (2**i).reciprocal.wait;
            });
        });
    });

});

)


~r.reset;
~r.play(TempoClock(144/60));