hekeus@6: /* hekeus@6: * Voice.cpp hekeus@6: * MelodyTriangle hekeus@6: * hekeus@6: * Created by Henrik Ekeus on 12/01/2012. hekeus@6: * Copyright 2012 Queen Mary University of London. All rights reserved. hekeus@6: * hekeus@6: */ hekeus@6: hekeus@6: #include "Voice.h" hekeus@6: samer@13: inline static double min(double x,double y) { return (x=0) { samer@25: ofSetColor(230,230,230); samer@25: ofLine(posx,posy,truex,truey); samer@25: // ofNoFill(); ofCircle(truex, truey, RADIUS/2-1); samer@25: } samer@25: ofSetColor(100*r,60*g,60*b); samer@18: ofFill(); samer@23: ofCircle(posx, posy, RADIUS); samer@25: ofNoFill(); samer@25: if (highlight) ofSetColor(230, 230, 230); samer@25: ofCircle(posx, posy, RADIUS); samer@25: } samer@25: samer@25: void Voice::draw_alt(bool highlight){ samer@32: if (!isVisible) return; samer@32: samer@25: int r,g,b; samer@25: switch (status) { samer@25: case clear: r=1; g=1; b=0; break; samer@25: default: r=1; g=0; b=0; break; samer@25: } samer@25: if (isActive) { r=2*r; g=2*g; b=2*b; } samer@25: samer@25: if (inTriangle && truex>=0) { samer@25: ofSetColor(230,230,230); samer@25: ofLine(posx,posy,truex,truey); samer@25: ofSetColor(100*r,60*g,60*b); samer@25: ofFill(); samer@25: ofCircle(truex, truey, RADIUS); samer@18: ofNoFill(); samer@25: if (highlight) ofSetColor(230, 230, 230); samer@25: ofCircle(truex, truey, RADIUS); samer@25: } else { samer@25: ofSetColor(100*r,60*g,60*b); samer@25: ofFill(); samer@23: ofCircle(posx, posy, RADIUS); hekeus@6: ofNoFill(); samer@25: if (highlight) ofSetColor(230, 230, 230); samer@23: ofCircle(posx, posy, RADIUS); hekeus@6: } hekeus@6: } hekeus@6: samer@25: samer@22: double Voice::louder() { return amplitude=min(1,amplitude*1.0625); } samer@22: double Voice::quieter() { return amplitude/=1.0625; }