input.freq = 0; // min=0, max=12, step=1
synth.def( class {
constructor (options) {
this.phase = 0;
this.phase2 = 0;
this.last = 0;
this.last2 = 0;
}
process(note, env, tick, options) {
const lerp = function(a,b,f){ return a*(1-f)+b*f; }
const notes = [1,2,4,3];
var l = notes.length;
var key = notes[((tick*0.125)|0)%l];
var f = input.freq * 50 + notes[((tick*2)|0)%l]*100;
var f2 = input.freq * 50 + notes[((tick*4)|0)%l]*50 + (key-1)*50;
this.phase += ditty.dt * f;
this.phase2 += ditty.dt * f2;
var wave = (( this.phase )%1) > 0.5 ? 1 : 0;
var wave2 = (( this.phase2 )%1) > 0.5 ? 1 : 0;
wave = lerp(this.last,wave,Math.cos(tick*0.125)*0.25+0.5);
wave2 = lerp(this.last2,wave2,Math.sin(tick*0.125)*0.25+0.5);
this.last = wave;
this.last2 = wave2;
return ((tick*5)%1) > 0.5 ? [wave, wave2] : [wave2, wave]; // left, right
}
}).play(0, { env: one} );