comparison 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
comparison
equal deleted inserted replaced
30:9e8c19c90986 31:417deb31dd4e
5 5
6 static int tempi[]={20,30,45,60,90,120,150,180}; 6 static int tempi[]={20,30,45,60,90,120,150,180};
7 7
8 melodyTriangle::melodyTriangle(const char *host, int port, int numVoices, 8 melodyTriangle::melodyTriangle(const char *host, int port, int numVoices,
9 bool enableKeys,int voiceIdOffset,int receivePort): 9 bool enableKeys,int voiceIdOffset,int receivePort):
10 numVoices(numVoices), receivePort(receivePort), 10 numVoices(numVoices), receivePort(receivePort), snapTruePos(enableKeys),
11 enableKeys(enableKeys), allowExit(true), ratio(2), tempoIndex(4), 11 enableKeys(enableKeys), allowExit(true), ratio(2), tempoIndex(4),
12 display_msg(""), display_frames(0) 12 display_msg(""), display_frames(0)
13 { 13 {
14 for (int i=0;i<numVoices;i++) voices[i]=new Voice(i+1+voiceIdOffset); 14 for (int i=0;i<numVoices;i++) voices[i]=new Voice(i+1+voiceIdOffset);
15 15
199 send("/tempo",tempi[tempoIndex]); 199 send("/tempo",tempi[tempoIndex]);
200 break; 200 break;
201 201
202 case ' ': send("/marker"); break; 202 case ' ': send("/marker"); break;
203 case 'S': send("/save"); break; 203 case 'S': send("/save"); break;
204 case 'r': send("/report"); break;
204 case 'C': sendReplyTo(); sendCalibrate(); break; 205 case 'C': sendReplyTo(); sendCalibrate(); break;
205 case 'F': ofToggleFullscreen(); break; 206 case 'F': ofToggleFullscreen(); break;
206 case 'R': reset(); break; 207 case 'R': reset(); break;
207 case 'Q': ofAppGlutWindow::exitApp(); 208 case 'Q': ofAppGlutWindow::exitApp();
208 case OF_KEY_ESC: setKeyboardEnable(false); break; 209 case OF_KEY_ESC: setKeyboardEnable(false); break;
253 } 254 }
254 255
255 void melodyTriangle::mouseReleased(int x, int y, int button){ 256 void melodyTriangle::mouseReleased(int x, int y, int button){
256 if (voiceGrabbed!=NULL) { 257 if (voiceGrabbed!=NULL) {
257 Voice *v=voiceGrabbed; 258 Voice *v=voiceGrabbed;
258 if (v->status==Voice::clear) { 259 if (v->status==Voice::clear && v->truex>=0) {
259 v->posx=v->truex; 260 v->posx=v->truex;
260 v->posy=v->truey; 261 v->posy=v->truey;
261 v->truex=v->truey=-1; 262 v->truex=v->truey=-1;
262 } 263 }
263 voiceGrabbed=NULL; 264 voiceGrabbed=NULL;
308 else if (msg=="pending") v->status=Voice::pending; 309 else if (msg=="pending") v->status=Voice::pending;
309 else if (msg=="received") { 310 else if (msg=="received") {
310 float x=m.getArgAsFloat(1); 311 float x=m.getArgAsFloat(1);
311 float y=m.getArgAsFloat(2); 312 float y=m.getArgAsFloat(2);
312 v->status=Voice::clear; 313 v->status=Voice::clear;
313 if (voiceGrabbed==v) { 314 if (snapTruePos) {
314 v->truex=x; 315 if (voiceGrabbed==v) {
315 v->truey=y; 316 v->truex=x;
316 } else { 317 v->truey=y;
317 v->posx=x; 318 } else {
318 v->posy=y; 319 v->posx=x;
319 v->truex=v->truey=-1; 320 v->posy=y;
321 v->truex=v->truey=-1;
322 }
320 } 323 }
321 printf("True position of %d: %4.1f, %4.1f\n",v->id,v->truex,v->truey); 324 printf("True position of %d: %4.1f, %4.1f\n",v->id,x,y);
322 } else if (msg=="position") { 325 } else if (msg=="position") {
323 int x=(int)m.getArgAsFloat(1); 326 int x=(int)m.getArgAsFloat(1);
324 int y=(int)m.getArgAsFloat(2); 327 int y=(int)m.getArgAsFloat(2);
325 v->posx=x; 328 v->posx=x;
326 v->posy=y; 329 v->posy=y;
327 v->inTriangle=!clipToTriangle(&x,&y); 330 v->inTriangle=!clipToTriangle(&x,&y);
331 v->status=Voice::clear;
328 if (voiceGrabbed==v) voiceGrabbed=NULL; 332 if (voiceGrabbed==v) voiceGrabbed=NULL;
329 } else if (msg=="running") { 333 } else if (msg=="running") {
330 v->isActive = m.getArgAsInt32(1) ? true : false; 334 v->isActive = m.getArgAsInt32(1) ? true : false;
331 } else if (msg=="params") { 335 } else if (msg=="params") {
332 v->octave = m.getArgAsInt32(1); 336 v->octave = m.getArgAsInt32(1);
360 } 364 }
361 } 365 }
362 366
363 void melodyTriangle::setKeyboardEnable(bool en) { 367 void melodyTriangle::setKeyboardEnable(bool en) {
364 enableKeys=en; 368 enableKeys=en;
369 snapTruePos=en;
365 display_msg=en ? "Keyboard enabled" : "Keybard disabled"; 370 display_msg=en ? "Keyboard enabled" : "Keybard disabled";
366 display_frames=40; 371 display_frames=40;
367 } 372 }
368 373
369 // OSC Message sending ----------------------------------------- 374 // OSC Message sending -----------------------------------------