-Implemented DSP / events for Input send handling, updated UI

This commit is contained in:
Harry van Haaren 2013-09-20 12:40:50 +01:00
parent 6c0e72353f
commit f1c5f55f80
7 changed files with 70 additions and 17 deletions

View file

@ -31,8 +31,9 @@ namespace Event
};
enum INPUT_TO
{
INPUT_TO_RECORD = 0,
INPUT_TO_SEND = 0,
INPUT_TO_MIX,
INPUT_TO_XSIDE,
};
enum {
@ -96,9 +97,10 @@ class EventMasterInputTo : public EventBase
int type() { return int(MASTER_INPUT_TO); }
uint32_t size() { return sizeof(EventMasterInputTo); }
int send;
float vol;
EventMasterInputTo(int s, float v) : send(s), vol(v){}
INPUT_TO place;
float value;
EventMasterInputTo() : value(-1){}
EventMasterInputTo(INPUT_TO p, float v) : place(p), value(v){}
};
class EventMasterVol : public EventBase

View file

@ -60,6 +60,12 @@ void handleDspEvents()
jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventMasterReturn) );
//jack->getLogic()->trackSend( ev.track, ev.send, ev.value );
} break; }
case Event::MASTER_INPUT_TO: {
if ( availableRead >= sizeof(EventMasterInputTo) ) {
EventMasterInputTo ev;
jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventMasterInputTo) );
jack->getLogic()->masterInputTo( ev.place, ev.value );
} break; }
// ========= GRID =====
case Event::GRID_EVENT: {
@ -144,6 +150,7 @@ void handleDspEvents()
jack->getLogic()->trackVolume( ev.track, ev.vol );
break; }
}
case Event::TRACK_SEND: {
if ( availableRead >= sizeof(EventTrackSend) ) {
EventTrackSend ev;

View file

@ -17,20 +17,20 @@ static void gmastertrack_volume_callback(Fl_Widget *w, void *data)
writeToDspRingbuffer( &e );
}
static void gmastertrack_keyVol_callback(Fl_Widget *w, void *data)
static void gmastertrack_xSideVol_callback(Fl_Widget *w, void *data)
{
//Avtk::Dial* b = (Avtk::Dial*)w;
//b->value( !b->value() );
//EventMetronomeActive e = EventMetronomeActive( b->value() );
//writeToDspRingbuffer( &e );
Avtk::Dial* b = (Avtk::Dial*)w;
float v = b->value();
EventMasterInputTo e = EventMasterInputTo( INPUT_TO_XSIDE, v );
writeToDspRingbuffer( &e );
}
static void gmastertrack_mixVol_callback(Fl_Widget *w, void *data)
{
//Avtk::Dial* b = (Avtk::Dial*)w;
//b->value( !b->value() );
//EventMetronomeActive e = EventMetronomeActive( b->value() );
//writeToDspRingbuffer( &e );
Avtk::Dial* b = (Avtk::Dial*)w;
float v = b->value();
EventMasterInputTo e = EventMasterInputTo( INPUT_TO_MIX, v );
writeToDspRingbuffer( &e );
}
static void gmastertrack_sidchainKeyButton_callback(Fl_Widget *w, void *data)
@ -49,6 +49,22 @@ static void gmastertrack_mixButton_callback(Fl_Widget *w, void *data)
//writeToDspRingbuffer( &e );
}
static void gmastertrack_sendButton_callback(Fl_Widget *w, void *data)
{
Avtk::LightButton* b = (Avtk::LightButton*)w;
b->value( !b->value() );
//EventMetronomeActive e = EventMetronomeActive( b->value() );
//writeToDspRingbuffer( &e );
}
static void gmastertrack_sendVol_callback(Fl_Widget *w, void *data)
{
Avtk::Dial* b = (Avtk::Dial*)w;
float v = b->value();
EventMasterInputTo e = EventMasterInputTo( INPUT_TO_SEND, v );
writeToDspRingbuffer( &e );
}
static void gmastertrack_button_callback(Fl_Widget *w, void *data)
{
if ( strcmp( w->label(), "Metro" ) == 0 )
@ -113,16 +129,17 @@ GMasterTrack::GMasterTrack(int x, int y, int w, int h, const char* l ) :
tempoDial.callback( gmastertrack_tempoDial_callback, 0 );
inputToSidechainKey.value( 0 );
inputToSidechainKey.setColor( 0, 0.6, 1 );
inputToSidechainKey.callback( gmastertrack_sidchainKeyButton_callback, 0 );
inputToSidechainSignalVol.value( 0 );
inputToMix.value( 1 );
inputToMixVol.value( 1 );
inputToSidechainSignalVol.callback( gmastertrack_keyVol_callback, 0 );
//inputToMix.setColor( 0, 0.0, 0 );
inputToMixVol.callback ( gmastertrack_mixVol_callback, 0 );
inputToSend.setColor( 0, 1.0, 0 );
inputToSidechainSignalVol.callback( gmastertrack_xSideVol_callback, 0 );
tempoDial.align( FL_ALIGN_CENTER );
returnVol.align( FL_ALIGN_CENTER );

View file

@ -345,6 +345,21 @@ int Jack::process (jack_nframes_t nframes)
void Jack::masterVolume(float vol)
{
masterVol = vol;
}
void Jack::inputTo(INPUT_TO to, float v)
{
switch ( to )
{
case INPUT_TO_MIX:
inputToMixVol = v;
break;
case INPUT_TO_SEND:
inputToSendVol = v;
break;
default:
break;
}
printf("%f\n", masterVol);
}

View file

@ -61,6 +61,7 @@ class Jack
/// set the master volume
void masterVolume( float vol );
void inputTo(INPUT_TO to, float v);
private:
@ -88,6 +89,11 @@ class Jack
DBMeter* inputMeter;
DBMeter* masterMeter;
float masterVol;
float inputVol;
float inputToMixVol;
float inputToSendVol;
float inputToSideVol;
// JACK member variables
bool clientActive;

View file

@ -20,6 +20,11 @@ void Logic::metronomeEnable(bool b)
jack->getControllerUpdater()->metronomeEnable( b );
}
void Logic::masterInputTo( int inputTo, float v)
{
}
void Logic::trackVolume(int t, float v)
{
if ( t < 0 ) // master track

View file

@ -26,6 +26,7 @@ class Logic
void metronomeEnable(bool b);
void masterInputTo( int inputTo, float v);
void masterReturn(int t, int send, float v);
void trackVolume(int t, float v);