Mixing Example

var myCounter = new maximJs.maxiOsc();
var mySwitchableOsc = new maximJs.maxiOsc();
var myAutoPanner = new maximJs.maxiOsc();

var currentCount;
var myOscOutput, myFilteredOutput, myPanPosition;

var myStereoOutput = GetArrayAsVectorDbl([0,0]);// we need an output for each channel. 

var myEnvelopeData = GetArrayAsVectorDbl([500,0,1000,500,0,500]);//this data will be used to make an envelope. Value and time to value in ms.

var myEnvelope = new maximJs.maxiEnvelope();
var myFilter = new maximJs.maxiFilter();
var myOutputs = new maximJs.maxiMix();


function setup(){
	myEnvelope.amplitude=myEnvelopeData.get(0); //initialise the envelope

	// change output to an array
	// setNumOutputChannels(2);
	OutputIsArray(true, 2);
}

function play(){

	CurrentCount=Math.floor(myCounter.phasor(1, 1, 9));//phasor can take three arguments; frequency, start value and end value.
	
	if (CurrentCount<5){//simple if statement
		myOscOutput=mySwitchableOsc.square(CurrentCount*100);
	}
	else if (CurrentCount>=5){//and the 'else' bit.
		myOscOutput=mySwitchableOsc.saw(CurrentCount*50);//one osc object can produce whichever waveform you want. 
}
if (CurrentCount==1) {
		myEnvelope.trigger(0,myEnvelopeData.get(0)); //trigger the envelope
	}
	myFilteredOutput=myFilter.lores(myOscOutput,(myEnvelope.line(6, myEnvelopeData)),10);//lores takes an audio input, a frequency and a resonance factor (1-100)
	
	myPanPosition=myAutoPanner.sinewave(1);
	
	myOutputs.stereo(myFilteredOutput,myStereoOutput,myPanPosition);//Stereo, Quad or 8 Channel. Specify the input to be mixed, the output[numberofchannels], and the pan (0-1,equal power).	
	
	output[0]=myStereoOutput.get(0);//When working with mixing, you need to specify the outputs explicityly
	output[1]=myStereoOutput.get(1);//
}