Mercurial > hg > screen-ui
changeset 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 | b65035712713 5a6c5f3be3c6 |
files | src/Voice.cpp src/Voice.h src/melodyTriangle.cpp src/melodyTriangle.h |
diffstat | 4 files changed, 47 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/src/Voice.cpp Tue Feb 07 14:23:32 2012 +0000 +++ b/src/Voice.cpp Wed Feb 15 10:14:04 2012 +0000 @@ -12,10 +12,13 @@ inline static double min(double x,double y) { return (x<y) ? x : y; } Voice::Voice(int id): - isActive(true), inTriangle(false), octave(0), amplitude(0.5), - status(pending), id(id), posx(0), posy(0), truex(-1), truey(-1) {} + isActive(true), inTriangle(false), isVisible(true), + octave(0), amplitude(0.5), status(pending), id(id), + posx(0), posy(0), truex(-1), truey(-1) {} void Voice::draw(bool highlight){ + if (!isVisible) return; + int r,g,b; switch (status) { case clear: r=1; g=1; b=0; break; @@ -34,10 +37,11 @@ ofNoFill(); if (highlight) ofSetColor(230, 230, 230); ofCircle(posx, posy, RADIUS); - } void Voice::draw_alt(bool highlight){ + if (!isVisible) return; + int r,g,b; switch (status) { case clear: r=1; g=1; b=0; break;
--- a/src/Voice.h Tue Feb 07 14:23:32 2012 +0000 +++ b/src/Voice.h Wed Feb 15 10:14:04 2012 +0000 @@ -29,6 +29,7 @@ int id; int posx,posy; + bool isVisible; bool isActive; bool inTriangle; int octave;
--- 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);
--- a/src/melodyTriangle.h Tue Feb 07 14:23:32 2012 +0000 +++ b/src/melodyTriangle.h Wed Feb 15 10:14:04 2012 +0000 @@ -45,6 +45,8 @@ void sendAmplitude(int id, float amp); void send(const char *msg); void send(const char *msg, int a); + void send(const char *msg, int a, int b); + void send(const char *msg, int a, int b, int c); void handleMessage(ofxOscMessage &m); bool clipToTriangle(int *cx, int *cy);