Skip to content

Instantly share code, notes, and snippets.

@crucialfelix
Created March 2, 2013 19:41

Revisions

  1. crucialfelix created this gist Mar 2, 2013.
    529 changes: 529 additions & 0 deletions gistfile1.sc
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,529 @@

    // these return more than one track
    // they take a stereo in and return an array of stereo outs

    Instr("splits.two",{ arg audio=0.0,lpf=200, lprq=0.5,hipass=100;

    var lo,hi;

    lo = RLPF.ar( audio, lpf,lprq);
    hi = HPF.ar( audio, hipass);

    [ lo, hi]

    },[
    \audio,
    [50,10000,\exponential],
    [0.1,0.9],
    [100,7000,\exponential]

    ],
    MultiTrackAudioSpec(2,2)
    );




    Instr("splits.xover",{ arg audio=0.0,xover=200,logain=1.0,higain=1.0;

    var lo,hi;

    lo = LPF.ar( audio, xover);
    hi = audio - lo;
    if(logain != 1.0,{ lo = lo * logain });
    if(higain != 1.0,{ hi = hi * higain });

    [lo,hi]

    },[
    \audio,
    \freq,
    [0.0,2.0],
    [0.0,2.0]

    ],
    MultiTrackAudioSpec(2,2)
    );


    Instr("splits.rxover",{ arg audio=0.0,xover=200,rq=0.5,logain=1.0,higain=1.0;
    var lo;
    lo = RLPF.ar( audio, xover,rq);
    [ lo * logain, audio - lo * higain]

    },[
    \audio,
    \ffreq,
    \rq,
    [0.0,2.0],
    [0.0,2.0]

    ],
    MultiTrackAudioSpec(2,2)
    );
    /*
    Instr([\splits,\r4xover],{ arg audio=0.0,xover=0.5,rq=0.5,logain=1.0,higain=1.0;
    var lo;
    lo = RLPF4.ar( audio, xover,rq);
    [ lo * logain, audio - lo * higain]
    },[
    \audio,
    \unipolar,
    \rq,
    [0.0,2.0],
    [0.0,2.0]
    ]);
    */

    Instr("splits.bpf",{ arg audio=0.0,ffreq=200,rq8=1.0;

    var chan;
    chan = BPF.ar( audio, ffreq,rq8);
    [chan,audio - chan]
    },
    nil,
    MultiTrackAudioSpec(2,2)
    );


    Instr([\splits,\xover3,\lp],{ arg audio=0.0,xover1=200,xover2=4000,logain=1.0,midgain=1.0,higain=1.0;

    var lo,mid,hi,rest;
    lo = RLPF.ar(audio,xover1,0.4);// cmon you know you want it
    rest = audio - lo;
    mid = LPF.ar(rest,xover2);
    hi = rest - mid;

    lo = if(logain==1.0,{lo},{lo*logain});
    mid = if(midgain==1.0,{mid},{mid*midgain});
    hi = if(higain==1.0,{hi},{hi*higain});

    [ lo, mid, hi ]
    },[
    \audio,
    [200,3000,\exponential],
    [3000,9000,\exponential],

    [0.0,2.0],
    [0.0,2.0],
    [0.0,2.0]

    ],
    MultiTrackAudioSpec(3,2)
    );


    Instr([\splits,\xover3,\slew],{ arg audio=0.0,slope=200,xover2=4000,logain=1.0,midgain=1.0,higain=1.0;

    var lo,mid,hi,rest;
    lo = Slew.ar(audio,slope,slope);
    rest = audio - lo;
    mid = LPF.ar(rest,xover2);
    hi = rest - mid;

    lo = if(logain==1.0,{lo},{lo*logain});
    mid = if(midgain==1.0,{mid},{mid*midgain});
    hi = if(higain==1.0,{hi},{hi*higain});

    [ lo, mid, hi ]
    },[
    \audio,
    [10,1200,\exponential],
    [3000,9000,\exponential],

    [0.0,2.0],
    [0.0,2.0],
    [0.0,2.0]

    ],
    MultiTrackAudioSpec(3,2)
    );


    // loses a lot of delicacy
    Instr([\splits,\xover3,\bpf],{ arg audio=0.0,xover1=200,xover2=4000,logain=1.0,midgain=1.0,higain=1.0;

    var lo,mid,hi,rest;
    mid =BPFbyFreq.ar( audio, xover1,xover2);
    rest = audio - mid;
    hi = HPF.ar(rest,xover2,higain);
    lo = LPF.ar( rest,xover1,logain);

    [ lo
    , mid * midgain
    , hi
    ]
    },[
    \audio,
    [200,3000,\exponential],
    [3000,9000,\exponential],

    [0.0,2.0],
    [0.0,2.0],
    [0.0,2.0]

    ],
    MultiTrackAudioSpec(3,2)
    );

    // xtract mid by resonz
    Instr([\splits,\xovermid,\resonz],{ arg audio=0.0,xover1=200,xover2=4000;

    var lo,hi,mid,rest;

    mid = ResonzByFreq.ar( audio, xover1,xover2);
    rest = audio - mid;

    [ mid, rest]

    },[
    \audio,
    [200,3000,\exponential],
    [3000,9000,\exponential],

    [0.0,2.0],
    [0.0,2.0],
    [0.0,2.0]

    ],
    MultiTrackAudioSpec(2,2)
    );

    Instr([\splits,\xover3,\resonz],{ arg audio=0.0,xover1=200,xover2=4000;

    var lo,hi,mid,rest;

    mid = ResonzByFreq.ar( audio, xover1,xover2);
    rest = audio - mid;
    lo = LPF.ar( rest, xover1);
    hi = rest - lo;

    [ lo,mid, hi]

    },[
    \audio,
    [200,3000,\exponential],
    [3000,9000,\exponential],

    [0.0,2.0],
    [0.0,2.0],
    [0.0,2.0]

    ],
    MultiTrackAudioSpec(3,2)
    );



    Instr([\splits,\xover3,\rbpf],{ arg audio=0.0,xover1=200,xover2=4000,rq=0.5,logain=1.0,midgain=1.0,higain=1.0;

    var lo,hi,mid;

    lo = RLPF.ar( audio, xover1,rq,logain);
    mid = RBPF.ar( audio, xover1,xover2,rq, midgain);
    hi = HPF.ar( audio, xover2,higain);

    [ lo,mid, hi]

    },[
    \audio,
    [200,3000,\exponential],
    [3000,9000,\exponential],

    \rq,
    [0.0,2.0],
    [0.0,2.0],
    [0.0,2.0]

    ],
    MultiTrackAudioSpec(3,2)
    );


    // cant modulate the low band without ugly little noise
    Instr([\splits,\xover3,\rrbpf],{ arg audio=0.0,xover1=200,xover2=4000,rq=0.5,logain=1.0,midgain=1.0,higain=1.0;

    var lo,hi,mid;

    lo = RLPF.ar( audio, xover1,rq,logain);
    mid = RRBPF.ar( audio, xover1,xover2,rq, 0.3,midgain);
    hi = HPF.ar( audio, xover2,higain);

    [ lo,mid, hi]

    },[
    \audio,
    [200,3000,\exponential],
    [3000,9000,\exponential],

    \rq,
    [0.0,2.0],
    [0.0,2.0],
    [0.0,2.0]

    ],
    MultiTrackAudioSpec(3,2)
    );





    Instr("splits.xoverBalancer",{ arg audio,xover=500,lo=1,hi=1;
    var loa;
    loa = LPF.ar(audio,xover);
    Mix.new([loa * lo, audio - loa * hi ])
    },#[
    \audio,
    [100,12000,\exponential]

    ],
    \audio
    );


    // same as \lp
    //Instr([\splits,\xover3,\xover],{ arg audio=0.0,xover1=400,xover2=5000;
    //
    // var lo,hi,mid,midhi;
    //
    // lo = LPF.ar(audio,xover1);
    // midhi = audio - lo;
    // mid = LPF.ar(midhi,xover2);
    // hi = midhi - mid;
    //
    // [ lo,mid, hi]
    //
    //},[
    // \audio,
    // \ffreq,
    // \ffreq,
    //
    // \rq,
    // \rq
    //]);

    /** minuser ?
    Instr([\splits,\xover3,\xoverBalancer],{ arg audio=0.0,xover1=400,xover2=5000,lo=1,mid=1,hi=1;
    var split;
    split = Instr.ar([\splits,\xover3,\minuser],[audio,xover1,xover2]);
    Mix.new([
    split.at(0) * lo,
    split.at(1) * mid,
    split.at(2) * hi
    ])
    },#[
    \audio,
    \ffreq,
    \ffreq,
    \rq,
    \rq,
    [0.0,1.5],
    [0.0,1.5],
    [0.0,1.5]
    ],MultiTrackAudioSpec(3,2));
    **/


    Instr([\splits,\xover3,\resMinuser],{ arg audio=0.0,xover1=400,xover2=5000,rq1=0.5,rq2=0.5;

    var lo,hi,mid,midhi;

    lo = RLPF.ar(audio,xover1,rq1);
    midhi = audio - lo;
    mid = RLPF.ar(midhi,xover2,rq2);
    hi = mid - midhi;

    [ lo,mid, hi]

    },[
    \audio,
    \ffreq,
    \ffreq,

    \rq,
    \rq
    ],MultiTrackAudioSpec(3,2)
    );


    // mixes it back together
    Instr([\splits,\xover3,\resMinuserBalancer],{ arg audio=0.0,xover1=400,xover2=5000,rq1=0.5,rq2=0.5,lo=1,mid=1,hi=1;
    var split;
    split = Instr.ar([\splits,\xover3,\resMinuser],[audio,xover1,xover2,rq1,rq2]);
    Mix.new([
    split.at(0) * lo,
    split.at(1) * mid,
    split.at(2) * hi
    ])
    },#[
    \audio,
    \ffreq,
    \ffreq,

    \rq,
    \rq,
    [0.0,1.5],
    [0.0,1.5],
    [0.0,1.5]

    ],
    \audio
    );


    /*
    Instr([\splits,\xover3,\res4Minuser],{ arg audio=0.0,xover1=0.3,xover2=0.7,rq1=0.5,rq2=0.5;
    var lo,hi,mid,midhi;
    lo = RLPF4.ar(audio,xover1,rq1);
    midhi = audio - lo;
    mid = RLPF4.ar(midhi,xover2,rq2);
    hi = mid - midhi;
    [ lo,mid, hi]
    },[
    \audio,
    \unipolar,
    \unipolar,
    \rq,
    \rq
    ]);
    Instr([\splits,\xover3,\res4MinuserBalancer],{ arg audio=0.0,xover1=0.3,xover2=0.7,rq1=0.5,rq2=0.5,lo=1,mid=1,hi=1;
    var split;
    split = Instr.ar([\splits,\xover3,\res4Minuser],[audio,xover1,xover2,rq1,rq2]);
    Mix.new([
    split.at(0) * lo,
    split.at(1) * mid,
    split.at(2) * hi
    ])
    },#[
    \audio,
    \unipolar,
    \unipolar,
    \rq,
    \rq,
    [0.0,1.5],
    [0.0,1.5],
    [0.0,1.5]
    ]);
    */




    Instr([\splits,\xover3,\resMinuserBouncer],{ arg audio=0.0,xover1=400,xover2=5000,rq1=0.5,rq2=0.5,lobounce=500;

    var lo,hi,mid,midhi,bounce;
    bounce = Amplitude.kr(audio,0.05,0.2,mul: lobounce);
    lo = RLPF.ar(audio,xover1 + bounce,rq1);
    midhi = audio - lo;
    mid = RLPF.ar(midhi,xover2,rq2);
    hi = mid - midhi;

    [ lo,mid, hi]

    },[
    \audio,
    \ffreq,
    \ffreq,

    \rq,
    \rq
    ],
    MultiTrackAudioSpec(3,2)

    );




    Instr([\splits,\xover3,\resMinuserBouncerBalancer],{ arg audio=0.0,xover1=400,xover2=5000,rq1=0.5,rq2=0.5,lo=1,mid=1,hi=1,bounce=500;
    var split;
    split = Instr.ar([\splits,\xover3,\resMinuserBouncer],[audio,xover1,xover2,rq1,rq2,bounce]);
    Mix.new([
    split.at(0) * lo,
    split.at(1) * mid,
    split.at(2) * hi
    ])
    },#[
    \audio,
    \ffreq,
    \ffreq,

    \rq,
    \rq,
    [0.0,1.5],
    [0.0,1.5],
    [0.0,1.5],
    [0.1,6000,\exponential]

    ],
    \audio
    );


    /*
    Instr([\splits,\fft],{ arg audio=0.0;
    var fft,r,i;
    fft = FFT.ar(1024,0,nil,nil,nil,audio);
    r = fft.collect({ arg c; c.real });
    i = fft.collect({ arg c; c.imag });
    [
    IFFT.ar(256,0,nil,nil,nil,r.copyRange(0,255),i.copyRange(0,255)),
    IFFT.ar(256,0,nil,nil,nil,r.copyRange(256,511),i.copyRange(256,511)),
    IFFT.ar(256,0,nil,nil,nil,r.copyRange(512,767),i.copyRange(512,767)),
    IFFT.ar(256,0,nil,nil,nil,r.copyRange(768,1023),i.copyRange(768,1023))
    ]
    });
    */

    //
    //
    //
    //Instr([\splits,\fftBalance],{ arg audio=0.0,lo=1,lomid=1,himid=1,hi=1;
    //
    // var fft,r,i;
    // fft = FFT.ar(1024,0,nil,nil,nil,audio);
    // r = fft.collect({ arg c; c.real });
    // i = fft.collect({ arg c; c.imag });
    //Mix.new([
    // IFFT.ar(256,0,nil,nil,nil,r.copyRange(0,255),i.copyRange(0,255)) * lo,
    // IFFT.ar(256,0,nil,nil,nil,r.copyRange(256,511),i.copyRange(256,511)) * lomid,
    // IFFT.ar(256,0,nil,nil,nil,r.copyRange(512,767),i.copyRange(512,767)) * himid,
    // IFFT.ar(256,0,nil,nil,nil,r.copyRange(768,1023),i.copyRange(768,1023)) * hi
    //])
    //
    //});


    // yeah !!!!!! viscious !
    Instr("splits.bySlew",{ arg audio=0.0,freq=300;

    var slewed,rest;
    slewed = Slew.ar(audio,freq,freq);
    rest = audio - slewed;

    [ rest,slewed]
    },#[
    \audio,
    \freq
    ],
    MultiTrackAudioSpec(2)
    );