From d5d54fa3eaa1c635e91d74e0d9e26a5dc46ba1f6 Mon Sep 17 00:00:00 2001 From: Harry van Haaren Date: Sat, 9 Nov 2013 22:11:45 +0000 Subject: [PATCH] -Fixed input section MIDI binding: working as normal --- src/controller/controller.hxx | 1 + src/controller/genericmidi.cxx | 6 ++++-- src/controller/guicontroller.cxx | 6 ++++++ src/controller/guicontroller.hxx | 1 + src/controllerupdater.cxx | 5 +++++ src/controllerupdater.hxx | 1 + src/event.hxx | 10 ++++------ src/eventhandlerdsp.cxx | 3 +++ src/gmastertrack.cxx | 8 ++++++-- src/logic.cxx | 1 + 10 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/controller/controller.hxx b/src/controller/controller.hxx index 7d4ebb2..6ad215b 100644 --- a/src/controller/controller.hxx +++ b/src/controller/controller.hxx @@ -39,6 +39,7 @@ class Controller virtual std::string getName() = 0; /// master + virtual void masterInputVol(float f){} virtual void masterInputTo(int to,float f){} virtual void masterInputToActive(int to,float f){} virtual void masterVolume(float f){} diff --git a/src/controller/genericmidi.cxx b/src/controller/genericmidi.cxx index cf193db..75a8bdb 100644 --- a/src/controller/genericmidi.cxx +++ b/src/controller/genericmidi.cxx @@ -447,10 +447,12 @@ void GenericMIDI::midi(unsigned char* midi) jack->getLogic()->masterInputVol( value ); break; case Event::MASTER_INPUT_TO: - jack->getLogic()->masterInputTo( static_cast(b->send) , value ); + LUPPP_NOTE("GenMidi event INPUT_TO %i", b->send ); + jack->getLogic()->masterInputTo( b->send, value ); break; case Event::MASTER_INPUT_TO_ACTIVE: - jack->getLogic()->masterInputToActive( static_cast(b->send), b->active ); + LUPPP_NOTE("GenMidi event INPUT_TO_ACTIVE %i", b->send ); + jack->getLogic()->masterInputToActive( b->send, b->active ); break; case Event::METRONOME_ACTIVE: diff --git a/src/controller/guicontroller.cxx b/src/controller/guicontroller.cxx index 69489e6..a3255ff 100644 --- a/src/controller/guicontroller.cxx +++ b/src/controller/guicontroller.cxx @@ -17,6 +17,12 @@ LupppGUI::LupppGUI() : { } +void LupppGUI::masterInputVol(float f) +{ + EventMasterInputVol e( f ); + writeToGuiRingbuffer( &e ); +} + void LupppGUI::masterInputTo(int to,float f) { EventMasterInputTo e( (Event::INPUT_TO)to, f ); diff --git a/src/controller/guicontroller.hxx b/src/controller/guicontroller.hxx index 311a0e1..3ecaff8 100644 --- a/src/controller/guicontroller.hxx +++ b/src/controller/guicontroller.hxx @@ -15,6 +15,7 @@ class LupppGUI : public Controller std::string getName(){return "Luppp GUI";} void masterVolume(float f); + void masterInputVol(float v); void masterInputTo(int to,float f); void masterInputToActive(int to,float f); diff --git a/src/controllerupdater.cxx b/src/controllerupdater.cxx index 8c2cd21..0aa6e06 100644 --- a/src/controllerupdater.cxx +++ b/src/controllerupdater.cxx @@ -71,6 +71,11 @@ void ControllerUpdater::masterInputTo( int to, float v ) for(unsigned int i = 0; i < c.size(); i++) c.at(i)->masterInputTo( to, v); } +void ControllerUpdater::masterInputVol( float v ) +{ + for(unsigned int i = 0; i < c.size(); i++) + c.at(i)->masterInputVol( v ); +} void ControllerUpdater::launchScene( int scene ) { diff --git a/src/controllerupdater.hxx b/src/controllerupdater.hxx index c58cc65..6e10e20 100644 --- a/src/controllerupdater.hxx +++ b/src/controllerupdater.hxx @@ -40,6 +40,7 @@ class ControllerUpdater void masterVolume(float v); void masterInputToActive(int to, bool v); void masterInputTo( int inputTo, float vol ); + void masterInputVol( float vol ); void setTrackSceneProgress(int t, int s, float p); void setTrackSendActive(int t, int send, bool v); diff --git a/src/event.hxx b/src/event.hxx index cd1b881..e2ee2ec 100644 --- a/src/event.hxx +++ b/src/event.hxx @@ -203,10 +203,9 @@ class EventMasterInputTo : public EventBase static const char* prettyName; const char* name(){ return prettyName; } - INPUT_TO place; + int place; float value; - EventMasterInputTo() : value(-1){} - EventMasterInputTo(INPUT_TO p, float v) : place(p), value(v){} + EventMasterInputTo(int p=-1, float v=0) : place(p), value(v){} }; class EventMasterInputToActive : public EventBase @@ -217,10 +216,9 @@ class EventMasterInputToActive : public EventBase static const char* prettyName; const char* name(){ return prettyName; } - INPUT_TO place; + int place; bool active; - EventMasterInputToActive() : active(false){} - EventMasterInputToActive(INPUT_TO p, bool a) : place(p), active(a){} + EventMasterInputToActive(int p=-1, bool a=false) : place(p), active(a){} }; class EventMasterVol : public EventBase diff --git a/src/eventhandlerdsp.cxx b/src/eventhandlerdsp.cxx index 46b570c..e708b24 100644 --- a/src/eventhandlerdsp.cxx +++ b/src/eventhandlerdsp.cxx @@ -102,12 +102,15 @@ void handleDspEvents() if ( availableRead >= sizeof(EventMasterInputTo) ) { EventMasterInputTo ev; jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventMasterInputTo) ); + jack->bindingSend = ev.place; jack->getLogic()->masterInputTo( ev.place, ev.value ); } break; } case Event::MASTER_INPUT_TO_ACTIVE: { if ( availableRead >= sizeof(EventMasterInputToActive) ) { EventMasterInputToActive ev; jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventMasterInputToActive) ); + jack->bindingSend = ev.place; + jack->bindingActive = ev.active; jack->getLogic()->masterInputToActive( ev.place, ev.active ); } break; } diff --git a/src/gmastertrack.cxx b/src/gmastertrack.cxx index ff33a7f..823bd97 100644 --- a/src/gmastertrack.cxx +++ b/src/gmastertrack.cxx @@ -197,14 +197,16 @@ void GMasterTrack::setBpm( int b ) void GMasterTrack::setInputVol(float f) { + LUPPP_NOTE(" gmtrck, inputVol %f", f ); inputVolume.value( f ); } void GMasterTrack::setInputTo(int to, float f) { + LUPPP_NOTE(" gmtrck, inputTO %i, %f", to, f ); if ( to == Event::INPUT_TO_MIX ) inputToMixVol.value( f ); - else if ( to == Event::INPUT_TO_MIX ) + else if ( to == Event::INPUT_TO_SEND ) inputToSendVol.value( f ); else if ( to == Event::INPUT_TO_XSIDE ) inputToSidechainSignalVol.value( f ); @@ -212,9 +214,11 @@ void GMasterTrack::setInputTo(int to, float f) void GMasterTrack::setInputToActive(int to, bool f) { + LUPPP_NOTE(" gmtrck, inputToActive %i, %i", to, int(f) ); + if ( to == Event::INPUT_TO_MIX ) inputToMix.value( f ); - else if ( to == Event::INPUT_TO_MIX ) + else if ( to == Event::INPUT_TO_SEND ) inputToSend.value( f ); else if ( to == Event::INPUT_TO_SIDE_KEY ) inputToSidechainKey.value( f ); diff --git a/src/logic.cxx b/src/logic.cxx index 3293e70..1bc8141 100644 --- a/src/logic.cxx +++ b/src/logic.cxx @@ -28,6 +28,7 @@ void Logic::metronomeEnable(bool b) void Logic::masterInputVol( float v ) { jack->inputVolume( v ); + jack->getControllerUpdater()->masterInputVol( v ); } void Logic::masterInputTo( int to, float v )