Enveloping

this tutorial explains how to use the maxiEnv

var audio = new maximJs.maxiAudio();
audio.init();

var sound1 = new maximJs.maxiSample();

var snarePhase = new maximJs.maxiOsc();
var timer = new maximJs.maxiOsc();

var envelope = new maximJs.maxiEnv();
var currentCount = 0,lastCount = 0,playHead = 0;

var sequence = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; //This is the sequence for the kick


var sampleTrigger = 0;
var sampleOut = 0;


audio.outputIsArray(true, 2);
audio.loadSample('audio/kick1.wav', sound1);


audio.play = function(){
	if(sound1.isReady()){
	currentCount=Math.floor(timer.phasor(8));//this sets up a metronome that ticks 8 times a second
	
	
	if (lastCount!=currentCount) {//if we have a new timer int this sample, play the sound
		
		sampleTrigger=sequence[playHead%16];
		playHead++;//iterate the playhead
		lastCount=0;//reset the metrotest

	}
	
	//the envelope we're using here is an AR envelope.
	//It has an input (which in this case is a sound)
	//It has an attack coefficient, a hold val (in samples)
	//and a release coefficient. Finally, it has a trigger input.
	//If you stick a 1 in the trigger input, it retriggers the envelope
	sampleOut=envelope.ar(sound1.play(1.), 0.1, 0.9999, 1, sampleTrigger); //

	this.output[0]=sampleOut;//left channel
	this.output[1]=sampleOut;//right channel
	
	sampleTrigger = 0;//set trigger to 0 at the end of each sample to guarantee retriggering.
}
}