annotate src/Voice.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 f4ebb87adec1
children 06a2fdb333ca
rev   line source
hekeus@6 1 /*
hekeus@6 2 * Voice.cpp
hekeus@6 3 * MelodyTriangle
hekeus@6 4 *
hekeus@6 5 * Created by Henrik Ekeus on 12/01/2012.
hekeus@6 6 * Copyright 2012 Queen Mary University of London. All rights reserved.
hekeus@6 7 *
hekeus@6 8 */
hekeus@6 9
hekeus@6 10 #include "Voice.h"
hekeus@6 11
samer@13 12 inline static double min(double x,double y) { return (x<y) ? x : y; }
samer@13 13
samer@22 14 Voice::Voice(int id):
samer@31 15 isActive(true), inTriangle(false), octave(0), amplitude(0.5),
samer@25 16 status(pending), id(id), posx(0), posy(0), truex(-1), truey(-1) {}
hekeus@6 17
samer@23 18 void Voice::draw(bool highlight){
samer@25 19 int r,g,b;
samer@25 20 switch (status) {
samer@25 21 case clear: r=1; g=1; b=0; break;
samer@25 22 default: r=1; g=0; b=0; break;
samer@25 23 }
samer@25 24 if (isActive) { r=2*r; g=2*g; b=2*b; }
samer@25 25
samer@25 26 if (inTriangle && truex>=0) {
samer@25 27 ofSetColor(230,230,230);
samer@25 28 ofLine(posx,posy,truex,truey);
samer@25 29 // ofNoFill(); ofCircle(truex, truey, RADIUS/2-1);
samer@25 30 }
samer@25 31 ofSetColor(100*r,60*g,60*b);
samer@18 32 ofFill();
samer@23 33 ofCircle(posx, posy, RADIUS);
samer@25 34 ofNoFill();
samer@25 35 if (highlight) ofSetColor(230, 230, 230);
samer@25 36 ofCircle(posx, posy, RADIUS);
samer@25 37
samer@25 38 }
samer@25 39
samer@25 40 void Voice::draw_alt(bool highlight){
samer@25 41 int r,g,b;
samer@25 42 switch (status) {
samer@25 43 case clear: r=1; g=1; b=0; break;
samer@25 44 default: r=1; g=0; b=0; break;
samer@25 45 }
samer@25 46 if (isActive) { r=2*r; g=2*g; b=2*b; }
samer@25 47
samer@25 48 if (inTriangle && truex>=0) {
samer@25 49 ofSetColor(230,230,230);
samer@25 50 ofLine(posx,posy,truex,truey);
samer@25 51 ofSetColor(100*r,60*g,60*b);
samer@25 52 ofFill();
samer@25 53 ofCircle(truex, truey, RADIUS);
samer@18 54 ofNoFill();
samer@25 55 if (highlight) ofSetColor(230, 230, 230);
samer@25 56 ofCircle(truex, truey, RADIUS);
samer@25 57 } else {
samer@25 58 ofSetColor(100*r,60*g,60*b);
samer@25 59 ofFill();
samer@23 60 ofCircle(posx, posy, RADIUS);
hekeus@6 61 ofNoFill();
samer@25 62 if (highlight) ofSetColor(230, 230, 230);
samer@23 63 ofCircle(posx, posy, RADIUS);
hekeus@6 64 }
hekeus@6 65 }
hekeus@6 66
samer@25 67
samer@22 68 double Voice::louder() { return amplitude=min(1,amplitude*1.0625); }
samer@22 69 double Voice::quieter() { return amplitude/=1.0625; }