le()

	var freq = FREQ*2**((pitch-PITCH_BIAS)/48);
	var samples = Math.ceil(audio.sampleRate * soundLength);
	
	var bufflen = buffer.length * 8;
	var audioBuffer = new Float32Array(samples);

	var step = freq / audio.sampleRate;
	var pos = sampleState.pos;

	// keep super-sampling consistent with audio sample rate
	var quality = Math.ceil( 384000 / audio.sampleRate );
	var lowPassAlpha = getLowPassAlpha(audio.sampleRate * quality);
	
	for(var i = 0, il = samples; i < il; i++) {
		for (var j = 0; j < quality