From 57e1f642de5e1417f2756bfcf3254fad9029fa45 Mon Sep 17 00:00:00 2001 From: Harry van Haaren Date: Thu, 3 Oct 2013 10:17:23 +0100 Subject: [PATCH] -APC initialized on startup, error-checked Logic track values --- build/debug.sh | 2 +- src/gui.cxx | 18 +++++++++++++++++ src/logic.cxx | 53 +++++++++++++++++++++++++++++++++++++++----------- src/main.cxx | 10 ++++++---- 4 files changed, 67 insertions(+), 16 deletions(-) diff --git a/build/debug.sh b/build/debug.sh index e45d5f0..3ed78d0 100755 --- a/build/debug.sh +++ b/build/debug.sh @@ -2,4 +2,4 @@ set -e -gdb --dir=src/ src/luppp +xterm -e "sleep 3 && aj-snapshot -r lupppDemo" & cd src/ && gdb luppp diff --git a/src/gui.cxx b/src/gui.cxx index 5cbe821..36ac57d 100644 --- a/src/gui.cxx +++ b/src/gui.cxx @@ -261,6 +261,24 @@ Gui::Gui() : ctlrButton->callback( selectLoadController ); optionWindow->end(); + + + + // default controller for testing + LUPPP_NOTE("Adding APC40 Controller cb"); + Controller* c = new GenericMIDI( "akai_apc.ctlr" ); + + if ( c->status() == Controller::CONTROLLER_OK ) + { + EventControllerInstance e(c); + writeToDspRingbuffer( &e ); + } + else + { + LUPPP_ERROR("Controller initialization failed!"); + } + + } GTrack* Gui::getTrack(int id) diff --git a/src/logic.cxx b/src/logic.cxx index a62307b..7fbd67c 100644 --- a/src/logic.cxx +++ b/src/logic.cxx @@ -37,43 +37,74 @@ void Logic::masterInputToActive( Event::INPUT_TO inputTo, bool active) void Logic::trackVolume(int t, float v) { - if ( t < 0 ) // master track + if ( t == -1 ) // master track { jack->masterVolume(v); jack->getControllerUpdater()->masterVolume( v ); } - else + else if ( t >= 0 && t < NTRACKS ) { jack->getTrackOutput( t )->setMaster( v ); jack->getControllerUpdater()->volume( t, v ); } + else + { + LUPPP_WARN("invalid track number %i: check controller map has \"track\" field.", t ); + } } void Logic::trackRecordArm(int t, bool v) { - jack->getTrackOutput( t )->recordArm( v ); - jack->getControllerUpdater()->recordArm( t, v ); + if ( t >= 0 && t < NTRACKS ) + { + jack->getTrackOutput( t )->recordArm( v ); + jack->getControllerUpdater()->recordArm( t, v ); + } + else + { + LUPPP_WARN("invalid track number %i: check controller map has \"track\" field.", t ); + } } - void Logic::trackSendActive(int t, int s, bool v) { - jack->getTrackOutput( t )->setSendActive( s, v ); - jack->getControllerUpdater()->setTrackSendActive( t, s, v ); + if ( t >= 0 && t < NTRACKS ) + { + jack->getTrackOutput( t )->setSendActive( s, v ); + jack->getControllerUpdater()->setTrackSendActive( t, s, v ); + } + else + { + LUPPP_WARN("invalid track number %i: check controller map has \"track\" field.", t ); + } } void Logic::trackSend(int t, int send, float v) { + if ( t >= 0 && t < NTRACKS ) + { #ifdef DEBUG_LOGIC - cout << "Logic::trackSend() " << t << " " << send << " " << v << endl; + cout << "Logic::trackSend() " << t << " " << send << " " << v << endl; #endif - jack->getTrackOutput( t )->setSend( send, v ); - jack->getControllerUpdater()->setTrackSend( t, send, v ); + jack->getTrackOutput( t )->setSend( send, v ); + jack->getControllerUpdater()->setTrackSend( t, send, v ); + } + else + { + LUPPP_WARN("invalid track number %i: check controller map has \"track\" field.", t ); + } } void Logic::looperClipLenght(int t, int s, int l) { - jack->getLooper( t )->getClip( s )->setBeats(l); + if ( t >= 0 && t < NTRACKS ) + { + jack->getLooper( t )->getClip( s )->setBeats(l); + } + else + { + LUPPP_WARN("invalid track number %i: check controller map has \"track\" field.", t ); + } } diff --git a/src/main.cxx b/src/main.cxx index 38258f0..b22a416 100644 --- a/src/main.cxx +++ b/src/main.cxx @@ -64,9 +64,9 @@ int main(int argc, char** argv) // counts failures int testResult = 0; - // setup the testing Gui / JACK - gui = new Gui(); + // setup the testing Gui / JACK: Jack first, then GUI jack = new Jack(); + gui = new Gui(); // test offline functionality testResult += gui->getDiskReader()->runTests(); @@ -87,10 +87,12 @@ int main(int argc, char** argv) } #endif - // setup the "real" GUI / JACK - gui = new Gui(); + // setup the "real" JACK / Gui: Jack first, then GUI jack = new Jack(); + gui = new Gui(); + + jack->activate(); gui->show();