Mercurial > hg > screen-ui
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 ----------------------------------------- |