Mercurial > hg > screen-ui
diff src/melodyTriangle.cpp @ 32:06a2fdb333ca
Added visibilty control for tokens; removed token highlight when keyboard disabled.
author | samer |
---|---|
date | Wed, 15 Feb 2012 10:14:04 +0000 |
parents | 417deb31dd4e |
children | 260cc4f4d70a |
line wrap: on
line diff
--- a/src/melodyTriangle.cpp Tue Feb 07 14:23:32 2012 +0000 +++ b/src/melodyTriangle.cpp Wed Feb 15 10:14:04 2012 +0000 @@ -2,8 +2,10 @@ #include <GLUT/GLUT.h> #define BUFFER_ZONE 64 // have to drag this far to snap out of triange. +#define NUM_TEMPI 9 -static int tempi[]={20,30,45,60,90,120,150,180}; +static int tempi[]={20,30,45,60,90,120,150,180,240}; + melodyTriangle::melodyTriangle(const char *host, int port, int numVoices, bool enableKeys,int voiceIdOffset,int receivePort): @@ -121,7 +123,7 @@ ofTriangle(x1, y1, x2, y2, x3, y3); for (int i=numVoices-1; i>=0; i--){ - voices[i]->draw(voices[i]->isInVoice(mouseX,mouseY)); + voices[i]->draw(enableKeys && voices[i]->isInVoice(mouseX,mouseY)); } // display message if any @@ -195,7 +197,7 @@ send("/tempo",tempi[tempoIndex]); break; case '}': - if (tempoIndex<7) tempoIndex++; + if (tempoIndex<NUM_TEMPI-1) tempoIndex++; send("/tempo",tempi[tempoIndex]); break; @@ -223,7 +225,9 @@ void melodyTriangle::voiceKeypress(Voice *v, int key) { switch (key) { case 'a': - send(v->isActive ? "/stop" : "/start", v->id); + if (v->inTriangle) { + send(v->isActive ? "/stop" : "/start", v->id); + } v->isActive=!v->isActive; break; case OF_KEY_LEFT: sendShift(v->id,-1,ratio); break; @@ -305,6 +309,7 @@ string msg=msg_path.substr(8); Voice *v=get_voice(m.getArgAsInt32(0)); + cout << "Received " << msg_path << "\n"; if (msg=="requested") v->status=Voice::waiting; else if (msg=="pending") v->status=Voice::pending; else if (msg=="received") { @@ -335,6 +340,10 @@ } else if (msg=="params") { v->octave = m.getArgAsInt32(1); v->amplitude = m.getArgAsFloat(2); + } else if (msg=="visible") { + v->isVisible = m.getArgAsInt32(1); + if (voiceGrabbed==v && !v->isVisible) + voiceGrabbed=NULL; } } else if (msg_path=="/display") { display_msg=m.getArgAsString(0); @@ -405,34 +414,9 @@ printf("sent /reply_to %i\n",receivePort); } -void melodyTriangle::sendPeriod(int id, int num, int den){ - ofxOscMessage m; - m.setAddress("/period"); - m.addIntArg(id); - m.addIntArg(num); - m.addIntArg(den); - sender.sendMessage(m); - printf("sent /period %i %i %i\n",id,num,den); -} - -void melodyTriangle::sendShift(int id, int num, int den){ - ofxOscMessage m; - m.setAddress("/shift"); - m.addIntArg(id); - m.addIntArg(num); - m.addIntArg(den); - sender.sendMessage(m); - printf("sent /shift %i %i %i\n",id,num,den); -} - -void melodyTriangle::sendOctave(int id, int oct){ - ofxOscMessage m; - m.setAddress("/octave"); - m.addIntArg(id); - m.addIntArg(oct); - sender.sendMessage(m); - printf("sent /octave %i %i\n",id,oct); -} +void melodyTriangle::sendPeriod(int id, int num, int den){ send("/period",id,num,den); } +void melodyTriangle::sendShift(int id, int num, int den) { send("/shift",id,num,den); } +void melodyTriangle::sendOctave(int id, int oct){ send("/octave",id,oct); } void melodyTriangle::sendAmplitude(int id, float amp){ ofxOscMessage m; @@ -443,6 +427,27 @@ printf("sent /amplitude %i %1.3f\n",id,amp); } +void melodyTriangle::send(const char *addr, int a, int b, int c) { + ofxOscMessage m; + m.setAddress(addr); + m.addIntArg(a); + m.addIntArg(b); + m.addIntArg(c); + sender.sendMessage(m); + printf("sent %s %i\n",addr,a); +} + + +void melodyTriangle::send(const char *addr, int a, int b) { + ofxOscMessage m; + m.setAddress(addr); + m.addIntArg(a); + m.addIntArg(b); + sender.sendMessage(m); + printf("sent %s %i\n",addr,a); +} + + void melodyTriangle::send(const char *addr, int a) { ofxOscMessage m; m.setAddress(addr);