-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 enum INPUT_TO
{ {
INPUT_TO_RECORD = 0, INPUT_TO_SEND = 0,
INPUT_TO_MIX, INPUT_TO_MIX,
INPUT_TO_XSIDE,
}; };
enum { enum {
@ -96,9 +97,10 @@ class EventMasterInputTo : public EventBase
int type() { return int(MASTER_INPUT_TO); } int type() { return int(MASTER_INPUT_TO); }
uint32_t size() { return sizeof(EventMasterInputTo); } uint32_t size() { return sizeof(EventMasterInputTo); }
int send; INPUT_TO place;
float vol; float value;
EventMasterInputTo(int s, float v) : send(s), vol(v){} EventMasterInputTo() : value(-1){}
EventMasterInputTo(INPUT_TO p, float v) : place(p), value(v){}
}; };
class EventMasterVol : public EventBase class EventMasterVol : public EventBase

View file

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

View file

@ -17,20 +17,20 @@ static void gmastertrack_volume_callback(Fl_Widget *w, void *data)
writeToDspRingbuffer( &e ); 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; Avtk::Dial* b = (Avtk::Dial*)w;
//b->value( !b->value() ); float v = b->value();
//EventMetronomeActive e = EventMetronomeActive( b->value() ); EventMasterInputTo e = EventMasterInputTo( INPUT_TO_XSIDE, v );
//writeToDspRingbuffer( &e ); writeToDspRingbuffer( &e );
} }
static void gmastertrack_mixVol_callback(Fl_Widget *w, void *data) static void gmastertrack_mixVol_callback(Fl_Widget *w, void *data)
{ {
//Avtk::Dial* b = (Avtk::Dial*)w; Avtk::Dial* b = (Avtk::Dial*)w;
//b->value( !b->value() ); float v = b->value();
//EventMetronomeActive e = EventMetronomeActive( b->value() ); EventMasterInputTo e = EventMasterInputTo( INPUT_TO_MIX, v );
//writeToDspRingbuffer( &e ); writeToDspRingbuffer( &e );
} }
static void gmastertrack_sidchainKeyButton_callback(Fl_Widget *w, void *data) 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 ); //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) static void gmastertrack_button_callback(Fl_Widget *w, void *data)
{ {
if ( strcmp( w->label(), "Metro" ) == 0 ) 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 ); tempoDial.callback( gmastertrack_tempoDial_callback, 0 );
inputToSidechainKey.value( 0 );
inputToSidechainKey.setColor( 0, 0.6, 1 ); inputToSidechainKey.setColor( 0, 0.6, 1 );
inputToSidechainKey.callback( gmastertrack_sidchainKeyButton_callback, 0 ); inputToSidechainKey.callback( gmastertrack_sidchainKeyButton_callback, 0 );
inputToSidechainSignalVol.value( 0 ); inputToSidechainSignalVol.value( 0 );
inputToMix.value( 1 ); //inputToMix.setColor( 0, 0.0, 0 );
inputToMixVol.value( 1 );
inputToSidechainSignalVol.callback( gmastertrack_keyVol_callback, 0 );
inputToMixVol.callback ( gmastertrack_mixVol_callback, 0 ); inputToMixVol.callback ( gmastertrack_mixVol_callback, 0 );
inputToSend.setColor( 0, 1.0, 0 );
inputToSidechainSignalVol.callback( gmastertrack_xSideVol_callback, 0 );
tempoDial.align( FL_ALIGN_CENTER ); tempoDial.align( FL_ALIGN_CENTER );
returnVol.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) void Jack::masterVolume(float vol)
{ {
masterVol = 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); printf("%f\n", masterVol);
} }

View file

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

View file

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

View file

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