diff src/melodyTriangle.cpp @ 31:417deb31dd4e

Added a switch to control snap-to-true-position behaviour of tokens; reduced default amplitude of voices.
author samer
date Tue, 07 Feb 2012 14:23:32 +0000
parents 9e8c19c90986
children 06a2fdb333ca
line wrap: on
line diff
--- a/src/melodyTriangle.cpp	Mon Feb 06 11:50:03 2012 +0000
+++ b/src/melodyTriangle.cpp	Tue Feb 07 14:23:32 2012 +0000
@@ -7,7 +7,7 @@
 
 melodyTriangle::melodyTriangle(const char *host, int port, int numVoices, 
 							   bool enableKeys,int voiceIdOffset,int receivePort): 
-	numVoices(numVoices), receivePort(receivePort),
+	numVoices(numVoices), receivePort(receivePort), snapTruePos(enableKeys),
 	enableKeys(enableKeys), allowExit(true), ratio(2), tempoIndex(4),
 	display_msg(""), display_frames(0)
 {
@@ -201,6 +201,7 @@
 					
 				case ' ': send("/marker"); break;
 				case 'S': send("/save"); break;
+				case 'r': send("/report"); break;
 				case 'C': sendReplyTo(); sendCalibrate(); break;
 				case 'F': ofToggleFullscreen(); break;
 				case 'R': reset(); break;
@@ -255,7 +256,7 @@
 void melodyTriangle::mouseReleased(int x, int y, int button){ 
 	if (voiceGrabbed!=NULL) {
 		Voice *v=voiceGrabbed;
-		if (v->status==Voice::clear) {
+		if (v->status==Voice::clear && v->truex>=0) {
 			v->posx=v->truex;
 			v->posy=v->truey;
 			v->truex=v->truey=-1;
@@ -310,21 +311,24 @@
 				float x=m.getArgAsFloat(1);
 				float y=m.getArgAsFloat(2);
 				v->status=Voice::clear;
-				if (voiceGrabbed==v) {
-					v->truex=x;
-					v->truey=y;
-				} else {
-					v->posx=x;
-					v->posy=y;
-					v->truex=v->truey=-1;
+				if (snapTruePos) {
+					if (voiceGrabbed==v) {
+						v->truex=x;
+						v->truey=y;
+					} else {
+						v->posx=x;
+						v->posy=y;
+						v->truex=v->truey=-1;
+					}
 				}
-				printf("True position of %d: %4.1f, %4.1f\n",v->id,v->truex,v->truey);
+				printf("True position of %d: %4.1f, %4.1f\n",v->id,x,y);
 			} else if (msg=="position") {
 				int x=(int)m.getArgAsFloat(1);
 				int y=(int)m.getArgAsFloat(2);
 				v->posx=x;
 				v->posy=y;
 				v->inTriangle=!clipToTriangle(&x,&y);
+				v->status=Voice::clear;
 				if (voiceGrabbed==v) voiceGrabbed=NULL;
 			} else if (msg=="running") {
 				v->isActive  = m.getArgAsInt32(1) ? true : false;
@@ -362,6 +366,7 @@
 
 void melodyTriangle::setKeyboardEnable(bool en) {
 	enableKeys=en;
+	snapTruePos=en;
 	display_msg=en ? "Keyboard enabled" : "Keybard disabled";
 	display_frames=40;
 }