s = Server.internal.boot; FreqScope.new; // First order FIR filter (6dB/oct rolloff) { OneZero.ar(WhiteNoise.ar(0.5), MouseX.kr(-0.5, 0.5)) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2) }.play(s); // making a second order FIR filter out of two one zero sections (12 db/oct rolloff) ( { var coeff; coeff = MouseX.kr(-0.5, 0.5); OneZero.ar(OneZero.ar(WhiteNoise.ar(0.5), coeff), coeff) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2); }.play(s); ) // same but using the TwoZero UGen, now moving the valley around { TwoZero.ar(WhiteNoise.ar(0.5), MouseX.kr(1e2,2e4,1), 1.0, 0.4) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2) }.play(s); // One pole filter (6dB/oct rolloff) { OnePole.ar(WhiteNoise.ar(0.5), MouseX.kr(-0.99, 0.99)) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2)}.play(s); // making a second order IIR filter out of two one pole sections (12 db/oct rolloff) ( { var coeff; coeff = MouseX.kr(-0.99, 0.99); OnePole.ar(OnePole.ar(WhiteNoise.ar(0.5), coeff), coeff) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2); }.play(s); ) // same but using the TwoPole UGen, moving peak around { TwoPole.ar(WhiteNoise.ar(0.05), MouseX.kr(5e2, 1e4, 1), 0.99, 0.4) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2) }.play(s); // Second order filters, Butterworth family // Lowpass { LPF.ar(WhiteNoise.ar, 1000, 0.2) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2) }.play(s); // Highpass { HPF.ar(WhiteNoise.ar, 1000, 0.2) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2) }.play(s); // Band pass { BPF.ar(WhiteNoise.ar, 1000, MouseY.kr(0.01,0.7), 0.4) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2) }.play(s); // Band reject { BRF.ar(WhiteNoise.ar, 1000, MouseY.kr(0.01,0.7), 0.2) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2) }.play(s); // Two pole - two zero resonant filter with consntant gain // Resonz { Resonz.ar(WhiteNoise.ar, MouseX.kr(1e2,2e4,1), MouseY.kr(0.01,0.7), 0.2) * EnvGen.kr(Env([0, 1, 1, 0],[0.1, 12, 0.1]), doneAction: 2) }.play(s); // Building custom filters out of first and second order sections, take a look at the help files of: // FOS (first order section) // SOS (second order section) // a0 is the input gain of the filter (scaling for current sample) // a1 is the first feed-forward coefficient (scaling for first delayed sample in the input) // b1 is the first feedback coefficient (scaling for first delayed sample in the output) // a2 is the second feed-forward coefficient (scaling for second delayed sample in the input) // b2 is the second feedback coefficient (scaling for second delayed sample in the output)