var audio = new maximJs.maxiAudio(); audio.init(); var a = new maximJs.maxiOsc(); var xs = [0,0,0], ys = [0,0,0]; var a0, a1, a2, b0, b1, b2; var f0 = 400; //THE FREQUENCY var Q = 1.0; var mySwitchableOsc = new maximJs.maxiOsc(); var cos = Math.cos; var w0 = 2*Math.PI*f0/44100; var alpha = Math.sin(w0)/(2*Q); // Band-pass reson: // b0 = alpha; // b1 = 0; // b2 = -1 * alpha; // a0 = 1 + alpha; // a1 = -2*cos(w0); // a2 = 1 - alpha; //Notch: b0 = 1; b1 = -2*cos(w0); b2 = 1; a0 = 1 + alpha; a1 = -2*cos(w0); a2 = 1 - alpha; //LPF: // b0 = (1 - cos(w0))/2; // b1 = 1 - cos(w0); // b2 = (1 - cos(w0))/2; // a0 = 1 + alpha; // a1 = -2*cos(w0); // a2 = 1 - alpha; audio.play = function() {//this is where the magic happens. Very slow magic. xs[0] = mySwitchableOsc.sawn(400); ys[0] = (b0/a0)*xs[0] + (b1/a0)*xs[1] + (b2/a0)*xs[2] - (a1/a0)*ys[1] - (a2/a0)*ys[2]; this.output = ys[0]; ys[2] = ys[1]; ys[1] = ys[0]; xs[2] = xs[1]; xs[1] = xs[0]; }