changeset 46:43edc8abe2a7

Fixed bug in complex update due to mismatch between ms and vector units
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Sun, 05 Feb 2012 19:40:21 +0000
parents 90ad1817ca56
children 1726189a6317
files jnmr/BayesianArrayStructure.cpp jnmr/BayesianArrayStructure.h jnmr/DynamicVector.cpp jnmr/DynamicVector.h jnmr/midiEventHolder.cpp jnmr/midiEventHolder.h jnmr/testApp.cpp maxPatchToPlayFiles/playMidiTranscription7.maxpat
diffstat 8 files changed, 945 insertions(+), 797 deletions(-) [+]
line wrap: on
line diff
--- a/jnmr/BayesianArrayStructure.cpp	Sun Feb 05 10:00:34 2012 +0000
+++ b/jnmr/BayesianArrayStructure.cpp	Sun Feb 05 19:40:21 2012 +0000
@@ -13,7 +13,7 @@
 #include "BayesianArrayStructure.h"
 
 BayesianArrayStructure::BayesianArrayStructure(){
-	printf("Bayesian structure: DeFault constructor called");
+	printf("Bayesian structure: DeFault constructor called\n");
 	usingIntegratedTempoEstimate = true;// use max index
 	
 	relativeSpeedLikelihoodStdDev = 5.0;
@@ -28,14 +28,14 @@
 	
 	lastEventTime = 0;//ofGetElapsedTimeMillis();
 
-	tmpBestEstimate = 0;
+	//tmpBestEstimate = 0;
 	crossUpdateTimeThreshold = 60;
 	priorWidth = 50;
 	
 }
 
 BayesianArrayStructure::BayesianArrayStructure(int length){
-	printf("BAYESIAN STURTUCRE CREATED LENGTH: %i\n", length);
+	printf("BAYESIAN STURTUCRE CREATED LENGTH (EVER CALLED?????): %i\n", length);
 	//this constructor isnt called  it seems
 	prior.createVector(length);
 	likelihood.createVector(length);
@@ -67,18 +67,20 @@
 	relativeSpeedLikelihood.zero();
 	
 	
-	relativeSpeedPosterior.addGaussianShape(100, 20, 0.8);
+	relativeSpeedPosterior.addGaussianShapeFromRealTime(1.0, 0.2, 0.8);
 	relativeSpeedPosterior.renormalise();
 	relativeSpeedPosterior.getMaximum();
 	
 	setSpeedPrior(speedPriorValue);
 	speedEstimate = speedPriorValue;
 	
+	
+	
 	prior.zero();
 	posterior.zero();
 
-	posterior.addToIndex(0, 1);
-	posterior.renormalise();
+//	posterior.addToIndex(0, 1);
+//	posterior.renormalise();
 	
 
 	//acceleration.addGaussianShape(2000, 20, 0.8);
@@ -118,6 +120,7 @@
 
 void BayesianArrayStructure::setPositionDistributionScalar(double f){
 	if (f > 0){
+	printf("Setting the scalar for time scale to be %f ms\n", f);
 	prior.scalar = f;
 	posterior.scalar = f;
 	likelihood.scalar = f;
@@ -159,20 +162,21 @@
 	updateCounter = 0;
 	
 	posterior.offset = -1000;
-	setNewDistributionOffsets(0);
+	setNewDistributionOffsets(posterior.offset);
 	
 	int zeroIndex = posterior.getRealTermsAsIndex(0);
-	
-	posterior.addGaussianShape(zeroIndex, 500, 1);
+	posterior.addGaussianShapeFromRealTime(0, 500, 1);
 	//	posterior.addToIndex(0, 1);
 	likelihood.addConstant(1);
 	
 	updateCounter = 0;
+	posterior.getMaximum();
+	bestEstimate = posterior.getRealTermsAsIndex(0);
 	
-
-	printf("bayes reset arrays - best estimate %f\n", lastBestEstimateUpdateTime);
+	printf("bayes reset arrays - best estimate time %f\n", lastBestEstimateUpdateTime);
 	
 	setSpeedPrior(speedPriorValue);
+	//posterior.printArray();
 }
 
 
@@ -187,7 +191,7 @@
 
 }
 
-
+/*
 void BayesianArrayStructure::updateTmpBestEstimate(const double& timeDifference){
 	//input is the time since the start of playing
 //	double timeDiff = ofGetElapsedTimeMillis() - lastEventTime;//lastBestEstimateUpdateTime;
@@ -196,11 +200,12 @@
 		timeDiff = ofGetElapsedTimeMillis() - lastBestEstimateUpdateTime;
 
 	double tmp = relativeSpeedPosterior.getIntegratedEstimate();
-	tmpBestEstimate = posterior.getIndexInRealTerms(posterior.MAPestimate) + timeDiff*relativeSpeedPosterior.getIndexInRealTerms(relativeSpeedPosterior.integratedEstimate);
+	tmpBestEstimate = posterior.getIndexInRealTerms(posterior.MAPestimate) + timeDiff*relativeSpeedPosterior.getIndexInRealTerms(getSpeedEstimateIndex());
 	// 
 	//printf("tmp best %f and best %f time diff %f posterior MAP %f at speed %f\n", 0Estimate, bestEstimate, timeDifference, posterior.getIndexInRealTerms(posterior.MAPestimate), relativeSpeedPosterior.getIndexInRealTerms(relativeSpeedPosterior.integratedEstimate));
 	//lastBestEstimateUpdateTime = ofGetElapsedTimeMillis();
 }
+ */
 	
 void BayesianArrayStructure::updateBestEstimate(const double& timeDifference){
 //	double timeDiff = ofGetElapsedTimeMillis() - lastEventTime;//
@@ -214,11 +219,13 @@
 	
 	//lastbest is time we started playing
 	
+	speedEstimateIndex = getSpeedEstimateIndex();
+	/*
 	if (usingIntegratedTempoEstimate)
 		speedEstimateIndex = relativeSpeedPosterior.getIntegratedEstimate();
 	else
 		speedEstimateIndex = relativeSpeedPosterior.MAPestimate;
-	
+	*/
 	speedEstimate = relativeSpeedPosterior.getIndexInRealTerms(speedEstimateIndex);
 	bestEstimate = posterior.getIndexInRealTerms(posterior.MAPestimate) + timeDiff*speedEstimate;
 	
@@ -252,16 +259,15 @@
 
 void BayesianArrayStructure::crossUpdateArrays(DynamicVector& position, DynamicVector& speed, double timeDifference){
 	//set the cutoff for offset of position first! XXX
-	
-//	printf("time difference %f, ", timeDifference);
+
 	
 	double timeDifferenceInPositionVectorUnits = timeDifference / prior.scalar;
-	
+	printf("CCUPDATE time difference %f in units %f\n", timeDifference, timeDifferenceInPositionVectorUnits);
 
 	prior.zero();//kill prior
-	calculateNewPriorOffset(timeDifference);//set new prior offset here
+	//calculateNewPriorOffset(timeDifference);//doesnt do anything
 	
-	if (timeDifferenceInPositionVectorUnits > crossUpdateTimeThreshold)
+	if (timeDifferenceInPositionVectorUnits > (crossUpdateTimeThreshold/prior.scalar))
 		complexCrossUpdate(timeDifferenceInPositionVectorUnits);
 	else
 		translateByMaximumSpeed(timeDifferenceInPositionVectorUnits);	
@@ -273,7 +279,10 @@
 }
 
 void BayesianArrayStructure::complexCrossUpdate(const double& timeDifferenceInPositionVectorUnits){
+	//distance moved is in vector units - but offsets are in millis. need to find first index
+	
 	int distanceMoved, newPriorIndex;
+//	printf("post off %f prior off %f\n", posterior.offset, prior.offset);
 	
 	double speedValue = relativeSpeedPosterior.offset;
 	
@@ -286,9 +295,13 @@
 	
 		if (relativeSpeedPosterior.array[i] != 0){
 			double speedContribution = relativeSpeedPosterior.array[i];
-			//	printf("speed [%i] gives %f moved %i in %f units \n", i, speedValue, distanceMoved, timeDifferenceInPositionVectorUnits);
 			
-			newPriorIndex = posterior.offset - prior.offset + distanceMoved;
+			newPriorIndex = (int)(posterior.millisToVectorUnits(posterior.offset - prior.offset)) + distanceMoved;
+			
+	//		printf("speed [%i] gives %f moved %i in %f units :: %f contributed new ptior %i\n", 
+	//			   i, speedValue, distanceMoved, timeDifferenceInPositionVectorUnits, speedContribution, newPriorIndex);
+			
+			
 			
 			for (int postIndex = 0;postIndex < posterior.arraySize;postIndex++){
 				//old posterior contributing to new prior
@@ -310,22 +323,28 @@
 	}//end speed
 }
 
+double  BayesianArrayStructure::getSpeedEstimateIndex(){
+	if (usingIntegratedTempoEstimate)
+		return relativeSpeedPosterior.getIntegratedEstimate();
+	else
+		return relativeSpeedPosterior.getMAPestimate();
+}
 
 
 void BayesianArrayStructure::translateByMaximumSpeed(const double& timeDifferenceInPositionVectorUnits){
 
 	int distanceMoved, newPriorIndex;
 	
-	double speedValue = relativeSpeedPosterior.getIndexInRealTerms(relativeSpeedPosterior.integratedEstimate);
+	double speedValue = relativeSpeedPosterior.getIndexInRealTerms(getSpeedEstimateIndex());
 	//so for scalar 0.01, 50 -> speed value of 0.5
-	double speedContribution = relativeSpeedPosterior.array[relativeSpeedPosterior.integratedEstimate];
+	double speedContribution = relativeSpeedPosterior.array[(int)getSpeedEstimateIndex()];//relativeSpeedPosterior.integratedEstimate
 		//so we have moved 
 		distanceMoved = round(timeDifferenceInPositionVectorUnits * speedValue);//round the value
 					//	printf("speed [%i] gives %f moved %i in %f units \n", i, speedValue, distanceMoved, timeDifferenceInPositionVectorUnits);
 			
 			for (int postIndex = 0;postIndex < posterior.arraySize;postIndex++){
 				//old posterior contributing to new prior
-				newPriorIndex = postIndex + posterior.offset - prior.offset + distanceMoved;
+				newPriorIndex = (int)(posterior.millisToVectorUnits(posterior.offset - prior.offset)) + postIndex + distanceMoved;
 				if (newPriorIndex >= 0 && newPriorIndex < prior.arraySize){
 					prior.addToIndex(newPriorIndex, posterior.array[postIndex]*speedContribution);
 				}
@@ -359,7 +378,7 @@
 	
 	relativeSpeedPosterior.copyFromDynamicVector(tmpPosteriorForStorage);											
 }
-
+/*
 void BayesianArrayStructure::calculateNewPriorOffset(const double& timeDifference){
 	
 	double maxSpeed = relativeSpeedPosterior.getIndexInRealTerms(relativeSpeedPosterior.integratedEstimate);
@@ -371,7 +390,7 @@
 	//	printf("MAP: %i, tim df %f, distance %f, new location %f\n", posterior.MAPestimate, timeDifference, distanceTravelled, newMaxLocation);
 	
 }
-
+*/
 
 void BayesianArrayStructure::decaySpeedDistribution(double timeDifference){
 	
@@ -542,7 +561,7 @@
 	likelihood.drawConstrainedVector(startArrayIndex, endArrayIndex, startScreenPosition, endScreenPosition);
 
 //	ofSetColor(0,0,200);
-	ofSetColor(170,170,170);//00,200);
+	ofSetColor(230,0,170);//00,200);
 	prior.drawConstrainedVector(startArrayIndex, endArrayIndex, startScreenPosition, endScreenPosition);
 		
 		ofSetColor(0,0,150);	
--- a/jnmr/BayesianArrayStructure.h	Sun Feb 05 10:00:34 2012 +0000
+++ b/jnmr/BayesianArrayStructure.h	Sun Feb 05 19:40:21 2012 +0000
@@ -54,7 +54,7 @@
 	DynamicVector acceleration;
 	
 	double tmpBestEstimate;
-	void updateTmpBestEstimate(const double& timeDifference);
+//	void updateTmpBestEstimate(const double& timeDifference); DELETE
 	
 	int updateCounter;
 	
@@ -68,6 +68,7 @@
 	void updateBestEstimate(const double& timeDifference);
 	double lastBestEstimateUpdateTime;
 	double speedEstimate, speedEstimateIndex;
+	double getSpeedEstimateIndex();
 	
 	double speedDecayWidth, speedDecayAmount;
 	void decaySpeedDistribution(double timeDifference);
@@ -75,7 +76,7 @@
 	void resetSpeedSize(int length);
 	void setRelativeSpeedScalar(double f);
 	void setSpeedPrior(double f);
-	void calculateNewPriorOffset(const double& timeDifference);
+	//void calculateNewPriorOffset(const double& timeDifference);
 	void setNewDistributionOffsets(const double& newOffset);
 	
 	void setLikelihoodToConstant();
--- a/jnmr/DynamicVector.cpp	Sun Feb 05 10:00:34 2012 +0000
+++ b/jnmr/DynamicVector.cpp	Sun Feb 05 19:40:21 2012 +0000
@@ -47,6 +47,8 @@
 	length = len;
 	arraySize = array.size();
 	integratedEstimate = length/2;
+	MAPestimate = length/2;
+	printf("array size is %i\n", arraySize);
 }
 
 
@@ -63,6 +65,19 @@
 	return max;
 }
 
+int DynamicVector::getMAPestimate(){
+	int i;
+	double max = 0;
+	for (i=0;i < length;i++){	
+		if (array[i] > max){
+			max = array[i];
+			MAPestimate = i;
+		}
+	}
+	maximumValue = max;
+	return MAPestimate;
+}
+
 double DynamicVector::getIntegratedEstimate(){
 	//returns the index of the integrated average - where the probability distribution is centred
 	integratedEstimate = 0;
@@ -139,6 +154,7 @@
 	for (int i = 0;i < arraySize;i++){
 		printf("[%i] = %f\n", i, array[i]);
 	}
+	printf("Offset %f map estimate %i == %f ms\n", offset, MAPestimate, getIndexInRealTerms(MAPestimate));
 }
 
 void DynamicVector::translateDistribution(int translationIndex){
@@ -159,7 +175,7 @@
 }
 
 void DynamicVector::addGaussianShape(const double& mean, const double& StdDev, double factor){
-	
+	//USES THE INDICES OF THE MATRIX AS MEAN AND STD DEV
 	int i;
 	double std_dev_factor = (2*StdDev*StdDev);
 	factor *= (1/(StdDev*sqrt(2*PI)));
@@ -175,14 +191,16 @@
 
 
 void DynamicVector::addGaussianShapeFromRealTime(const double& actualTime, const double& StdDev, double factor){
+	//USES THE ACTUAL VALUES IN MS AS MEAN (TIME) AND STD DEV
 	
+	double StdDevAsIndex = StdDev/scalar;
 	double mean = getRealTermsAsIndex(actualTime);
-	printf("Gaussian realtime %f at index %f\n", actualTime, mean);
+//	printf("Gaussian realtime %f at index %f std dev %f in index %f \n", actualTime, mean, StdDev, StdDevAsIndex);
 	int i;
-	double std_dev_factor = (2*StdDev*StdDev);
-	factor *= (1/(StdDev*sqrt(2*PI)));
-	int maxVal = min((int) array.size(), (int)(mean + 4.8*StdDev));
-	int minVal = max(0, (int)(mean - 4.8*StdDev));
+	double std_dev_factor = (2*StdDevAsIndex*StdDevAsIndex);
+	factor *= (1/(StdDevAsIndex*sqrt(2*PI)));
+	int maxVal = min((int) array.size(), (int)(mean + 4.8*StdDevAsIndex));
+	int minVal = max(0, (int)(mean - 4.8*StdDevAsIndex));
 	
 	for (i=minVal;i < maxVal;i++){
 		array[i] += factor*exp(-1*(i-mean)*(i-mean)/(std_dev_factor));
@@ -254,6 +272,10 @@
 	
 }
 
+double DynamicVector::millisToVectorUnits(const double& millis){
+	return millis/scalar;
+}
+
 double DynamicVector::getValueAtMillis(const double& millis){
 	
 	int index = round(getRealTermsAsIndex(millis));
--- a/jnmr/DynamicVector.h	Sun Feb 05 10:00:34 2012 +0000
+++ b/jnmr/DynamicVector.h	Sun Feb 05 19:40:21 2012 +0000
@@ -26,6 +26,8 @@
 	typedef std::vector<double> DoubleVector;
 	DoubleVector array;
 	double getMaximum();
+	int getMAPestimate();
+	
 	double getIntegratedEstimate();
 	double getLookupIndex(const int& i, const double& mean, const double& StdDev);
 	void addGaussianShapeByLookupTable(double& mean, double& StdDev, double factor);
@@ -50,6 +52,7 @@
 	double getIndexInRealTerms(const int& index);
 	double getRealTermsAsIndex(double value);
 	double getValueAtMillis(const double& millis);
+	double millisToVectorUnits(const double& millis);
 	
 	void printArray();
 	void zero();
--- a/jnmr/midiEventHolder.cpp	Sun Feb 05 10:00:34 2012 +0000
+++ b/jnmr/midiEventHolder.cpp	Sun Feb 05 19:40:21 2012 +0000
@@ -10,6 +10,12 @@
 
 //Main file to look at here is newNoteEvent() - this calls everything else to update the Bayesian array
 
+//Relative speed is RECORDED / PLAYED
+//so for timedifference t
+//this is t/scalar in terms of position units of played time
+//and by relative speed r, r*t/scalar
+
+
 #include "midiEventHolder.h"
 
 #include <iostream>
@@ -19,6 +25,7 @@
 midiEventHolder::midiEventHolder(){
 	
 
+	double scalarForPositionVectors = 20;
 	
 //	recordedNoteOnIndex = 0;
 	alignmentPosition = 0;
@@ -68,9 +75,10 @@
 	
 	speedPriorValue = 1.0;
 	
-	
-	bayesStruct.resetSize(matchWindowWidth);
-	bayesStruct.setPositionDistributionScalar(1);
+	int tmpArraySize = (int)(matchWindowWidth/scalarForPositionVectors);
+	bayesStruct.resetSize(tmpArraySize);
+	bayesStruct.setPositionDistributionScalar(scalarForPositionVectors);
+	printf("ARRAY SIZE IS %i\n", tmpArraySize);
 	
 	bayesStruct.resetSpeedSize(200);
 	bayesStruct.setRelativeSpeedScalar(0.01);
@@ -129,14 +137,14 @@
 //	lastSmoothUpdateTime = getTimeNow(0);
 	
 	printf("reset speed prior is %f\n", speedPriorValue);
-	bayesStruct.resetSpeedToOne();
+//	bayesStruct.resetSpeedToOne();
 	bayesStruct.setSpeedPrior(speedPriorValue);
 	setMatchedNotesBackToFalse();
 
-	periodCounter = 0;
-	for (int i = 0;i < periodValues.size();i++){
+//	periodCounter = 0;
+//	for (int i = 0;i < periodValues.size();i++){
 	//	printf("period at %f is %f\n", periodValues[i][2], periodValues[i][1]);
-	}
+//	}
 /*	if (periodValues.size() > 0){
 		updatePeriodValue(0);// periodValues[0][2];
 		printf("Resetting period to %f , size is %i\n", period,  (int)periodValues.size());
@@ -189,7 +197,7 @@
 
 void midiEventHolder::newNoteOnEvent(int pitch, int velocity, double timePlayed){
 //	tempoSpeedString = "";
-	
+
 	//MOVE INTO BAYESSTRUCT?? XXX
 	//bayesStruct.copyPriorToPosterior();
 	//why was this here??
@@ -252,8 +260,8 @@
 	//then we recalculate the window start based on MAP being central
 	//then we do the matches on these and the likelihood on these.
 	
-	bayesStruct.setNewDistributionOffsets(max(0., bayesStruct.bestEstimate - (bayesStruct.prior.scalar*bayesStruct.prior.arraySize/2)));
-//	bayesStruct.prior.offset = max(0.,newMAPestimateTime - (bayesStruct.prior.scalar*bayesStruct.prior.arraySize/2));
+	bayesStruct.setNewDistributionOffsets(max(bayesStruct.posterior.offset, bayesStruct.bestEstimate - (bayesStruct.prior.scalar*bayesStruct.prior.arraySize/2)));
+	//bayesStruct.setNewDistributionOffsets(max(0.,newMAPestimateTime - (bayesStruct.prior.scalar*bayesStruct.prior.arraySize/2));
 	
 	timeString += " \n :  new offset " + ofToString(bayesStruct.prior.offset , 0);
 	timeString += " \n best estimate "+ofToString(bayesStruct.bestEstimate, 1);
@@ -271,7 +279,8 @@
 	timeString += " notearrayindex "+ofToString(noteArrayIndex, 0);
 	//when this is off teh screen there is a problem somehow XXX
 	
-	bayesStruct.posterior.offset = max(0., bayesStruct.bestEstimate - (bayesStruct.prior.scalar*bayesStruct.prior.arraySize/2));//	bayesStruct.prior.offset = max(0., bayesStruct.bestEstimate - (bayesStruct.prior.scalar*bayesStruct.prior.arraySize/2));
+	bayesStruct.posterior.offset = bayesStruct.prior.offset;
+	//max(0., bayesStruct.bestEstimate - (bayesStruct.prior.scalar*bayesStruct.prior.arraySize/2));//	bayesStruct.prior.offset = max(0., bayesStruct.bestEstimate - (bayesStruct.prior.scalar*bayesStruct.prior.arraySize/2));
 
 	//trying to switch to prior
 	
@@ -289,6 +298,7 @@
 	//calcuateNewInterNoteIntervals();
 	}
 	
+
 	//storedSmoothPlayPosition = smoothPlayPosition;
 	 
 }
@@ -342,7 +352,7 @@
 	for (int i = 0;i < numberOfMatches && matchesFound[i] >= 0 && matchesFound[i] < recordedEventTimes.size();i++){
 	//	printf("match times %i of %i::%f adding likelihood to %f\n", i, numberOfMatches, recordedEventTimes[matchesFound[i]], recordedEventTimes[matchesFound[i]] - bayesStruct.likelihood.offset);
 		//this is the vent time since start of file
-		if (recordedEventTimes[matchesFound[i]] - bayesStruct.likelihood.offset < bayesStruct.likelihood.arraySize){
+		if (recordedEventTimes[matchesFound[i]] - bayesStruct.likelihood.offset < bayesStruct.likelihood.arraySize*bayesStruct.likelihood.scalar){
 	//		double confidenceMeasure = 0;
 	//		if (totalConfidence > 0)
 	//			confidenceMeasure =	bayesStruct.posterior.getValueAtMillis(recordedEventTimes[matchesFound[i]])/totalConfidence;
@@ -678,12 +688,12 @@
 		if (recordedTimeDifference > minimumTimeIntervalForTempoUpdate
 			&& speedRatio < maximumMatchSpeed && speedRatio > minimumMatchSpeed){
 			
-			/*		 printf("(%i)", previousIndex);
+		/*	 printf("(%i)", previousIndex);
 			 printf("[%i] :: ", recordedPreviousIndex);
 			 //	printf(" conf %f & %f ", currentMatchConfidence, previousMatchConfidence);
 			 printf(" rec{%f} vs play(%f) ", recordedTimeDifference, playedTimeDifference);
 			 printf("update on speed ratio %f\n", speedRatio);
-			 */	 
+		*/	 	 
 			//	matchString += " speed: "+ofToString(speedRatio, 3);
 			//	commented for debug
 			
@@ -720,6 +730,7 @@
 	
 	if (needToUpdate)
 		bayesStruct.updateTempoDistribution();
+	
 	//printf("current speed is %f\n", bayesStruct.relativeSpeedPosterior.getIndexInRealTerms(bayesStruct.relativeSpeedPosterior.MAPestimate));
 }
 
@@ -878,24 +889,25 @@
 		
 }
 
-
+/*
 void midiEventHolder::updatePeriodValue(const double& millis){
 
 	double tmp = period;
-/*	
-	while (periodCounter >= 0 && periodCounter < periodValues.size()-1 && periodValues[periodCounter][2] < millis){
-		periodCounter++;
-	}
-	while (periodCounter > 0 && periodValues[periodCounter][2] > millis){
-		periodCounter--;
-	}
- */
+	
+//	while (periodCounter >= 0 && periodCounter < periodValues.size()-1 && periodValues[periodCounter][2] < millis){
+//		periodCounter++;
+//	}
+//	while (periodCounter > 0 && periodValues[periodCounter][2] > millis){
+//		periodCounter--;
+//	}
+ //
 	//period = periodValues[periodCounter][1];
 	
 	if (period != tmp){
 		printf("new period at %f of %f\n", millis, period);
 	}
 }
+*/
 
 void  midiEventHolder::updateNoteCounter(){
 	while (totalNoteCounterIndex < bestMatchIndex){
@@ -907,6 +919,7 @@
 
 
 void midiEventHolder::drawMidiFile(){
+	//ofBackground(80,80,80);
 	
 	//draws midi file on scrolling screen
 	int size = recordedNoteOnMatrix.size();
@@ -1003,8 +1016,8 @@
 	}	
 	
 	//ofDrawBitmapString(ofToString(timeOffsetForScreen, 1), 20,20);
-	
-	//ofDrawBitmapString(timeString, 20, 60);
+	ofSetColor(255,255,255);
+	ofDrawBitmapString(timeString, 20, 60);
 	
 //last played piutch
 	ofSetColor(0,200,0,50);
@@ -1141,24 +1154,24 @@
 	
 }
 
-int midiEventHolder::getLocationFromTicks(double tickPosition){
-	return 0;
+//int midiEventHolder::getLocationFromTicks(double tickPosition){
+//	return 0;
 //	return (int)((float)(tickPosition - numberOfScreensIn*ticksPerScreen)*(*screenWidth)/(float)ticksPerScreen);
 //not used
-}
+//}
 
 int midiEventHolder::getLocationFromMillis(double millisPosition){
 	//(getEventTimeTicks(windowStartTime+matchWindowWidth) - numberOfScreensIn*ticksPerScreen)*(*screenWidth) / (double)ticksPerScreen
 	return (millisPosition - timeOffsetForScreen)*(*screenWidth)/getEventTimeMillis(ticksPerScreen);
 }
 
-
+/*
 void midiEventHolder::exampleCrossUpdate(){
 	
 	bayesStruct.crossUpdateArrays(bayesStruct.posterior, bayesStruct.relativeSpeedPosterior, 200);
 	
 }
-
+*/
 
 void midiEventHolder::setStartPlayingTimes(){
 	startPlayingTime = getTimeNow(0);//ofGetElapsedTimeMillis();
--- a/jnmr/midiEventHolder.h	Sun Feb 05 10:00:34 2012 +0000
+++ b/jnmr/midiEventHolder.h	Sun Feb 05 19:40:21 2012 +0000
@@ -64,7 +64,7 @@
 	double getEventTimeMillis(double ticks);
 	double getEventTimeTicks(double millis);
 	
-	int getLocationFromTicks(double tickPosition);
+//	int getLocationFromTicks(double tickPosition);
 	int getLocationFromMillis(double millisPosition);
 	
 	double getTimeNow(double eventTime);
@@ -133,7 +133,8 @@
 	
 	double recentNoteOnTime;
 	
-	void exampleCrossUpdate();
+//	void exampleCrossUpdate();
+
 	BayesianArrayStructure bayesStruct;
 
 	double speedPriorValue;
@@ -165,8 +166,8 @@
 	void printInterNoteIntervals();
 	int interNoteRange;
 	DoubleMatrix periodValues;
-	int 	periodCounter;
-	void updatePeriodValue(const double& miupdatesllis);
+//	int 	periodCounter;
+//	void updatePeriodValue(const double& miupdatesllis);
 	
 	double smoothPlayPosition;
 //	double storedSmoothPlayPosition;
--- a/jnmr/testApp.cpp	Sun Feb 05 10:00:34 2012 +0000
+++ b/jnmr/testApp.cpp	Sun Feb 05 19:40:21 2012 +0000
@@ -420,7 +420,7 @@
 	
 	if (key == 'c'){
 		double timenow = ofGetElapsedTimeMillis();
-		midiEvents.exampleCrossUpdate();
+		//midiEvents.exampleCrossUpdate();
 		timenow *= -1;
 		timenow += ofGetElapsedTimeMillis();
 		printf("CROSS UPDATE TOOK %f", timenow);
@@ -473,7 +473,8 @@
 	}
 	
 	if (key == 'p'){
-		midiEvents.printNotes();
+		//midiEvents.printNotes();
+		midiEvents.bayesStruct.posterior.printArray();
 	}
 
 	if (key == 'l')
--- a/maxPatchToPlayFiles/playMidiTranscription7.maxpat	Sun Feb 05 10:00:34 2012 +0000
+++ b/maxPatchToPlayFiles/playMidiTranscription7.maxpat	Sun Feb 05 19:40:21 2012 +0000
@@ -1,9 +1,9 @@
 {
 	"patcher" : 	{
 		"fileversion" : 1,
-		"rect" : [ 577.0, 44.0, 1089.0, 872.0 ],
+		"rect" : [ 591.0, 44.0, 1089.0, 872.0 ],
 		"bglocked" : 0,
-		"defrect" : [ 577.0, 44.0, 1089.0, 872.0 ],
+		"defrect" : [ 591.0, 44.0, 1089.0, 872.0 ],
 		"openrect" : [ 0.0, 0.0, 0.0, 0.0 ],
 		"openinpresentation" : 1,
 		"default_fontsize" : 10.0,
@@ -20,32 +20,84 @@
 		"devicewidth" : 0.0,
 		"boxes" : [ 			{
 				"box" : 				{
+					"maxclass" : "newobj",
+					"text" : "loadmess 1",
+					"numinlets" : 1,
+					"fontsize" : 10.0,
+					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-30",
+					"patching_rect" : [ 698.0, 772.0, 68.0, 19.0 ],
+					"fontname" : "Verdana"
+				}
+
+			}
+, 			{
+				"box" : 				{
+					"maxclass" : "toggle",
+					"numinlets" : 1,
+					"numoutlets" : 1,
+					"outlettype" : [ "int" ],
+					"id" : "obj-78",
+					"patching_rect" : [ -90.0, 449.0, 20.0, 20.0 ]
+				}
+
+			}
+, 			{
+				"box" : 				{
+					"maxclass" : "newobj",
+					"text" : "gate",
+					"numinlets" : 2,
+					"fontsize" : 10.0,
+					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-62",
+					"patching_rect" : [ -67.0, 473.0, 33.0, 19.0 ],
+					"fontname" : "Verdana"
+				}
+
+			}
+, 			{
+				"box" : 				{
+					"maxclass" : "newobj",
+					"text" : "print",
+					"numinlets" : 1,
+					"fontsize" : 10.0,
+					"numoutlets" : 0,
+					"id" : "obj-57",
+					"patching_rect" : [ -53.0, 505.0, 34.0, 19.0 ],
+					"fontname" : "Verdana"
+				}
+
+			}
+, 			{
+				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "change this to load your own location of the RWC warped files",
 					"linecount" : 3,
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 578.0, 28.0, 330.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 578.0, 28.0, 330.0, 19.0 ],
+					"id" : "obj-52",
 					"patching_rect" : [ 670.0, 38.0, 150.0, 43.0 ],
-					"presentation" : 1,
-					"id" : "obj-52"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "number",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 438.0, 20.0, 50.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 2,
+					"presentation_rect" : [ 438.0, 20.0, 50.0, 19.0 ],
+					"outlettype" : [ "int", "bang" ],
+					"id" : "obj-56",
 					"patching_rect" : [ 210.0, 89.0, 50.0, 19.0 ],
-					"outlettype" : [ "int", "bang" ],
-					"presentation" : 1,
-					"id" : "obj-56"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -53,27 +105,27 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "/RWCfile $1",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-48",
 					"patching_rect" : [ 869.0, 480.0, 70.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-48"
+					"fontname" : "Verdana"
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "message",
-					"text" : "import \"Macintosh HD:/Users/andrew/Documents/work/MuseScore/RWC/Muller_warp/RM-C007_warped.mid\"",
-					"fontname" : "Verdana",
+					"text" : "import \"Macintosh HD:/Users/andrew/Documents/work/MuseScore/RWC/Muller_warp/RM-C011_warped.mid\"",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-42",
 					"patching_rect" : [ 403.0, 89.0, 568.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-42"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -81,14 +133,14 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "set prior on start",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 327.0, 93.0, 150.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 327.0, 93.0, 150.0, 19.0 ],
+					"id" : "obj-47",
 					"patching_rect" : [ 739.0, 374.0, 150.0, 19.0 ],
-					"presentation" : 1,
-					"id" : "obj-47"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -96,12 +148,12 @@
 				"box" : 				{
 					"maxclass" : "toggle",
 					"numinlets" : 1,
+					"numoutlets" : 1,
 					"presentation_rect" : [ 300.0, 92.0, 20.0, 20.0 ],
-					"numoutlets" : 1,
+					"outlettype" : [ "int" ],
+					"id" : "obj-39",
 					"patching_rect" : [ 712.0, 373.0, 20.0, 20.0 ],
-					"outlettype" : [ "int" ],
-					"presentation" : 1,
-					"id" : "obj-39"
+					"presentation" : 1
 				}
 
 			}
@@ -109,13 +161,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "gate",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-21",
 					"patching_rect" : [ 710.0, 401.0, 33.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-21"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -123,15 +175,15 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "prefix /Users/andrew/Documents/work/MuseScore/RWC/Muller_warp",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
-					"presentation_rect" : [ 571.0, 7.0, 363.0, 17.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 571.0, 7.0, 363.0, 17.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-106",
 					"patching_rect" : [ 478.0, 12.0, 363.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-106"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -139,32 +191,32 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "prepend import",
-					"fontname" : "Arial",
 					"numinlets" : 1,
 					"fontsize" : 11.595187,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-101",
 					"patching_rect" : [ 267.0, 45.0, 86.0, 20.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-101"
+					"fontname" : "Arial"
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "umenu",
+					"prefix" : "Macintosh HD:/Users/andrew/Documents/work/MuseScore/RWC/Muller_warp/",
+					"numinlets" : 1,
+					"fontsize" : 10.0,
+					"autopopulate" : 1,
+					"numoutlets" : 3,
+					"items" : [ "RM-C001_warped.mid", ",", "RM-C002_warped.mid", ",", "RM-C003_warped.mid", ",", "RM-C004_warped.mid", ",", "RM-C005_warped.mid", ",", "RM-C006_warped.mid", ",", "RM-C007_warped.mid", ",", "RM-C008_warped.mid", ",", "RM-C009_warped.mid", ",", "RM-C010_warped.mid", ",", "RM-C011_warped.mid", ",", "RM-C012_warped.mid", ",", "RM-C013_warped.mid", ",", "RM-C014_warped.mid", ",", "RM-C015_warped.mid", ",", "RM-C016_warped.mid", ",", "RM-C017_warped.mid", ",", "RM-C018_warped.mid", ",", "RM-C019_warped.mid", ",", "RM-C020_warped.mid", ",", "RM-C021_warped.mid", ",", "RM-C022_warped.mid", ",", "RM-C023A_warped.mid", ",", "RM-C023B_warped.mid", ",", "RM-C023C_warped.mid", ",", "RM-C023D_warped.mid", ",", "RM-C023E_warped.mid", ",", "RM-C024A_warped.mid", ",", "RM-C024B_warped.mid", ",", "RM-C024C_warped.mid", ",", "RM-C025A_warped.mid", ",", "RM-C025B_warped.mid", ",", "RM-C025C_warped.mid", ",", "RM-C025D_warped.mid", ",", "RM-C026_warped.mid", ",", "RM-C027_warped.mid", ",", "RM-C028_warped.mid", ",", "RM-C029_warped.mid", ",", "RM-C030_warped.mid", ",", "RM-C031_warped.mid", ",", "RM-C032_warped.mid", ",", "RM-C033_warped.mid", ",", "RM-C034_warped.mid", ",", "RM-C035A_warped.mid", ",", "RM-C035B_warped.mid", ",", "RM-C035C_warped.mid", ",", "RM-C036_warped.mid", ",", "RM-C037_warped.mid", ",", "RM-C038_warped.mid", ",", "RM-C039_warped.mid", ",", "RM-C040_warped.mid", ",", "RM-C041_warped.mid", ",", "RM-C042_warped.mid", ",", "RM-C043_warped.mid", ",", "RM-C044_warped.mid", ",", "RM-C045_warped.mid", ",", "RM-C046_warped.mid", ",", "RM-C047_warped.mid", ",", "RM-C048_warped.mid", ",", "RM-C049_warped.mid", ",", "RM-C050_warped.mid" ],
+					"presentation_rect" : [ 267.0, 18.0, 164.0, 18.0 ],
+					"outlettype" : [ "int", "", "" ],
+					"types" : [  ],
+					"id" : "obj-102",
+					"patching_rect" : [ 267.0, 18.0, 164.0, 18.0 ],
 					"fontname" : "Arial",
-					"numinlets" : 1,
-					"presentation_rect" : [ 267.0, 18.0, 164.0, 18.0 ],
-					"fontsize" : 10.0,
-					"items" : [ "RM-C001_warped.mid", ",", "RM-C002_warped.mid", ",", "RM-C003_warped.mid", ",", "RM-C004_warped.mid", ",", "RM-C005_warped.mid", ",", "RM-C006_warped.mid", ",", "RM-C007_warped.mid", ",", "RM-C008_warped.mid", ",", "RM-C009_warped.mid", ",", "RM-C010_warped.mid", ",", "RM-C011_warped.mid", ",", "RM-C012_warped.mid", ",", "RM-C013_warped.mid", ",", "RM-C014_warped.mid", ",", "RM-C015_warped.mid", ",", "RM-C016_warped.mid", ",", "RM-C017_warped.mid", ",", "RM-C018_warped.mid", ",", "RM-C019_warped.mid", ",", "RM-C020_warped.mid", ",", "RM-C021_warped.mid", ",", "RM-C022_warped.mid", ",", "RM-C023A_warped.mid", ",", "RM-C023B_warped.mid", ",", "RM-C023C_warped.mid", ",", "RM-C023D_warped.mid", ",", "RM-C023E_warped.mid", ",", "RM-C024A_warped.mid", ",", "RM-C024B_warped.mid", ",", "RM-C024C_warped.mid", ",", "RM-C025A_warped.mid", ",", "RM-C025B_warped.mid", ",", "RM-C025C_warped.mid", ",", "RM-C025D_warped.mid", ",", "RM-C026_warped.mid", ",", "RM-C027_warped.mid", ",", "RM-C028_warped.mid", ",", "RM-C029_warped.mid", ",", "RM-C030_warped.mid", ",", "RM-C031_warped.mid", ",", "RM-C032_warped.mid", ",", "RM-C033_warped.mid", ",", "RM-C034_warped.mid", ",", "RM-C035A_warped.mid", ",", "RM-C035B_warped.mid", ",", "RM-C035C_warped.mid", ",", "RM-C036_warped.mid", ",", "RM-C037_warped.mid", ",", "RM-C038_warped.mid", ",", "RM-C039_warped.mid", ",", "RM-C040_warped.mid", ",", "RM-C041_warped.mid", ",", "RM-C042_warped.mid", ",", "RM-C043_warped.mid", ",", "RM-C044_warped.mid", ",", "RM-C045_warped.mid", ",", "RM-C046_warped.mid", ",", "RM-C047_warped.mid", ",", "RM-C048_warped.mid", ",", "RM-C049_warped.mid", ",", "RM-C050_warped.mid" ],
-					"prefix" : "Macintosh HD:/Users/andrew/Documents/work/MuseScore/RWC/Muller_warp/",
-					"numoutlets" : 3,
-					"types" : [  ],
-					"patching_rect" : [ 267.0, 18.0, 164.0, 18.0 ],
-					"outlettype" : [ "int", "", "" ],
-					"presentation" : 1,
-					"id" : "obj-102",
-					"autopopulate" : 1
+					"presentation" : 1
 				}
 
 			}
@@ -172,28 +224,28 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "loadmess prefix /Users/andrew/Documents/work/MuseScore/RWC/Muller_warp",
-					"fontname" : "Arial",
 					"numinlets" : 1,
 					"fontsize" : 11.595187,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-103",
 					"patching_rect" : [ 267.0, -14.0, 426.0, 20.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-103"
+					"fontname" : "Arial"
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "umenu",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
+					"numoutlets" : 3,
 					"items" : "<empty>",
-					"numoutlets" : 3,
+					"outlettype" : [ "int", "", "" ],
 					"types" : [  ],
+					"id" : "obj-100",
 					"patching_rect" : [ 607.0, 32.0, 100.0, 19.0 ],
-					"outlettype" : [ "int", "", "" ],
-					"id" : "obj-100"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -201,13 +253,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "p routingNoteons",
-					"fontname" : "Verdana",
 					"numinlets" : 4,
 					"fontsize" : 10.0,
 					"numoutlets" : 2,
-					"patching_rect" : [ 143.0, 530.0, 97.0, 19.0 ],
 					"outlettype" : [ "", "" ],
 					"id" : "obj-98",
+					"patching_rect" : [ 143.0, 530.0, 97.0, 19.0 ],
+					"fontname" : "Verdana",
 					"patcher" : 					{
 						"fileversion" : 1,
 						"rect" : [ 0.0, 0.0, 640.0, 480.0 ],
@@ -230,28 +282,28 @@
 						"boxes" : [ 							{
 								"box" : 								{
 									"maxclass" : "message",
-									"text" : "181 11 32",
-									"fontname" : "Verdana",
+									"text" : "181 100 127",
 									"numinlets" : 2,
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
+									"outlettype" : [ "" ],
+									"id" : "obj-93",
 									"patching_rect" : [ 310.0, 160.0, 102.0, 17.0 ],
-									"outlettype" : [ "" ],
-									"id" : "obj-93"
+									"fontname" : "Verdana"
 								}
 
 							}
 , 							{
 								"box" : 								{
 									"maxclass" : "message",
-									"text" : "59 85",
-									"fontname" : "Verdana",
+									"text" : "53 118",
 									"numinlets" : 2,
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
+									"outlettype" : [ "" ],
+									"id" : "obj-91",
 									"patching_rect" : [ 120.0, 185.0, 50.0, 17.0 ],
-									"outlettype" : [ "" ],
-									"id" : "obj-91"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -259,13 +311,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "t l",
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
+									"outlettype" : [ "" ],
+									"id" : "obj-89",
 									"patching_rect" : [ 73.0, 158.0, 21.0, 19.0 ],
-									"outlettype" : [ "" ],
-									"id" : "obj-89"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -273,13 +325,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "route 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159",
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 17,
+									"outlettype" : [ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" ],
+									"id" : "obj-88",
 									"patching_rect" : [ 50.0, 100.0, 398.0, 19.0 ],
-									"outlettype" : [ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" ],
-									"id" : "obj-88"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -287,13 +339,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "p weirdStarter",
-									"fontname" : "Verdana",
 									"numinlets" : 2,
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
-									"patching_rect" : [ 144.0, 237.0, 83.0, 19.0 ],
 									"outlettype" : [ "bang" ],
 									"id" : "obj-48",
+									"patching_rect" : [ 144.0, 237.0, 83.0, 19.0 ],
+									"fontname" : "Verdana",
 									"patcher" : 									{
 										"fileversion" : 1,
 										"rect" : [ 25.0, 69.0, 640.0, 480.0 ],
@@ -318,9 +370,9 @@
 													"maxclass" : "toggle",
 													"numinlets" : 1,
 													"numoutlets" : 1,
-													"patching_rect" : [ 94.0, 159.0, 20.0, 20.0 ],
 													"outlettype" : [ "int" ],
-													"id" : "obj-132"
+													"id" : "obj-132",
+													"patching_rect" : [ 94.0, 159.0, 20.0, 20.0 ]
 												}
 
 											}
@@ -329,9 +381,9 @@
 													"maxclass" : "button",
 													"numinlets" : 1,
 													"numoutlets" : 1,
-													"patching_rect" : [ 95.0, 217.0, 20.0, 20.0 ],
 													"outlettype" : [ "bang" ],
-													"id" : "obj-130"
+													"id" : "obj-130",
+													"patching_rect" : [ 95.0, 217.0, 20.0, 20.0 ]
 												}
 
 											}
@@ -339,13 +391,13 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "0",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-128",
 													"patching_rect" : [ 92.0, 239.0, 32.5, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-128"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -353,13 +405,13 @@
 												"box" : 												{
 													"maxclass" : "newobj",
 													"text" : "gate",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-126",
 													"patching_rect" : [ 92.0, 192.0, 33.0, 19.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-126"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -367,13 +419,13 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "1",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-125",
 													"patching_rect" : [ 65.0, 136.0, 32.5, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-125"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -381,13 +433,13 @@
 												"box" : 												{
 													"maxclass" : "newobj",
 													"text" : "loadbang",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "bang" ],
+													"id" : "obj-123",
 													"patching_rect" : [ 50.0, 100.0, 56.0, 19.0 ],
-													"outlettype" : [ "bang" ],
-													"id" : "obj-123"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -396,9 +448,9 @@
 													"maxclass" : "inlet",
 													"numinlets" : 0,
 													"numoutlets" : 1,
-													"patching_rect" : [ 65.0, 40.0, 25.0, 25.0 ],
 													"outlettype" : [ "bang" ],
 													"id" : "obj-40",
+													"patching_rect" : [ 65.0, 40.0, 25.0, 25.0 ],
 													"comment" : ""
 												}
 
@@ -408,9 +460,9 @@
 													"maxclass" : "inlet",
 													"numinlets" : 0,
 													"numoutlets" : 1,
-													"patching_rect" : [ 106.0, 40.0, 25.0, 25.0 ],
 													"outlettype" : [ "" ],
 													"id" : "obj-41",
+													"patching_rect" : [ 106.0, 40.0, 25.0, 25.0 ],
 													"comment" : ""
 												}
 
@@ -420,8 +472,8 @@
 													"maxclass" : "outlet",
 													"numinlets" : 1,
 													"numoutlets" : 0,
+													"id" : "obj-47",
 													"patching_rect" : [ 95.0, 331.5, 25.0, 25.0 ],
-													"id" : "obj-47",
 													"comment" : ""
 												}
 
@@ -512,13 +564,13 @@
 									}
 ,
 									"saved_object_attributes" : 									{
-										"fontname" : "Arial",
-										"default_fontsize" : 12.0,
 										"globalpatchername" : "",
 										"fontface" : 0,
 										"fontsize" : 12.0,
 										"default_fontface" : 0,
-										"default_fontname" : "Arial"
+										"default_fontname" : "Arial",
+										"fontname" : "Arial",
+										"default_fontsize" : 12.0
 									}
 
 								}
@@ -528,13 +580,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "gate",
-									"fontname" : "Verdana",
 									"numinlets" : 2,
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
+									"outlettype" : [ "" ],
+									"id" : "obj-30",
 									"patching_rect" : [ 52.0, 456.0, 33.0, 19.0 ],
-									"outlettype" : [ "" ],
-									"id" : "obj-30"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -543,9 +595,9 @@
 									"maxclass" : "button",
 									"numinlets" : 1,
 									"numoutlets" : 1,
-									"patching_rect" : [ 169.0, 298.0, 20.0, 20.0 ],
 									"outlettype" : [ "bang" ],
-									"id" : "obj-134"
+									"id" : "obj-134",
+									"patching_rect" : [ 169.0, 298.0, 20.0, 20.0 ]
 								}
 
 							}
@@ -553,13 +605,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "zl join",
-									"fontname" : "Verdana",
 									"numinlets" : 2,
 									"fontsize" : 10.0,
 									"numoutlets" : 2,
+									"outlettype" : [ "", "" ],
+									"id" : "obj-83",
 									"patching_rect" : [ 88.0, 388.0, 41.0, 19.0 ],
-									"outlettype" : [ "", "" ],
-									"id" : "obj-83"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -567,13 +619,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "- 0.",
-									"fontname" : "Verdana",
 									"numinlets" : 2,
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
+									"outlettype" : [ "float" ],
+									"id" : "obj-80",
 									"patching_rect" : [ 102.0, 357.0, 32.5, 19.0 ],
-									"outlettype" : [ "float" ],
-									"id" : "obj-80"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -581,13 +633,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "t l b",
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 2,
+									"outlettype" : [ "", "bang" ],
+									"id" : "obj-79",
 									"patching_rect" : [ 88.0, 299.0, 32.5, 19.0 ],
-									"outlettype" : [ "", "bang" ],
-									"id" : "obj-79"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -595,13 +647,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "cpuclock",
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
+									"outlettype" : [ "float" ],
+									"id" : "obj-78",
 									"patching_rect" : [ 169.0, 328.0, 53.0, 19.0 ],
-									"outlettype" : [ "float" ],
-									"id" : "obj-78"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -609,13 +661,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "cpuclock",
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
+									"outlettype" : [ "float" ],
+									"id" : "obj-76",
 									"patching_rect" : [ 102.0, 327.0, 53.0, 19.0 ],
-									"outlettype" : [ "float" ],
-									"id" : "obj-76"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -624,9 +676,9 @@
 									"maxclass" : "inlet",
 									"numinlets" : 0,
 									"numoutlets" : 1,
-									"patching_rect" : [ 50.0, 40.0, 25.0, 25.0 ],
 									"outlettype" : [ "" ],
 									"id" : "obj-21",
+									"patching_rect" : [ 50.0, 40.0, 25.0, 25.0 ],
 									"comment" : ""
 								}
 
@@ -636,9 +688,9 @@
 									"maxclass" : "inlet",
 									"numinlets" : 0,
 									"numoutlets" : 1,
-									"patching_rect" : [ 52.0, 40.0, 25.0, 25.0 ],
 									"outlettype" : [ "int" ],
 									"id" : "obj-39",
+									"patching_rect" : [ 52.0, 40.0, 25.0, 25.0 ],
 									"comment" : ""
 								}
 
@@ -648,9 +700,9 @@
 									"maxclass" : "inlet",
 									"numinlets" : 0,
 									"numoutlets" : 1,
-									"patching_rect" : [ 144.0, 40.0, 25.0, 25.0 ],
 									"outlettype" : [ "bang" ],
 									"id" : "obj-42",
+									"patching_rect" : [ 144.0, 40.0, 25.0, 25.0 ],
 									"comment" : ""
 								}
 
@@ -660,9 +712,9 @@
 									"maxclass" : "inlet",
 									"numinlets" : 0,
 									"numoutlets" : 1,
-									"patching_rect" : [ 169.0, 40.0, 25.0, 25.0 ],
 									"outlettype" : [ "" ],
 									"id" : "obj-47",
+									"patching_rect" : [ 169.0, 40.0, 25.0, 25.0 ],
 									"comment" : ""
 								}
 
@@ -672,8 +724,8 @@
 									"maxclass" : "outlet",
 									"numinlets" : 1,
 									"numoutlets" : 0,
+									"id" : "obj-86",
 									"patching_rect" : [ 52.0, 535.0, 25.0, 25.0 ],
-									"id" : "obj-86",
 									"comment" : ""
 								}
 
@@ -683,8 +735,8 @@
 									"maxclass" : "outlet",
 									"numinlets" : 1,
 									"numoutlets" : 0,
+									"id" : "obj-96",
 									"patching_rect" : [ 73.0, 535.0, 25.0, 25.0 ],
-									"id" : "obj-96",
 									"comment" : ""
 								}
 
@@ -982,13 +1034,13 @@
 					}
 ,
 					"saved_object_attributes" : 					{
-						"fontname" : "Arial",
-						"default_fontsize" : 12.0,
 						"globalpatchername" : "",
 						"fontface" : 0,
 						"fontsize" : 12.0,
 						"default_fontface" : 0,
-						"default_fontname" : "Arial"
+						"default_fontname" : "Arial",
+						"fontname" : "Arial",
+						"default_fontsize" : 12.0
 					}
 
 				}
@@ -998,13 +1050,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "prepend /duration",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-97",
 					"patching_rect" : [ 769.0, 340.0, 101.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-97"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1012,12 +1064,12 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "print",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"id" : "obj-92",
 					"patching_rect" : [ 33.0, 893.0, 34.0, 19.0 ],
-					"id" : "obj-92"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1026,9 +1078,9 @@
 					"maxclass" : "toggle",
 					"numinlets" : 1,
 					"numoutlets" : 1,
-					"patching_rect" : [ 33.0, 827.0, 20.0, 20.0 ],
 					"outlettype" : [ "int" ],
-					"id" : "obj-90"
+					"id" : "obj-90",
+					"patching_rect" : [ 33.0, 827.0, 20.0, 20.0 ]
 				}
 
 			}
@@ -1036,13 +1088,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "gate",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-7",
 					"patching_rect" : [ 33.0, 862.0, 33.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-7"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1050,13 +1102,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "loadmess 0.08",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-61",
 					"patching_rect" : [ 633.0, 513.0, 84.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-61"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1064,32 +1116,32 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "prepend /likelihoodToNoiseRatio",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 135.0, 522.0, 171.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 135.0, 522.0, 171.0, 19.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-58",
 					"patching_rect" : [ 612.0, 579.0, 171.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-58"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "flonum",
+					"numinlets" : 1,
+					"fontsize" : 10.0,
+					"numoutlets" : 2,
+					"presentation_rect" : [ 138.0, 500.0, 50.0, 19.0 ],
+					"outlettype" : [ "float", "bang" ],
+					"maximum" : 0.6,
+					"id" : "obj-59",
+					"patching_rect" : [ 612.0, 552.0, 50.0, 19.0 ],
 					"fontname" : "Verdana",
-					"numinlets" : 1,
-					"presentation_rect" : [ 138.0, 500.0, 50.0, 19.0 ],
-					"fontsize" : 10.0,
-					"maximum" : 0.6,
-					"numoutlets" : 2,
-					"minimum" : 0.001,
-					"patching_rect" : [ 612.0, 552.0, 50.0, 19.0 ],
-					"outlettype" : [ "float", "bang" ],
 					"presentation" : 1,
-					"id" : "obj-59"
+					"minimum" : 0.001
 				}
 
 			}
@@ -1097,32 +1149,32 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "prepend /maximumSpeedRatio",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 311.0, 464.0, 167.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 311.0, 464.0, 167.0, 19.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-45",
 					"patching_rect" : [ 702.0, 728.0, 167.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-45"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "flonum",
+					"numinlets" : 1,
+					"fontsize" : 10.0,
+					"numoutlets" : 2,
+					"presentation_rect" : [ 311.0, 436.0, 50.0, 19.0 ],
+					"outlettype" : [ "float", "bang" ],
+					"maximum" : 2.0,
+					"id" : "obj-51",
+					"patching_rect" : [ 702.0, 701.0, 50.0, 19.0 ],
 					"fontname" : "Verdana",
-					"numinlets" : 1,
-					"presentation_rect" : [ 311.0, 436.0, 50.0, 19.0 ],
-					"fontsize" : 10.0,
-					"maximum" : 2.0,
-					"numoutlets" : 2,
-					"minimum" : 0.0,
-					"patching_rect" : [ 702.0, 701.0, 50.0, 19.0 ],
-					"outlettype" : [ "float", "bang" ],
 					"presentation" : 1,
-					"id" : "obj-51"
+					"minimum" : 0.0
 				}
 
 			}
@@ -1130,50 +1182,50 @@
 				"box" : 				{
 					"maxclass" : "button",
 					"numinlets" : 1,
+					"numoutlets" : 1,
 					"presentation_rect" : [ 523.0, 109.0, 20.0, 20.0 ],
-					"numoutlets" : 1,
+					"outlettype" : [ "bang" ],
+					"id" : "obj-87",
 					"patching_rect" : [ 713.0, 162.0, 20.0, 20.0 ],
-					"outlettype" : [ "bang" ],
-					"presentation" : 1,
-					"id" : "obj-87"
+					"presentation" : 1
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "number",
-					"fontname" : "Verdana",
+					"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
 					"numinlets" : 1,
-					"presentation_rect" : [ 522.0, 136.0, 63.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 2,
+					"presentation_rect" : [ 522.0, 136.0, 63.0, 19.0 ],
+					"triscale" : 0.9,
+					"outlettype" : [ "int", "bang" ],
+					"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
+					"id" : "obj-66",
 					"patching_rect" : [ 777.0, 284.0, 63.0, 19.0 ],
-					"outlettype" : [ "int", "bang" ],
-					"presentation" : 1,
-					"id" : "obj-66",
-					"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
-					"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
-					"triscale" : 0.9
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "flonum",
-					"fontname" : "Verdana",
+					"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
+					"numinlets" : 1,
 					"triangle" : 0,
-					"numinlets" : 1,
-					"presentation_rect" : [ 522.0, 159.0, 64.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 2,
+					"presentation_rect" : [ 522.0, 159.0, 64.0, 19.0 ],
+					"triscale" : 0.9,
+					"outlettype" : [ "float", "bang" ],
+					"cantchange" : 1,
+					"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
+					"id" : "obj-75",
 					"patching_rect" : [ 777.0, 307.0, 64.0, 19.0 ],
-					"cantchange" : 1,
-					"outlettype" : [ "float", "bang" ],
-					"presentation" : 1,
-					"id" : "obj-75",
-					"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
-					"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
-					"triscale" : 0.9
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -1181,58 +1233,58 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "number of events",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 587.0, 136.0, 97.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 587.0, 136.0, 97.0, 19.0 ],
+					"id" : "obj-77",
 					"patching_rect" : [ 840.0, 286.0, 97.0, 19.0 ],
-					"presentation" : 1,
-					"id" : "obj-77"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "ftm.mess",
+					"ftm_scope" : 1,
+					"numinlets" : 2,
+					"fontsize" : 10.0,
+					"numoutlets" : 1,
+					"#untuple" : 0,
+					"text" : [ "_($1 size)" ],
+					"presentation_rect" : [ 718.0, 285.0, 51.93457, 17.0 ],
+					"outlettype" : [ "" ],
+					"#loadbang" : 0,
+					"#triggerall" : 0,
+					"id" : "obj-81",
+					"patching_rect" : [ 718.0, 285.0, 51.93457, 17.0 ],
 					"fontname" : "Verdana",
-					"ftm_scope" : 1,
-					"#loadbang" : 0,
-					"text" : [ "_($1 size)" ],
-					"numinlets" : 2,
-					"#triggerall" : 0,
-					"presentation_rect" : [ 718.0, 285.0, 51.93457, 17.0 ],
-					"fontsize" : 10.0,
-					"ftm_objref_conv" : 0,
-					"numoutlets" : 1,
+					"presentation" : 1,
 					"#init" : "",
-					"patching_rect" : [ 718.0, 285.0, 51.93457, 17.0 ],
-					"outlettype" : [ "" ],
-					"#untuple" : 0,
-					"presentation" : 1,
-					"id" : "obj-81"
+					"ftm_objref_conv" : 0
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "ftm.mess",
+					"ftm_scope" : 0,
+					"numinlets" : 2,
+					"fontsize" : 10.0,
+					"numoutlets" : 1,
+					"#untuple" : 0,
+					"text" : [ "_($1 duration)" ],
+					"presentation_rect" : [ 699.0, 308.0, 74.566406, 17.0 ],
+					"outlettype" : [ "" ],
+					"#loadbang" : 0,
+					"#triggerall" : 0,
+					"id" : "obj-84",
+					"patching_rect" : [ 699.0, 308.0, 74.566406, 17.0 ],
 					"fontname" : "Verdana",
-					"ftm_scope" : 0,
-					"#loadbang" : 0,
-					"text" : [ "_($1 duration)" ],
-					"numinlets" : 2,
-					"#triggerall" : 0,
-					"presentation_rect" : [ 699.0, 308.0, 74.566406, 17.0 ],
-					"fontsize" : 10.0,
-					"ftm_objref_conv" : 0,
-					"numoutlets" : 1,
+					"presentation" : 1,
 					"#init" : "",
-					"patching_rect" : [ 699.0, 308.0, 74.566406, 17.0 ],
-					"outlettype" : [ "" ],
-					"#untuple" : 0,
-					"presentation" : 1,
-					"id" : "obj-84"
+					"ftm_objref_conv" : 0
 				}
 
 			}
@@ -1240,14 +1292,14 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "duration in msec",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 587.0, 159.0, 93.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 587.0, 159.0, 93.0, 19.0 ],
+					"id" : "obj-85",
 					"patching_rect" : [ 840.0, 309.0, 93.0, 19.0 ],
-					"presentation" : 1,
-					"id" : "obj-85"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -1255,13 +1307,13 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "import /Users/andrew/hg/midi-score-follower/MIDIfiles/test.mid",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-53",
 					"patching_rect" : [ 663.0, 129.0, 335.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-53"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1269,29 +1321,73 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "loadmess 1",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-28",
 					"patching_rect" : [ -28.0, 309.0, 68.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-28"
+					"fontname" : "Verdana"
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "message",
-					"text" : "148 59 85",
-					"fontname" : "Verdana",
+					"text" : "145 53 118",
 					"numinlets" : 2,
-					"presentation_rect" : [ 10.0, 226.0, 95.0, 17.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 10.0, 226.0, 95.0, 17.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-50",
 					"patching_rect" : [ -131.0, 428.0, 95.0, 17.0 ],
+					"fontname" : "Verdana",
+					"presentation" : 1
+				}
+
+			}
+, 			{
+				"box" : 				{
+					"maxclass" : "message",
+					"text" : "/MAPestimate",
+					"numinlets" : 2,
+					"fontsize" : 10.0,
+					"numoutlets" : 1,
+					"presentation_rect" : [ 364.0, 375.0, 108.0, 17.0 ],
 					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-50"
+					"id" : "obj-43",
+					"patching_rect" : [ 793.0, 807.0, 108.0, 17.0 ],
+					"fontname" : "Verdana",
+					"presentation" : 1
+				}
+
+			}
+, 			{
+				"box" : 				{
+					"maxclass" : "message",
+					"text" : "/MAPestimate",
+					"numinlets" : 2,
+					"fontsize" : 10.0,
+					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-40",
+					"patching_rect" : [ 768.0, 865.0, 80.0, 17.0 ],
+					"fontname" : "Verdana"
+				}
+
+			}
+, 			{
+				"box" : 				{
+					"maxclass" : "newobj",
+					"text" : "sel 0 1",
+					"numinlets" : 1,
+					"fontsize" : 10.0,
+					"numoutlets" : 3,
+					"outlettype" : [ "bang", "bang", "" ],
+					"id" : "obj-38",
+					"patching_rect" : [ 698.0, 826.0, 46.0, 19.0 ],
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1299,57 +1395,13 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "/integratedEstimate",
-					"fontname" : "Verdana",
-					"numinlets" : 2,
-					"presentation_rect" : [ 364.0, 375.0, 108.0, 17.0 ],
-					"fontsize" : 10.0,
-					"numoutlets" : 1,
-					"patching_rect" : [ 793.0, 807.0, 108.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-43"
-				}
-
-			}
-, 			{
-				"box" : 				{
-					"maxclass" : "message",
-					"text" : "/MAPestimate",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
-					"patching_rect" : [ 768.0, 865.0, 80.0, 17.0 ],
 					"outlettype" : [ "" ],
-					"id" : "obj-40"
-				}
-
-			}
-, 			{
-				"box" : 				{
-					"maxclass" : "newobj",
-					"text" : "sel 0 1",
-					"fontname" : "Verdana",
-					"numinlets" : 1,
-					"fontsize" : 10.0,
-					"numoutlets" : 3,
-					"patching_rect" : [ 698.0, 826.0, 46.0, 19.0 ],
-					"outlettype" : [ "bang", "bang", "" ],
-					"id" : "obj-38"
-				}
-
-			}
-, 			{
-				"box" : 				{
-					"maxclass" : "message",
-					"text" : "/integratedEstimate",
-					"fontname" : "Verdana",
-					"numinlets" : 2,
-					"fontsize" : 10.0,
-					"numoutlets" : 1,
+					"id" : "obj-35",
 					"patching_rect" : [ 646.0, 865.0, 110.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-35"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1357,12 +1409,12 @@
 				"box" : 				{
 					"maxclass" : "toggle",
 					"numinlets" : 1,
+					"numoutlets" : 1,
 					"presentation_rect" : [ 364.0, 350.0, 20.0, 20.0 ],
-					"numoutlets" : 1,
+					"outlettype" : [ "int" ],
+					"id" : "obj-22",
 					"patching_rect" : [ 698.0, 796.0, 20.0, 20.0 ],
-					"outlettype" : [ "int" ],
-					"presentation" : 1,
-					"id" : "obj-22"
+					"presentation" : 1
 				}
 
 			}
@@ -1370,32 +1422,32 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "prepend /minimumSpeedRatio",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 134.0, 463.0, 164.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 134.0, 463.0, 164.0, 19.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-13",
 					"patching_rect" : [ 685.0, 657.0, 164.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-13"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "flonum",
+					"numinlets" : 1,
+					"fontsize" : 10.0,
+					"numoutlets" : 2,
+					"presentation_rect" : [ 134.0, 436.0, 50.0, 19.0 ],
+					"outlettype" : [ "float", "bang" ],
+					"maximum" : 2.0,
+					"id" : "obj-12",
+					"patching_rect" : [ 685.0, 630.0, 50.0, 19.0 ],
 					"fontname" : "Verdana",
-					"numinlets" : 1,
-					"presentation_rect" : [ 134.0, 436.0, 50.0, 19.0 ],
-					"fontsize" : 10.0,
-					"maximum" : 2.0,
-					"numoutlets" : 2,
-					"minimum" : 0.0,
-					"patching_rect" : [ 685.0, 630.0, 50.0, 19.0 ],
-					"outlettype" : [ "float", "bang" ],
 					"presentation" : 1,
-					"id" : "obj-12"
+					"minimum" : 0.0
 				}
 
 			}
@@ -1403,13 +1455,13 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "0",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-41",
 					"patching_rect" : [ 86.0, 135.0, 32.5, 17.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-41"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1417,28 +1469,28 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "loadmess 250",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-37",
 					"patching_rect" : [ 141.0, 150.0, 80.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-37"
+					"fontname" : "Verdana"
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "number",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 583.0, 228.0, 50.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 2,
+					"presentation_rect" : [ 583.0, 228.0, 50.0, 19.0 ],
+					"outlettype" : [ "int", "bang" ],
+					"id" : "obj-36",
 					"patching_rect" : [ 141.0, 173.0, 50.0, 19.0 ],
-					"outlettype" : [ "int", "bang" ],
-					"presentation" : 1,
-					"id" : "obj-36"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -1448,14 +1500,14 @@
 					"text" : "iterate through notes when used offline",
 					"linecount" : 2,
 					"presentation_linecount" : 2,
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 550.0, 197.0, 150.0, 31.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 550.0, 197.0, 150.0, 31.0 ],
+					"id" : "obj-34",
 					"patching_rect" : [ 1247.0, 855.0, 150.0, 31.0 ],
-					"presentation" : 1,
-					"id" : "obj-34"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -1463,12 +1515,12 @@
 				"box" : 				{
 					"maxclass" : "toggle",
 					"numinlets" : 1,
+					"numoutlets" : 1,
 					"presentation_rect" : [ 523.0, 204.0, 20.0, 20.0 ],
-					"numoutlets" : 1,
+					"outlettype" : [ "int" ],
+					"id" : "obj-11",
 					"patching_rect" : [ 89.0, 165.0, 20.0, 20.0 ],
-					"outlettype" : [ "int" ],
-					"presentation" : 1,
-					"id" : "obj-11"
+					"presentation" : 1
 				}
 
 			}
@@ -1476,30 +1528,30 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "metro 250",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
-					"presentation_rect" : [ 517.0, 230.0, 63.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 517.0, 230.0, 63.0, 19.0 ],
+					"outlettype" : [ "bang" ],
+					"id" : "obj-2",
 					"patching_rect" : [ 90.0, 201.0, 63.0, 19.0 ],
-					"outlettype" : [ "bang" ],
-					"presentation" : 1,
-					"id" : "obj-2"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "flonum",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 282.0, 62.0, 57.0, 21.0 ],
 					"fontsize" : 12.0,
 					"numoutlets" : 2,
+					"presentation_rect" : [ 282.0, 62.0, 57.0, 21.0 ],
+					"outlettype" : [ "float", "bang" ],
+					"id" : "obj-99",
 					"patching_rect" : [ 511.0, 249.0, 57.0, 21.0 ],
-					"outlettype" : [ "float", "bang" ],
-					"presentation" : 1,
-					"id" : "obj-99"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -1507,13 +1559,13 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "/offline",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-74",
 					"patching_rect" : [ 169.0, 893.0, 46.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-74"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1521,13 +1573,13 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "/realtime",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-73",
 					"patching_rect" : [ 100.0, 890.0, 56.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-73"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1535,13 +1587,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "sel 1 2",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 3,
+					"outlettype" : [ "bang", "bang", "" ],
+					"id" : "obj-64",
 					"patching_rect" : [ 85.0, 860.0, 46.0, 19.0 ],
-					"outlettype" : [ "bang", "bang", "" ],
-					"id" : "obj-64"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -1549,13 +1601,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "p ftmPlayer",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 2,
-					"patching_rect" : [ 45.0, 316.0, 476.0, 19.0 ],
 					"outlettype" : [ "", "" ],
 					"id" : "obj-60",
+					"patching_rect" : [ 45.0, 316.0, 476.0, 19.0 ],
+					"fontname" : "Verdana",
 					"patcher" : 					{
 						"fileversion" : 1,
 						"rect" : [ 25.0, 69.0, 640.0, 480.0 ],
@@ -1580,9 +1632,9 @@
 									"maxclass" : "inlet",
 									"numinlets" : 0,
 									"numoutlets" : 1,
-									"patching_rect" : [ 336.0, 56.0, 25.0, 25.0 ],
 									"outlettype" : [ "float" ],
 									"id" : "obj-1",
+									"patching_rect" : [ 336.0, 56.0, 25.0, 25.0 ],
 									"comment" : ""
 								}
 
@@ -1591,14 +1643,14 @@
 								"box" : 								{
 									"maxclass" : "comment",
 									"text" : "midi",
-									"fontname" : "Verdana",
 									"numinlets" : 1,
-									"presentation_rect" : [ 52.0, 420.0, 150.0, 19.0 ],
 									"fontsize" : 10.0,
 									"numoutlets" : 0,
+									"presentation_rect" : [ 52.0, 420.0, 150.0, 19.0 ],
+									"id" : "obj-11",
 									"patching_rect" : [ 131.0, 214.0, 150.0, 19.0 ],
-									"presentation" : 1,
-									"id" : "obj-11"
+									"fontname" : "Verdana",
+									"presentation" : 1
 								}
 
 							}
@@ -1606,13 +1658,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "p otherFtmControls",
-									"fontname" : "Verdana",
 									"numinlets" : 0,
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
-									"patching_rect" : [ 50.0, 109.0, 108.0, 19.0 ],
 									"outlettype" : [ "" ],
 									"id" : "obj-115",
+									"patching_rect" : [ 50.0, 109.0, 108.0, 19.0 ],
+									"fontname" : "Verdana",
 									"patcher" : 									{
 										"fileversion" : 1,
 										"rect" : [ 25.0, 69.0, 640.0, 480.0 ],
@@ -1638,14 +1690,14 @@
 													"text" : "ordinary file following (x) or else one shot test",
 													"linecount" : 2,
 													"presentation_linecount" : 2,
-													"fontname" : "Verdana",
 													"numinlets" : 1,
-													"presentation_rect" : [ 52.0, 186.0, 156.0, 31.0 ],
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"presentation_rect" : [ 52.0, 186.0, 156.0, 31.0 ],
+													"id" : "obj-111",
 													"patching_rect" : [ 98.0, 56.0, 153.0, 31.0 ],
-													"presentation" : 1,
-													"id" : "obj-111"
+													"fontname" : "Verdana",
+													"presentation" : 1
 												}
 
 											}
@@ -1653,33 +1705,33 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "set speed",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-3",
 													"patching_rect" : [ 362.0, 263.0, 57.0, 19.0 ],
-													"id" : "obj-3"
+													"fontname" : "Verdana"
 												}
 
 											}
 , 											{
 												"box" : 												{
 													"maxclass" : "ftm.mess",
+													"ftm_scope" : 0,
+													"numinlets" : 2,
+													"fontsize" : 10.0,
+													"numoutlets" : 1,
+													"#untuple" : 0,
+													"text" : [ "_loop 500 1500 1." ],
+													"presentation_rect" : [ 216.0, 166.0, 92.157234, 17.0 ],
+													"outlettype" : [ "" ],
+													"#loadbang" : 0,
+													"#triggerall" : 0,
+													"id" : "obj-4",
+													"patching_rect" : [ 216.0, 166.0, 92.157234, 17.0 ],
 													"fontname" : "Verdana",
-													"ftm_scope" : 0,
-													"#loadbang" : 0,
-													"text" : [ "_loop 500 1500 1." ],
-													"numinlets" : 2,
-													"#triggerall" : 0,
-													"presentation_rect" : [ 216.0, 166.0, 92.157234, 17.0 ],
-													"fontsize" : 10.0,
-													"ftm_objref_conv" : 0,
-													"numoutlets" : 1,
 													"#init" : "",
-													"patching_rect" : [ 216.0, 166.0, 92.157234, 17.0 ],
-													"outlettype" : [ "" ],
-													"#untuple" : 0,
-													"id" : "obj-4"
+													"ftm_objref_conv" : 0
 												}
 
 											}
@@ -1687,33 +1739,33 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "set segment (begin, end and speed) and loop",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-5",
 													"patching_rect" : [ 306.0, 167.0, 240.0, 19.0 ],
-													"id" : "obj-5"
+													"fontname" : "Verdana"
 												}
 
 											}
 , 											{
 												"box" : 												{
 													"maxclass" : "ftm.mess",
+													"ftm_scope" : 0,
+													"numinlets" : 2,
+													"fontsize" : 10.0,
+													"numoutlets" : 1,
+													"#untuple" : 0,
+													"text" : [ "_play $play.seq 500 1500 1." ],
+													"presentation_rect" : [ 216.0, 146.0, 142.66507, 17.0 ],
+													"outlettype" : [ "" ],
+													"#loadbang" : 0,
+													"#triggerall" : 0,
+													"id" : "obj-6",
+													"patching_rect" : [ 216.0, 146.0, 142.66507, 17.0 ],
 													"fontname" : "Verdana",
-													"ftm_scope" : 0,
-													"#loadbang" : 0,
-													"text" : [ "_play $play.seq 500 1500 1." ],
-													"numinlets" : 2,
-													"#triggerall" : 0,
-													"presentation_rect" : [ 216.0, 146.0, 142.66507, 17.0 ],
-													"fontsize" : 10.0,
-													"ftm_objref_conv" : 0,
-													"numoutlets" : 1,
 													"#init" : "",
-													"patching_rect" : [ 216.0, 146.0, 142.66507, 17.0 ],
-													"outlettype" : [ "" ],
-													"#untuple" : 0,
-													"id" : "obj-6"
+													"ftm_objref_conv" : 0
 												}
 
 											}
@@ -1721,12 +1773,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "set segment (track, begin, end and speed) and play",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-7",
 													"patching_rect" : [ 370.0, 147.0, 272.0, 19.0 ],
-													"id" : "obj-7"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1734,12 +1786,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "advance to next time",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-8",
 													"patching_rect" : [ 88.0, 258.0, 115.0, 19.0 ],
-													"id" : "obj-8"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1748,11 +1800,11 @@
 													"maxclass" : "slider",
 													"orientation" : 1,
 													"numinlets" : 1,
+													"numoutlets" : 1,
+													"outlettype" : [ "" ],
 													"size" : 1001.0,
-													"numoutlets" : 1,
+													"id" : "obj-9",
 													"patching_rect" : [ 162.0, 238.0, 169.0, 15.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-9",
 													"mult" : 10.0
 												}
 
@@ -1761,12 +1813,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "locate or jump at given time",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-10",
 													"patching_rect" : [ 114.0, 121.0, 151.0, 19.0 ],
-													"id" : "obj-10"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1774,13 +1826,13 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "next",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-11",
 													"patching_rect" : [ 50.0, 257.0, 33.0, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-11"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1788,13 +1840,13 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "jump 300.",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-12",
 													"patching_rect" : [ 50.0, 119.0, 62.0, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-12"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1802,12 +1854,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "set speed by giving a duration for the current segment",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-23",
 													"patching_rect" : [ 336.0, 281.0, 285.0, 19.0 ],
-													"id" : "obj-23"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1815,12 +1867,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "set segment (only begin and end) and play straight",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-24",
 													"patching_rect" : [ 354.0, 120.0, 270.0, 19.0 ],
-													"id" : "obj-24"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1828,12 +1880,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "play current segment",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-25",
 													"patching_rect" : [ 86.0, 147.0, 116.0, 19.0 ],
-													"id" : "obj-25"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1841,50 +1893,50 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "speed 0.5",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-26",
 													"patching_rect" : [ 299.0, 262.0, 58.0, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-26"
+													"fontname" : "Verdana"
 												}
 
 											}
 , 											{
 												"box" : 												{
 													"maxclass" : "ftm.mess",
+													"ftm_scope" : 0,
+													"numinlets" : 2,
+													"fontsize" : 10.0,
+													"numoutlets" : 1,
+													"#untuple" : 0,
+													"text" : [ "_set 0 9999999" ],
+													"presentation_rect" : [ 274.0, 119.0, 78.998055, 17.0 ],
+													"outlettype" : [ "" ],
+													"#loadbang" : 0,
+													"#triggerall" : 0,
+													"id" : "obj-27",
+													"patching_rect" : [ 274.0, 119.0, 78.998055, 17.0 ],
 													"fontname" : "Verdana",
-													"ftm_scope" : 0,
-													"#loadbang" : 0,
-													"text" : [ "_set 0 9999999" ],
-													"numinlets" : 2,
-													"#triggerall" : 0,
-													"presentation_rect" : [ 274.0, 119.0, 78.998055, 17.0 ],
-													"fontsize" : 10.0,
-													"ftm_objref_conv" : 0,
-													"numoutlets" : 1,
 													"#init" : "",
-													"patching_rect" : [ 274.0, 119.0, 78.998055, 17.0 ],
-													"outlettype" : [ "" ],
-													"#untuple" : 0,
-													"id" : "obj-27"
+													"ftm_objref_conv" : 0
 												}
 
 											}
 , 											{
 												"box" : 												{
 													"maxclass" : "flonum",
-													"fontname" : "Verdana",
+													"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 2,
+													"triscale" : 0.9,
+													"outlettype" : [ "float", "bang" ],
+													"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
+													"id" : "obj-28",
 													"patching_rect" : [ 104.0, 238.0, 56.0, 19.0 ],
-													"outlettype" : [ "float", "bang" ],
-													"id" : "obj-28",
-													"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
-													"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
-													"triscale" : 0.9
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1892,13 +1944,13 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "duration 1000",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-29",
 													"patching_rect" : [ 252.0, 281.0, 79.0, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-29"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1906,13 +1958,13 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "speed 2.",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-30",
 													"patching_rect" : [ 252.0, 262.0, 52.0, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-30"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1920,13 +1972,13 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "pause",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-31",
 													"patching_rect" : [ 50.0, 192.0, 40.0, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-31"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1934,13 +1986,13 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "locate 300.",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-32",
 													"patching_rect" : [ 50.0, 100.0, 67.0, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-32"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1948,34 +2000,34 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "sync $1",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-33",
 													"patching_rect" : [ 50.0, 238.0, 49.0, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-33"
+													"fontname" : "Verdana"
 												}
 
 											}
 , 											{
 												"box" : 												{
 													"maxclass" : "ftm.mess",
+													"ftm_scope" : 0,
+													"numinlets" : 2,
+													"fontsize" : 10.0,
+													"numoutlets" : 1,
+													"#untuple" : 0,
+													"text" : [ "_set $play.seq 500 1500 1." ],
+													"presentation_rect" : [ 274.0, 100.0, 136.952179, 17.0 ],
+													"outlettype" : [ "" ],
+													"#loadbang" : 0,
+													"#triggerall" : 0,
+													"id" : "obj-40",
+													"patching_rect" : [ 274.0, 100.0, 136.952179, 17.0 ],
 													"fontname" : "Verdana",
-													"ftm_scope" : 0,
-													"#loadbang" : 0,
-													"text" : [ "_set $play.seq 500 1500 1." ],
-													"numinlets" : 2,
-													"#triggerall" : 0,
-													"presentation_rect" : [ 274.0, 100.0, 136.952179, 17.0 ],
-													"fontsize" : 10.0,
-													"ftm_objref_conv" : 0,
-													"numoutlets" : 1,
 													"#init" : "",
-													"patching_rect" : [ 274.0, 100.0, 136.952179, 17.0 ],
-													"outlettype" : [ "" ],
-													"#untuple" : 0,
-													"id" : "obj-40"
+													"ftm_objref_conv" : 0
 												}
 
 											}
@@ -1983,13 +2035,13 @@
 												"box" : 												{
 													"maxclass" : "message",
 													"text" : "loop",
-													"fontname" : "Verdana",
 													"numinlets" : 2,
 													"fontsize" : 10.0,
 													"numoutlets" : 1,
+													"outlettype" : [ "" ],
+													"id" : "obj-41",
 													"patching_rect" : [ 50.0, 165.0, 32.5, 17.0 ],
-													"outlettype" : [ "" ],
-													"id" : "obj-41"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -1998,9 +2050,9 @@
 													"maxclass" : "button",
 													"numinlets" : 1,
 													"numoutlets" : 1,
-													"patching_rect" : [ 50.0, 292.0, 15.0, 15.0 ],
 													"outlettype" : [ "bang" ],
-													"id" : "obj-50"
+													"id" : "obj-50",
+													"patching_rect" : [ 50.0, 292.0, 15.0, 15.0 ]
 												}
 
 											}
@@ -2008,12 +2060,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "advance to gven time (output all events on the way)",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-54",
 													"patching_rect" : [ 326.0, 238.0, 274.0, 19.0 ],
-													"id" : "obj-54"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -2021,12 +2073,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "locate halted at given time",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-55",
 													"patching_rect" : [ 119.0, 101.0, 143.0, 19.0 ],
-													"id" : "obj-55"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -2034,12 +2086,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "loop current segment",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-57",
 													"patching_rect" : [ 85.0, 166.0, 116.0, 19.0 ],
-													"id" : "obj-57"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -2047,12 +2099,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "stop playing and reset",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-58",
 													"patching_rect" : [ 86.0, 212.0, 121.0, 19.0 ],
-													"id" : "obj-58"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -2060,12 +2112,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "halt playing",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-59",
 													"patching_rect" : [ 93.0, 193.0, 67.0, 19.0 ],
-													"id" : "obj-59"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -2073,12 +2125,12 @@
 												"box" : 												{
 													"maxclass" : "comment",
 													"text" : "play current segment straight",
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-60",
 													"patching_rect" : [ 67.0, 292.0, 158.0, 19.0 ],
-													"id" : "obj-60"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -2087,12 +2139,12 @@
 													"maxclass" : "comment",
 													"text" : "note that setting a new track stops and resets the player (play and loop start from beginning)",
 													"linecount" : 2,
-													"fontname" : "Verdana",
 													"numinlets" : 1,
 													"fontsize" : 10.0,
 													"numoutlets" : 0,
+													"id" : "obj-62",
 													"patching_rect" : [ 277.0, 196.0, 266.0, 31.0 ],
-													"id" : "obj-62"
+													"fontname" : "Verdana"
 												}
 
 											}
@@ -2101,8 +2153,8 @@
 													"maxclass" : "outlet",
 													"numinlets" : 1,
 													"numoutlets" : 0,
+													"id" : "obj-114",
 													"patching_rect" : [ 147.357147, 371.0, 25.0, 25.0 ],
-													"id" : "obj-114",
 													"comment" : ""
 												}
 
@@ -2256,13 +2308,13 @@
 									}
 ,
 									"saved_object_attributes" : 									{
-										"fontname" : "Arial",
-										"default_fontsize" : 12.0,
 										"globalpatchername" : "",
 										"fontface" : 0,
 										"fontsize" : 12.0,
 										"default_fontface" : 0,
-										"default_fontname" : "Arial"
+										"default_fontname" : "Arial",
+										"fontname" : "Arial",
+										"default_fontsize" : 12.0
 									}
 
 								}
@@ -2272,12 +2324,12 @@
 								"box" : 								{
 									"maxclass" : "comment",
 									"text" : "syntax:",
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 0,
+									"id" : "obj-2",
 									"patching_rect" : [ 358.0, 168.0, 46.0, 19.0 ],
-									"id" : "obj-2"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -2286,12 +2338,12 @@
 									"maxclass" : "comment",
 									"text" : "kill hanging notes when looping",
 									"hidden" : 1,
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 0,
+									"id" : "obj-13",
 									"patching_rect" : [ 291.0, 203.0, 168.0, 19.0 ],
-									"id" : "obj-13"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -2299,12 +2351,12 @@
 								"box" : 								{
 									"maxclass" : "comment",
 									"text" : "set segment end",
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 0,
+									"id" : "obj-21",
 									"patching_rect" : [ 433.0, 120.0, 93.0, 19.0 ],
-									"id" : "obj-21"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -2313,13 +2365,13 @@
 									"maxclass" : "newobj",
 									"text" : "change 0 -",
 									"hidden" : 1,
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 3,
+									"outlettype" : [ "", "int", "int" ],
+									"id" : "obj-34",
 									"patching_rect" : [ 128.0, 202.0, 62.0, 19.0 ],
-									"outlettype" : [ "", "int", "int" ],
-									"id" : "obj-34"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -2328,11 +2380,11 @@
 									"maxclass" : "slider",
 									"orientation" : 1,
 									"numinlets" : 1,
+									"numoutlets" : 1,
+									"outlettype" : [ "" ],
 									"size" : 1001.0,
-									"numoutlets" : 1,
+									"id" : "obj-35",
 									"patching_rect" : [ 262.0, 120.0, 169.0, 15.0 ],
-									"outlettype" : [ "" ],
-									"id" : "obj-35",
 									"mult" : 10.0
 								}
 
@@ -2342,11 +2394,11 @@
 									"maxclass" : "slider",
 									"orientation" : 1,
 									"numinlets" : 1,
+									"numoutlets" : 1,
+									"outlettype" : [ "" ],
 									"size" : 1001.0,
-									"numoutlets" : 1,
+									"id" : "obj-36",
 									"patching_rect" : [ 187.0, 100.0, 169.0, 15.0 ],
-									"outlettype" : [ "" ],
-									"id" : "obj-36",
 									"mult" : 10.0
 								}
 
@@ -2355,15 +2407,15 @@
 								"box" : 								{
 									"maxclass" : "message",
 									"text" : "GM",
-									"fontname" : "Verdana",
 									"numinlets" : 2,
-									"presentation_rect" : [ 127.0, 442.0, 32.5, 17.0 ],
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
+									"presentation_rect" : [ 127.0, 442.0, 32.5, 17.0 ],
+									"outlettype" : [ "" ],
+									"id" : "obj-37",
 									"patching_rect" : [ 203.0, 228.0, 32.5, 17.0 ],
-									"outlettype" : [ "" ],
-									"presentation" : 1,
-									"id" : "obj-37"
+									"fontname" : "Verdana",
+									"presentation" : 1
 								}
 
 							}
@@ -2371,15 +2423,15 @@
 								"box" : 								{
 									"maxclass" : "message",
 									"text" : "panic",
-									"fontname" : "Verdana",
 									"numinlets" : 2,
-									"presentation_rect" : [ 85.0, 442.0, 37.0, 17.0 ],
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
+									"presentation_rect" : [ 85.0, 442.0, 37.0, 17.0 ],
+									"outlettype" : [ "" ],
+									"id" : "obj-38",
 									"patching_rect" : [ 161.0, 228.0, 37.0, 17.0 ],
-									"outlettype" : [ "" ],
-									"presentation" : 1,
-									"id" : "obj-38"
+									"fontname" : "Verdana",
+									"presentation" : 1
 								}
 
 							}
@@ -2387,47 +2439,47 @@
 								"box" : 								{
 									"maxclass" : "message",
 									"text" : "off",
-									"fontname" : "Verdana",
 									"numinlets" : 2,
-									"presentation_rect" : [ 48.0, 442.0, 32.5, 17.0 ],
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
+									"presentation_rect" : [ 48.0, 442.0, 32.5, 17.0 ],
+									"outlettype" : [ "" ],
+									"id" : "obj-39",
 									"patching_rect" : [ 124.0, 228.0, 32.5, 17.0 ],
-									"outlettype" : [ "" ],
-									"presentation" : 1,
-									"id" : "obj-39"
+									"fontname" : "Verdana",
+									"presentation" : 1
 								}
 
 							}
 , 							{
 								"box" : 								{
 									"maxclass" : "flonum",
-									"fontname" : "Verdana",
+									"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 2,
+									"triscale" : 0.9,
+									"outlettype" : [ "float", "bang" ],
+									"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
+									"id" : "obj-42",
 									"patching_rect" : [ 262.0, 143.0, 55.0, 19.0 ],
-									"outlettype" : [ "float", "bang" ],
-									"id" : "obj-42",
-									"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
-									"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
-									"triscale" : 0.9
+									"fontname" : "Verdana"
 								}
 
 							}
 , 							{
 								"box" : 								{
 									"maxclass" : "flonum",
-									"fontname" : "Verdana",
+									"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 2,
+									"triscale" : 0.9,
+									"outlettype" : [ "float", "bang" ],
+									"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
+									"id" : "obj-43",
 									"patching_rect" : [ 187.0, 143.0, 55.0, 19.0 ],
-									"outlettype" : [ "float", "bang" ],
-									"id" : "obj-43",
-									"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
-									"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
-									"triscale" : 0.9
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -2435,13 +2487,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "ftm.midiunparse",
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 1,
-									"patching_rect" : [ 112.0, 249.0, 93.0, 19.0 ],
 									"outlettype" : [ "" ],
 									"id" : "obj-45",
+									"patching_rect" : [ 112.0, 249.0, 93.0, 19.0 ],
+									"fontname" : "Verdana",
 									"saved_object_attributes" : 									{
 										"ftm_scope" : 0,
 										"ftm_objref_conv" : 0
@@ -2455,25 +2507,25 @@
 									"maxclass" : "button",
 									"numinlets" : 1,
 									"numoutlets" : 1,
-									"patching_rect" : [ 337.0, 228.0, 15.0, 15.0 ],
 									"outlettype" : [ "bang" ],
-									"id" : "obj-51"
+									"id" : "obj-51",
+									"patching_rect" : [ 337.0, 228.0, 15.0, 15.0 ]
 								}
 
 							}
 , 							{
 								"box" : 								{
 									"maxclass" : "flonum",
-									"fontname" : "Verdana",
+									"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 2,
+									"triscale" : 0.9,
+									"outlettype" : [ "float", "bang" ],
+									"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
+									"id" : "obj-52",
 									"patching_rect" : [ 215.0, 201.0, 55.0, 19.0 ],
-									"outlettype" : [ "float", "bang" ],
-									"id" : "obj-52",
-									"htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ],
-									"bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
-									"triscale" : 0.9
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -2481,13 +2533,13 @@
 								"box" : 								{
 									"maxclass" : "newobj",
 									"text" : "ftm.play $play.seq",
-									"fontname" : "Verdana",
 									"numinlets" : 4,
 									"fontsize" : 18.0,
 									"numoutlets" : 3,
-									"patching_rect" : [ 112.0, 166.0, 244.0, 28.0 ],
 									"outlettype" : [ "", "", "" ],
 									"id" : "obj-53",
+									"patching_rect" : [ 112.0, 166.0, 244.0, 28.0 ],
+									"fontname" : "Verdana",
 									"saved_object_attributes" : 									{
 										"ftm_scope" : 0,
 										"ftm_objref_conv" : 0
@@ -2500,12 +2552,12 @@
 								"box" : 								{
 									"maxclass" : "comment",
 									"text" : "set segment beginning",
-									"fontname" : "Verdana",
 									"numinlets" : 1,
 									"fontsize" : 10.0,
 									"numoutlets" : 0,
+									"id" : "obj-61",
 									"patching_rect" : [ 358.0, 100.0, 123.0, 19.0 ],
-									"id" : "obj-61"
+									"fontname" : "Verdana"
 								}
 
 							}
@@ -2514,9 +2566,9 @@
 									"maxclass" : "inlet",
 									"numinlets" : 0,
 									"numoutlets" : 1,
-									"patching_rect" : [ 112.0, 40.0, 25.0, 25.0 ],
 									"outlettype" : [ "" ],
 									"id" : "obj-57",
+									"patching_rect" : [ 112.0, 40.0, 25.0, 25.0 ],
 									"comment" : ""
 								}
 
@@ -2526,8 +2578,8 @@
 									"maxclass" : "outlet",
 									"numinlets" : 1,
 									"numoutlets" : 0,
+									"id" : "obj-58",
 									"patching_rect" : [ 112.0, 328.0, 25.0, 25.0 ],
-									"id" : "obj-58",
 									"comment" : ""
 								}
 
@@ -2537,8 +2589,8 @@
 									"maxclass" : "outlet",
 									"numinlets" : 1,
 									"numoutlets" : 0,
+									"id" : "obj-59",
 									"patching_rect" : [ 224.0, 328.0, 25.0, 25.0 ],
-									"id" : "obj-59",
 									"comment" : ""
 								}
 
@@ -2701,13 +2753,13 @@
 					}
 ,
 					"saved_object_attributes" : 					{
-						"fontname" : "Arial",
-						"default_fontsize" : 12.0,
 						"globalpatchername" : "",
 						"fontface" : 0,
 						"fontsize" : 12.0,
 						"default_fontface" : 0,
-						"default_fontname" : "Arial"
+						"default_fontname" : "Arial",
+						"fontname" : "Arial",
+						"default_fontsize" : 12.0
 					}
 
 				}
@@ -2717,15 +2769,15 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "pause",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
-					"presentation_rect" : [ 62.0, 86.0, 51.0, 17.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 62.0, 86.0, 51.0, 17.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-55",
 					"patching_rect" : [ 226.0, 269.0, 40.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-55"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -2733,12 +2785,12 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "hear MIDI playing",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"id" : "obj-54",
 					"patching_rect" : [ -32.0, 255.0, 150.0, 19.0 ],
-					"id" : "obj-54"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -2746,30 +2798,30 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "loadmess 1",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-33",
 					"patching_rect" : [ 110.0, 692.0, 68.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-33"
+					"fontname" : "Verdana"
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "umenu",
+					"numinlets" : 1,
+					"fontsize" : 10.0,
+					"numoutlets" : 3,
+					"items" : [ "off", ",", "realtime", ",", "offline" ],
+					"presentation_rect" : [ 232.0, 138.0, 100.0, 19.0 ],
+					"outlettype" : [ "int", "", "" ],
+					"types" : [  ],
+					"id" : "obj-32",
+					"patching_rect" : [ 113.0, 722.0, 100.0, 19.0 ],
 					"fontname" : "Verdana",
-					"numinlets" : 1,
-					"presentation_rect" : [ 232.0, 138.0, 100.0, 19.0 ],
-					"fontsize" : 10.0,
-					"items" : [ "off", ",", "realtime", ",", "offline" ],
-					"numoutlets" : 3,
-					"types" : [  ],
-					"patching_rect" : [ 113.0, 722.0, 100.0, 19.0 ],
-					"outlettype" : [ "int", "", "" ],
-					"presentation" : 1,
-					"id" : "obj-32"
+					"presentation" : 1
 				}
 
 			}
@@ -2777,29 +2829,29 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "switch",
-					"fontname" : "Verdana",
 					"numinlets" : 3,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-31",
 					"patching_rect" : [ 121.0, 786.0, 46.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-31"
+					"fontname" : "Verdana"
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "message",
-					"text" : "59 85 87167.992188",
-					"fontname" : "Verdana",
+					"text" : "53 118 3981.73877",
 					"numinlets" : 2,
-					"presentation_rect" : [ 32.0, 199.0, 201.0, 17.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 32.0, 199.0, 201.0, 17.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-29",
 					"patching_rect" : [ 173.0, 787.0, 201.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-29"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -2807,13 +2859,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "prepend set",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-27",
 					"patching_rect" : [ 190.0, 627.0, 70.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-27"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -2821,13 +2873,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "append",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-26",
 					"patching_rect" : [ 190.0, 655.0, 47.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-26"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -2835,15 +2887,15 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "next",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
-					"presentation_rect" : [ 22.0, 86.0, 33.0, 17.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 22.0, 86.0, 33.0, 17.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-25",
 					"patching_rect" : [ 182.0, 268.0, 33.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-25"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -2851,14 +2903,14 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "speed",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 245.0, 62.0, 150.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 245.0, 62.0, 150.0, 19.0 ],
+					"id" : "obj-9",
 					"patching_rect" : [ 571.0, 365.0, 150.0, 19.0 ],
-					"presentation" : 1,
-					"id" : "obj-9"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -2866,14 +2918,14 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "MIDI representation",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 16.0, -3.0, 150.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 16.0, -3.0, 150.0, 19.0 ],
+					"id" : "obj-24",
 					"patching_rect" : [ 1141.0, 862.0, 150.0, 19.0 ],
-					"presentation" : 1,
-					"id" : "obj-24"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -2881,14 +2933,14 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "audio",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 14.0, 119.0, 150.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 14.0, 119.0, 150.0, 19.0 ],
+					"id" : "obj-23",
 					"patching_rect" : [ 1126.0, 847.0, 150.0, 19.0 ],
-					"presentation" : 1,
-					"id" : "obj-23"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -2896,14 +2948,14 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "send notes",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 149.0, 169.0, 67.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 149.0, 169.0, 67.0, 19.0 ],
+					"id" : "obj-10",
 					"patching_rect" : [ 1243.0, 894.0, 150.0, 19.0 ],
-					"presentation" : 1,
-					"id" : "obj-10"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -2911,13 +2963,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "loadmess 1",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-3",
 					"patching_rect" : [ 170.0, 442.0, 68.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-3"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -2926,14 +2978,14 @@
 					"maxclass" : "comment",
 					"text" : "midi playing on/off",
 					"presentation_linecount" : 2,
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 215.0, 84.0, 73.0, 31.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 215.0, 84.0, 73.0, 31.0 ],
+					"id" : "obj-8",
 					"patching_rect" : [ 712.0, 190.0, 150.0, 19.0 ],
-					"presentation" : 1,
-					"id" : "obj-8"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -2943,14 +2995,14 @@
 					"text" : "plays midi and accompanying audio too",
 					"linecount" : 2,
 					"presentation_linecount" : 2,
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 294.0, 517.0, 150.0, 31.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 294.0, 517.0, 150.0, 31.0 ],
+					"id" : "obj-6",
 					"patching_rect" : [ 906.0, 904.0, 150.0, 31.0 ],
-					"presentation" : 1,
-					"id" : "obj-6"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -2958,12 +3010,12 @@
 				"box" : 				{
 					"maxclass" : "toggle",
 					"numinlets" : 1,
+					"numoutlets" : 1,
 					"presentation_rect" : [ 188.0, 84.0, 20.0, 20.0 ],
-					"numoutlets" : 1,
+					"outlettype" : [ "int" ],
+					"id" : "obj-4",
 					"patching_rect" : [ -24.0, 341.0, 20.0, 20.0 ],
-					"outlettype" : [ "int" ],
-					"presentation" : 1,
-					"id" : "obj-4"
+					"presentation" : 1
 				}
 
 			}
@@ -2971,13 +3023,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "gate",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-1",
 					"patching_rect" : [ -15.0, 373.0, 33.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-1"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -2985,13 +3037,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "loadmess 1",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-138",
 					"patching_rect" : [ -28.0, 861.0, 68.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-138"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -2999,31 +3051,31 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "prepend /setSpeedPrior",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 128.0, 383.0, 129.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 128.0, 383.0, 129.0, 19.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-137",
 					"patching_rect" : [ -29.0, 923.0, 129.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-137"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "flonum",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 133.0, 351.0, 50.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 2,
-					"minimum" : 0.0,
+					"presentation_rect" : [ 133.0, 351.0, 50.0, 19.0 ],
+					"outlettype" : [ "float", "bang" ],
+					"id" : "obj-136",
 					"patching_rect" : [ -29.0, 884.0, 50.0, 19.0 ],
-					"outlettype" : [ "float", "bang" ],
+					"fontname" : "Verdana",
 					"presentation" : 1,
-					"id" : "obj-136"
+					"minimum" : 0.0
 				}
 
 			}
@@ -3031,15 +3083,15 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "open",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
-					"presentation_rect" : [ 58.0, 170.0, 35.0, 17.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 58.0, 170.0, 35.0, 17.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-113",
 					"patching_rect" : [ 622.0, 320.0, 35.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-113"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -3047,13 +3099,13 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "0",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-110",
 					"patching_rect" : [ 583.0, 320.0, 32.5, 17.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-110"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -3061,15 +3113,15 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "1",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
-					"presentation_rect" : [ 19.0, 172.0, 32.5, 17.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 19.0, 172.0, 32.5, 17.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-105",
 					"patching_rect" : [ 542.0, 320.0, 32.5, 17.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-105"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -3077,13 +3129,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "sfplay~ 2",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 3,
-					"patching_rect" : [ 532.0, 343.0, 58.0, 19.0 ],
 					"outlettype" : [ "signal", "signal", "bang" ],
 					"id" : "obj-65",
+					"patching_rect" : [ 532.0, 343.0, 58.0, 19.0 ],
+					"fontname" : "Verdana",
 					"save" : [ "#N", "sfplay~", "", 2, 120960, 0, "", ";" ]
 				}
 
@@ -3092,12 +3144,12 @@
 				"box" : 				{
 					"maxclass" : "toggle",
 					"numinlets" : 1,
+					"numoutlets" : 1,
 					"presentation_rect" : [ 126.0, 169.0, 20.0, 20.0 ],
-					"numoutlets" : 1,
+					"outlettype" : [ "int" ],
+					"id" : "obj-109",
 					"patching_rect" : [ 170.0, 471.0, 20.0, 20.0 ],
-					"outlettype" : [ "int" ],
-					"presentation" : 1,
-					"id" : "obj-109"
+					"presentation" : 1
 				}
 
 			}
@@ -3105,13 +3157,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "zl slice 1",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 2,
+					"outlettype" : [ "", "" ],
+					"id" : "obj-82",
 					"patching_rect" : [ -54.0, 200.0, 54.0, 19.0 ],
-					"outlettype" : [ "", "" ],
-					"id" : "obj-82"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -3120,12 +3172,12 @@
 					"maxclass" : "ezdac~",
 					"varname" : "autohelp_dac",
 					"numinlets" : 2,
+					"numoutlets" : 0,
 					"presentation_rect" : [ 186.0, 14.0, 45.0, 45.0 ],
-					"numoutlets" : 0,
+					"id" : "obj-94",
 					"patching_rect" : [ 531.0, 388.0, 45.0, 45.0 ],
-					"presentation" : 1,
-					"id" : "obj-94",
-					"local" : 1
+					"local" : 1,
+					"presentation" : 1
 				}
 
 			}
@@ -3133,15 +3185,15 @@
 				"box" : 				{
 					"maxclass" : "panel",
 					"varname" : "startwinwdow_panel",
+					"numinlets" : 1,
+					"border" : 2,
+					"numoutlets" : 0,
+					"presentation_rect" : [ 12.0, 136.0, 205.0, 57.0 ],
 					"bordercolor" : [ 0.392157, 0.792157, 0.117647, 1.0 ],
-					"border" : 2,
-					"numinlets" : 1,
-					"presentation_rect" : [ 12.0, 136.0, 205.0, 57.0 ],
-					"numoutlets" : 0,
+					"bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ],
+					"id" : "obj-95",
 					"patching_rect" : [ 1093.0, 826.0, 100.0, 55.0 ],
-					"presentation" : 1,
-					"id" : "obj-95",
-					"bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ]
+					"presentation" : 1
 				}
 
 			}
@@ -3150,9 +3202,9 @@
 					"maxclass" : "button",
 					"numinlets" : 1,
 					"numoutlets" : 1,
-					"patching_rect" : [ 306.0, 171.0, 20.0, 20.0 ],
 					"outlettype" : [ "bang" ],
-					"id" : "obj-71"
+					"id" : "obj-71",
+					"patching_rect" : [ 306.0, 171.0, 20.0, 20.0 ]
 				}
 
 			}
@@ -3160,13 +3212,13 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "/stopplaying",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-72",
 					"patching_rect" : [ 336.0, 492.0, 73.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-72"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -3175,9 +3227,9 @@
 					"maxclass" : "button",
 					"numinlets" : 1,
 					"numoutlets" : 1,
-					"patching_rect" : [ 422.0, 174.0, 20.0, 20.0 ],
 					"outlettype" : [ "bang" ],
-					"id" : "obj-70"
+					"id" : "obj-70",
+					"patching_rect" : [ 422.0, 174.0, 20.0, 20.0 ]
 				}
 
 			}
@@ -3185,13 +3237,13 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "/startplaying",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-63",
 					"patching_rect" : [ 244.0, 490.0, 75.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-63"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -3199,13 +3251,13 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "prepend /midinoteon",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"outlettype" : [ "" ],
+					"id" : "obj-69",
 					"patching_rect" : [ 122.0, 833.0, 116.0, 19.0 ],
-					"outlettype" : [ "" ],
-					"id" : "obj-69"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -3213,28 +3265,28 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "udpsend 127.0.0.1 12121",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"id" : "obj-68",
 					"patching_rect" : [ 229.0, 962.0, 141.0, 19.0 ],
-					"id" : "obj-68"
+					"fontname" : "Verdana"
 				}
 
 			}
 , 			{
 				"box" : 				{
 					"maxclass" : "message",
-					"text" : "59 85",
-					"fontname" : "Verdana",
+					"text" : "53 118",
 					"numinlets" : 2,
-					"presentation_rect" : [ 30.0, 255.0, 50.0, 17.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 30.0, 255.0, 50.0, 17.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-67",
 					"patching_rect" : [ -47.0, 229.0, 50.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-67"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -3242,21 +3294,21 @@
 				"box" : 				{
 					"maxclass" : "ftm.object",
 					"text" : "sequence midi",
+					"description" : "sequence midi",
+					"ftm_scope" : 2,
+					"numinlets" : 1,
 					"editor_interface" : "matrix",
+					"fontsize" : 12.0,
+					"numoutlets" : 2,
+					"scope" : 0,
+					"presentation_rect" : [ 712.0, 250.0, 165.820312, 20.0 ],
+					"outlettype" : [ "", "" ],
+					"persistence" : 0,
+					"id" : "obj-14",
+					"patching_rect" : [ 712.0, 250.0, 165.820312, 20.0 ],
 					"fontname" : "Verdana",
-					"ftm_scope" : 2,
-					"description" : "sequence midi",
-					"scope" : 0,
-					"numinlets" : 1,
-					"presentation_rect" : [ 712.0, 250.0, 165.820312, 20.0 ],
-					"fontsize" : 12.0,
-					"ftm_objref_conv" : 0,
-					"numoutlets" : 2,
-					"patching_rect" : [ 712.0, 250.0, 165.820312, 20.0 ],
-					"persistence" : 0,
-					"outlettype" : [ "", "" ],
-					"id" : "obj-14",
-					"name" : "play.seq"
+					"name" : "play.seq",
+					"ftm_objref_conv" : 0
 				}
 
 			}
@@ -3264,15 +3316,15 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "import",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
-					"presentation_rect" : [ 19.0, 57.0, 43.0, 17.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 19.0, 57.0, 43.0, 17.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-15",
 					"patching_rect" : [ 712.0, 222.0, 43.0, 17.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-15"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -3280,14 +3332,14 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "import MIDI file",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
-					"presentation_rect" : [ 60.0, 56.0, 90.0, 19.0 ],
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"presentation_rect" : [ 60.0, 56.0, 90.0, 19.0 ],
+					"id" : "obj-16",
 					"patching_rect" : [ 757.0, 221.0, 90.0, 19.0 ],
-					"presentation" : 1,
-					"id" : "obj-16"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -3295,12 +3347,12 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "play an FTM track",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"id" : "obj-17",
 					"patching_rect" : [ 60.0, 23.0, 98.0, 19.0 ],
-					"id" : "obj-17"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -3308,12 +3360,12 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "ftm.play",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 24.0,
 					"numoutlets" : 0,
+					"id" : "obj-18",
 					"patching_rect" : [ 54.0, -10.0, 108.0, 36.0 ],
-					"id" : "obj-18"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -3321,12 +3373,12 @@
 				"box" : 				{
 					"maxclass" : "comment",
 					"text" : "FTM basic objects",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"id" : "obj-19",
 					"patching_rect" : [ 48.0, -22.0, 97.0, 19.0 ],
-					"id" : "obj-19"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -3335,9 +3387,9 @@
 					"maxclass" : "fpic",
 					"numinlets" : 1,
 					"numoutlets" : 0,
+					"id" : "obj-20",
 					"patching_rect" : [ 8.0, -25.0, 54.0, 74.0 ],
-					"pic" : "ftm.help.jpg",
-					"id" : "obj-20"
+					"pic" : "ftm.help.jpg"
 				}
 
 			}
@@ -3345,12 +3397,12 @@
 				"box" : 				{
 					"maxclass" : "newobj",
 					"text" : "midiout",
-					"fontname" : "Verdana",
 					"numinlets" : 1,
 					"fontsize" : 10.0,
 					"numoutlets" : 0,
+					"id" : "obj-44",
 					"patching_rect" : [ -9.0, 401.0, 48.0, 19.0 ],
-					"id" : "obj-44"
+					"fontname" : "Verdana"
 				}
 
 			}
@@ -3358,15 +3410,15 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "play",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
-					"presentation_rect" : [ 18.0, 22.0, 52.0, 26.0 ],
 					"fontsize" : 18.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 18.0, 22.0, 52.0, 26.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-46",
 					"patching_rect" : [ 409.0, 130.0, 52.0, 26.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-46"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -3374,15 +3426,15 @@
 				"box" : 				{
 					"maxclass" : "message",
 					"text" : "stop",
-					"fontname" : "Verdana",
 					"numinlets" : 2,
-					"presentation_rect" : [ 86.0, 22.0, 51.0, 26.0 ],
 					"fontsize" : 18.0,
 					"numoutlets" : 1,
+					"presentation_rect" : [ 86.0, 22.0, 51.0, 26.0 ],
+					"outlettype" : [ "" ],
+					"id" : "obj-49",
 					"patching_rect" : [ 306.0, 129.0, 51.0, 26.0 ],
-					"outlettype" : [ "" ],
-					"presentation" : 1,
-					"id" : "obj-49"
+					"fontname" : "Verdana",
+					"presentation" : 1
 				}
 
 			}
@@ -3390,21 +3442,30 @@
 				"box" : 				{
 					"maxclass" : "panel",
 					"varname" : "startwinwdow_panel[1]",
+					"numinlets" : 1,
+					"border" : 2,
+					"numoutlets" : 0,
+					"presentation_rect" : [ 12.0, 17.0, 167.0, 98.0 ],
 					"bordercolor" : [ 0.392157, 0.792157, 0.117647, 1.0 ],
-					"border" : 2,
-					"numinlets" : 1,
-					"presentation_rect" : [ 12.0, 17.0, 167.0, 98.0 ],
-					"numoutlets" : 0,
+					"bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ],
+					"id" : "obj-5",
 					"patching_rect" : [ 1093.0, 886.0, 100.0, 55.0 ],
-					"presentation" : 1,
-					"id" : "obj-5",
-					"bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ]
+					"presentation" : 1
 				}
 
 			}
  ],
 		"lines" : [ 			{
 				"patchline" : 				{
+					"source" : [ "obj-30", 0 ],
+					"destination" : [ "obj-22", 0 ],
+					"hidden" : 0,
+					"midpoints" : [  ]
+				}
+
+			}
+, 			{
+				"patchline" : 				{
 					"source" : [ "obj-102", 0 ],
 					"destination" : [ "obj-56", 0 ],
 					"hidden" : 0,
@@ -4222,6 +4283,33 @@
 				}
 
 			}
+, 			{
+				"patchline" : 				{
+					"source" : [ "obj-78", 0 ],
+					"destination" : [ "obj-62", 0 ],
+					"hidden" : 0,
+					"midpoints" : [  ]
+				}
+
+			}
+, 			{
+				"patchline" : 				{
+					"source" : [ "obj-62", 0 ],
+					"destination" : [ "obj-57", 0 ],
+					"hidden" : 0,
+					"midpoints" : [  ]
+				}
+
+			}
+, 			{
+				"patchline" : 				{
+					"source" : [ "obj-82", 1 ],
+					"destination" : [ "obj-62", 1 ],
+					"hidden" : 0,
+					"midpoints" : [  ]
+				}
+
+			}
  ]
 	}