-Refactored GTrack, and privatized its dials / buttons

This commit is contained in:
Harry van Haaren 2013-10-03 01:50:16 +01:00
parent ee126e4382
commit c4e70c533f
6 changed files with 98 additions and 54 deletions

View file

@ -172,9 +172,13 @@ int DiskWriter::writeSession()
cJSON_AddStringToObject( track, "name", gui->getTrack(t)->bg.getLabel() ); cJSON_AddStringToObject( track, "name", gui->getTrack(t)->bg.getLabel() );
cJSON_AddNumberToObject( track, "fader", gui->getTrack(t)->getVolume()->value() ); cJSON_AddNumberToObject( track, "fader", gui->getTrack(t)->getVolume()->value() );
cJSON_AddNumberToObject( track, "side", gui->getTrack(t)->side.value() );
cJSON_AddNumberToObject( track, "post", gui->getTrack(t)->post.value() );
cJSON_AddNumberToObject( track, "reverb", gui->getTrack(t)->rev.value() ); cJSON_AddNumberToObject( track, "sendAmount" , gui->getTrack(t)->getSend() );
cJSON_AddNumberToObject( track, "sendActive" , gui->getTrack(t)->getSendActive() );
cJSON_AddNumberToObject( track, "xsideAmount", gui->getTrack(t)->getXSide() );
cJSON_AddNumberToObject( track, "keyActive" , gui->getTrack(t)->getKeyActive() );
// write clipData vector into clip placeholder // write clipData vector into clip placeholder
cJSON* clips = cJSON_CreateArray(); cJSON* clips = cJSON_CreateArray();

View file

@ -116,7 +116,7 @@ void handleGuiEvents()
if ( availableRead >= sizeof(EventTrackRecordArm) ) { if ( availableRead >= sizeof(EventTrackRecordArm) ) {
EventTrackRecordArm ev; EventTrackRecordArm ev;
jack_ringbuffer_read( rbToGui, (char*)&ev, sizeof(EventTrackRecordArm) ); jack_ringbuffer_read( rbToGui, (char*)&ev, sizeof(EventTrackRecordArm) );
gui->getTrack(ev.track)->recordArm( ev.recordArm ); gui->getTrack(ev.track)->setRecordActive( ev.recordArm );
break; } break; }
} }
@ -177,13 +177,14 @@ void handleGuiEvents()
if ( ev.send == SEND_POSTFADER ) if ( ev.send == SEND_POSTFADER )
if ( ev.track < NTRACKS ) if ( ev.track < NTRACKS )
{ {
gui->getTrack(ev.track)->rev.value( ev.value ); gui->getTrack(ev.track)->setSend(ev.value );
} }
if ( ev.send == SEND_XSIDE ) if ( ev.send == SEND_XSIDE )
if ( ev.track < NTRACKS ) if ( ev.track < NTRACKS )
{ {
gui->getTrack(ev.track)->post.value( ev.value ); gui->getTrack(ev.track)->setXSide( ev.value );
} }
/* SEND_KEY is a boolean: on or off: so no value needed
if ( ev.send == SEND_KEY ) if ( ev.send == SEND_KEY )
{ {
if ( ev.track < NTRACKS ) if ( ev.track < NTRACKS )
@ -191,6 +192,7 @@ void handleGuiEvents()
gui->getTrack(ev.track)->side.value( ev.value ); gui->getTrack(ev.track)->side.value( ev.value );
} }
} }
*/
} break; } } break; }
case Event::TRACK_SEND_ACTIVE: { case Event::TRACK_SEND_ACTIVE: {
@ -200,18 +202,20 @@ void handleGuiEvents()
if ( ev.send == SEND_POSTFADER ) if ( ev.send == SEND_POSTFADER )
if ( ev.track < NTRACKS ) if ( ev.track < NTRACKS )
{ {
gui->getTrack(ev.track)->rev.value( ev.active ); gui->getTrack(ev.track)->setSendActive(ev.active );
} }
/* XSIDE is always active
if ( ev.send == SEND_XSIDE ) if ( ev.send == SEND_XSIDE )
if ( ev.track < NTRACKS ) if ( ev.track < NTRACKS )
{ {
gui->getTrack(ev.track)->post.value( ev.active ); //gui->getTrack(ev.track)->( ev.active );
} }
*/
if ( ev.send == SEND_KEY ) if ( ev.send == SEND_KEY )
{ {
if ( ev.track < NTRACKS ) if ( ev.track < NTRACKS )
{ {
gui->getTrack(ev.track)->side.value( ev.active ); gui->getTrack(ev.track)->setKeyActive( ev.active );
} }
} }
} break; } } break; }

View file

@ -3,10 +3,10 @@
#include "gui.hxx" #include "gui.hxx"
static void gtrack_vol_cb(Fl_Widget *w, void *data); static void gtrack_vol_cb(Fl_Widget *w, void *data);
static void gtrack_side_cb(Fl_Widget *w, void *data); static void gtrack_key_cb(Fl_Widget *w, void *data);
static void gtrack_post_cb(Fl_Widget *w, void *data); static void gtrack_xsideDial_cb(Fl_Widget *w, void *data);
static void gtrack_reverb_cb(Fl_Widget *w, void *data); static void gtrack_sendDial_cb(Fl_Widget *w, void *data);
static void gtrack_active_cb(Fl_Widget *w, void *data); static void gtrack_send_cb(Fl_Widget *w, void *data);
static void gtrack_record_cb(Fl_Widget *w, void *data); static void gtrack_record_cb(Fl_Widget *w, void *data);
@ -22,30 +22,34 @@ GTrack::GTrack(int x, int y, int w, int h, const char* l ) :
volume(x+66, y +425, 36, 166, ""), volume(x+66, y +425, 36, 166, ""),
active (x+11, y +430 + 32, 50, 25, "Snd"), // active sendDial (x+21, y +430 + 0, 30, 30, ""),
sendActive (x+11, y +430 + 32, 50, 25, "Snd"),
side (x+11, y +430 + 101, 50, 25, "Key"), xsideDial (x+21, y +430 + 69, 30, 30, ""),
keyActive (x+11, y +430 + 101, 50, 25, "Key"),
recEnable(x+11, y +430 + 132, 50, 25, "Rec"), // record recordActive (x+11, y +430 + 132, 50, 25, "Rec")
post (x+21, y +430 + 69, 30, 30, ""),
rev (x+21, y +430 + 0, 30, 30, "")
{ {
ID = privateID++; ID = privateID++;
clipSel.setID( ID ); clipSel.setID( ID );
side.callback( gtrack_side_cb, this ); sendDial.callback( gtrack_sendDial_cb, this );
side.setColor( 0, 0.6, 1 ); sendActive.setColor( 0, 1.0, 0.0 );
sendActive.callback( gtrack_send_cb, this );
active.setColor( 0, 1.0, 0.0 ); xsideDial.callback( gtrack_xsideDial_cb, this );
active.callback( gtrack_active_cb, this ); xsideDial.align( FL_ALIGN_BOTTOM );
recEnable.setColor( 1, 0.0, 0.0 ); keyActive.callback( gtrack_key_cb, this );
recEnable.callback( gtrack_record_cb, this ); keyActive.setColor( 0, 0.6, 1 );
rev.callback( gtrack_reverb_cb, this );
post.callback( gtrack_post_cb, this ); recordActive.setColor( 1, 0.0, 0.0 );
post.align( FL_ALIGN_BOTTOM ); recordActive.callback( gtrack_record_cb, this );
volume.callback( gtrack_vol_cb, this ); volume.callback( gtrack_vol_cb, this );
@ -57,7 +61,23 @@ GTrack::GTrack(int x, int y, int w, int h, const char* l ) :
end(); // close the group end(); // close the group
} }
void gtrack_reverb_cb(Fl_Widget *w, void *data) float GTrack::getSend(){return sendDial.value(); }
float GTrack::getXSide(){return xsideDial.value(); }
bool GTrack::getSendActive (){return sendActive.value(); }
bool GTrack::getKeyActive (){return keyActive.value(); }
bool GTrack::getRecordActive(){return recordActive.value(); }
void GTrack::setSend(float s){ sendDial.value( s ); }
void GTrack::setXSide(float s){ xsideDial.value( s ); }
void GTrack::setSendActive(bool a){ sendActive.value( a ); }
void GTrack::setKeyActive(bool a){ keyActive.value( a ); }
void GTrack::setRecordActive(bool a){ recordActive.value( a ); }
void gtrack_sendDial_cb(Fl_Widget *w, void *data)
{ {
GTrack* track = (GTrack*) data; GTrack* track = (GTrack*) data;
EventTrackSend e( track->ID, SEND_POSTFADER, ((Avtk::Dial*)w)->value() ); EventTrackSend e( track->ID, SEND_POSTFADER, ((Avtk::Dial*)w)->value() );
@ -66,7 +86,7 @@ void gtrack_reverb_cb(Fl_Widget *w, void *data)
} }
void gtrack_side_cb(Fl_Widget *w, void *data) void gtrack_key_cb(Fl_Widget *w, void *data)
{ {
GTrack* track = (GTrack*) data; GTrack* track = (GTrack*) data;
Avtk::LightButton* d = (Avtk::LightButton*)w; Avtk::LightButton* d = (Avtk::LightButton*)w;
@ -85,7 +105,7 @@ void gtrack_side_cb(Fl_Widget *w, void *data)
} }
void gtrack_post_cb(Fl_Widget *w, void *data) void gtrack_xsideDial_cb(Fl_Widget *w, void *data)
{ {
GTrack* track = (GTrack*) data; GTrack* track = (GTrack*) data;
EventTrackSend e( track->ID, SEND_XSIDE, ((Avtk::Dial*)w)->value() ); EventTrackSend e( track->ID, SEND_XSIDE, ((Avtk::Dial*)w)->value() );
@ -102,7 +122,7 @@ void gtrack_vol_cb(Fl_Widget *w, void *data)
} }
void gtrack_active_cb(Fl_Widget *w, void *data) void gtrack_send_cb(Fl_Widget *w, void *data)
{ {
GTrack* track = (GTrack*) data; GTrack* track = (GTrack*) data;
Avtk::LightButton* d = (Avtk::LightButton*)w; Avtk::LightButton* d = (Avtk::LightButton*)w;
@ -138,7 +158,3 @@ void gtrack_record_cb(Fl_Widget *w, void *data)
printf("track %i record Arm %s\n", track->ID, b ? "off" : "on" ); printf("track %i record Arm %s\n", track->ID, b ? "off" : "on" );
} }
void GTrack::recordArm(bool b)
{
recEnable.value( b );
}

View file

@ -35,8 +35,24 @@ class GTrack : public Fl_Group
GTrack(int x, int y, int w, int h, const char* l = 0 ); GTrack(int x, int y, int w, int h, const char* l = 0 );
void recordArm(bool b);
// getters
float getSend();
float getXSide();
bool getSendActive();
bool getKeyActive();
bool getRecordActive();
// setters
void setSend(float s);
void setXSide(float s);
void setSendActive(bool a);
void setKeyActive(bool a);
void setRecordActive(bool a);
int ID; int ID;
Avtk::Background bg; Avtk::Background bg;
@ -49,11 +65,15 @@ class GTrack : public Fl_Group
Avtk::Volume volume; Avtk::Volume volume;
Avtk::LightButton active; private:
Avtk::LightButton side; Avtk::Dial sendDial;
Avtk::LightButton recEnable; Avtk::LightButton sendActive;
Avtk::Dial post;
Avtk::Dial rev; Avtk::Dial xsideDial;
Avtk::LightButton keyActive;
Avtk::LightButton recordActive;
static int privateID; static int privateID;
}; };

View file

@ -22,9 +22,9 @@ TrackOutput::TrackOutput(int t, AudioProcessor* ap) :
_toSidechain = 0.0; _toSidechain = 0.0;
_toPostSidechain = 0.0; _toPostSidechain = 0.0;
_toReverbActive = 0; _toPostfaderActive = 0;
_toSidechainActive = 0; _toKeyActive = 0;
_toPostSidechainActive = 0; _toXSideActive = 0;
} }
@ -54,13 +54,13 @@ void TrackOutput::setSendActive( int send, bool a )
switch( send ) switch( send )
{ {
case SEND_POSTFADER: case SEND_POSTFADER:
_toReverbActive = a; _toPostfaderActive = a;
break; break;
case SEND_KEY: case SEND_KEY:
_toSidechainActive = a; _toKeyActive = a;
break; break;
case SEND_XSIDE: case SEND_XSIDE:
_toPostSidechainActive = a; _toXSideActive = a;
break; break;
} }
} }
@ -122,14 +122,14 @@ void TrackOutput::process(unsigned int nframes, Buffers* buffers)
masterL[i] += tmp * _toMaster * (1-_toPostSidechain); masterL[i] += tmp * _toMaster * (1-_toPostSidechain);
masterR[i] += tmp * _toMaster * (1-_toPostSidechain); masterR[i] += tmp * _toMaster * (1-_toPostSidechain);
if ( _toReverbActive ) if ( _toPostfaderActive )
reverb[i] += tmp * _toReverb * _toMaster; reverb[i] += tmp * _toReverb * _toMaster;
if ( _toPostSidechainActive ) if ( _toXSideActive )
postSidechain[i] += tmp * _toPostSidechain * _toMaster; postSidechain[i] += tmp * _toPostSidechain * _toMaster;
// turning down an element in the mix should *NOT* influence sidechaining // turning down an element in the mix should *NOT* influence sidechaining
if ( _toSidechainActive ) if ( _toKeyActive )
sidechain[i] += tmp; sidechain[i] += tmp;
} }

View file

@ -49,9 +49,9 @@ class TrackOutput : public AudioProcessor
float _toSidechain; float _toSidechain;
float _toPostSidechain; float _toPostSidechain;
bool _toReverbActive; bool _toPostfaderActive;
bool _toSidechainActive; bool _toKeyActive;
bool _toPostSidechainActive; bool _toXSideActive;
/// Pointer to "previous" processor: the graph is backwards /// Pointer to "previous" processor: the graph is backwards
AudioProcessor* previousInChain; AudioProcessor* previousInChain;