# HG changeset patch # User samer # Date 1328624612 0 # Node ID 417deb31dd4ef21b06b999d87eea87d4aed14c4c # Parent 9e8c19c909861c3732ad9195ae3c1c3fe674b728 Added a switch to control snap-to-true-position behaviour of tokens; reduced default amplitude of voices. diff -r 9e8c19c90986 -r 417deb31dd4e src/Voice.cpp --- a/src/Voice.cpp Mon Feb 06 11:50:03 2012 +0000 +++ b/src/Voice.cpp Tue Feb 07 14:23:32 2012 +0000 @@ -12,7 +12,7 @@ inline static double min(double x,double y) { return (xstatus==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; } diff -r 9e8c19c90986 -r 417deb31dd4e src/melodyTriangle.h --- a/src/melodyTriangle.h Mon Feb 06 11:50:03 2012 +0000 +++ b/src/melodyTriangle.h Tue Feb 07 14:23:32 2012 +0000 @@ -69,6 +69,7 @@ bool constrained; bool enableKeys; bool allowExit; + bool snapTruePos; int display_frames; int ratio; int tempoIndex;