Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/libs/surfaces/launch_control_xl/controllers.cc b/libs/surfaces/launch_control_xl/controllers.cc
- index bba2d6508f..63ef3aadce 100644
- --- a/libs/surfaces/launch_control_xl/controllers.cc
- +++ b/libs/surfaces/launch_control_xl/controllers.cc
- @@ -20,6 +20,7 @@
- #include "ardour/debug.h"
- #include "ardour/mute_control.h"
- +#include "ardour/plugin_insert.h"
- #include "ardour/session.h"
- #include "ardour/solo_control.h"
- #include "ardour/solo_isolate_control.h"
- @@ -34,6 +35,8 @@ using std::cerr;
- void
- LaunchControlXL::build_maps ()
- {
- +
- + DEBUG_TRACE (DEBUG::LaunchControlXL, string_compose("Running build_maps() with device_mode: %1\n", device_mode()));
- /* Knobs */
- boost::shared_ptr<Knob> knob;
- @@ -43,33 +46,40 @@ LaunchControlXL::build_maps ()
- cc_knob_map.insert (std::make_pair (knob->controller_number(), knob)); \
- id_knob_map.insert (std::make_pair (knob->id(), knob))
- - MAKE_KNOB (SendA1, 13, 0, &LaunchControlXL::knob_sendA1);
- - MAKE_KNOB (SendA2, 14, 1, &LaunchControlXL::knob_sendA2);
- - MAKE_KNOB (SendA3, 15, 2, &LaunchControlXL::knob_sendA3);
- - MAKE_KNOB (SendA4, 16, 3, &LaunchControlXL::knob_sendA4);
- - MAKE_KNOB (SendA5, 17, 4, &LaunchControlXL::knob_sendA5);
- - MAKE_KNOB (SendA6, 18, 5, &LaunchControlXL::knob_sendA6);
- - MAKE_KNOB (SendA7, 19, 6, &LaunchControlXL::knob_sendA7);
- - MAKE_KNOB (SendA8, 20, 7, &LaunchControlXL::knob_sendA8);
- -
- - MAKE_KNOB (SendB1, 29, 8, &LaunchControlXL::knob_sendB1);
- - MAKE_KNOB (SendB2, 30, 9, &LaunchControlXL::knob_sendB2);
- - MAKE_KNOB (SendB3, 31, 10, &LaunchControlXL::knob_sendB3);
- - MAKE_KNOB (SendB4, 32, 11, &LaunchControlXL::knob_sendB4);
- - MAKE_KNOB (SendB5, 33, 12, &LaunchControlXL::knob_sendB5);
- - MAKE_KNOB (SendB6, 34, 13, &LaunchControlXL::knob_sendB6);
- - MAKE_KNOB (SendB7, 35, 14, &LaunchControlXL::knob_sendB7);
- - MAKE_KNOB (SendB8, 36, 15, &LaunchControlXL::knob_sendB8);
- -
- - MAKE_KNOB (Pan1, 49, 16, &LaunchControlXL::knob_pan1);
- - MAKE_KNOB (Pan2, 50, 17, &LaunchControlXL::knob_pan2);
- - MAKE_KNOB (Pan3, 51, 18, &LaunchControlXL::knob_pan3);
- - MAKE_KNOB (Pan4, 52, 19, &LaunchControlXL::knob_pan4);
- - MAKE_KNOB (Pan5, 53, 20, &LaunchControlXL::knob_pan5);
- - MAKE_KNOB (Pan6, 54, 21, &LaunchControlXL::knob_pan6);
- - MAKE_KNOB (Pan7, 55, 22, &LaunchControlXL::knob_pan7);
- - MAKE_KNOB (Pan8, 56, 23, &LaunchControlXL::knob_pan8);
- -
- + if (device_mode())
- + {
- + DEBUG_TRACE (DEBUG::LaunchControlXL, "build_maps() with device mode on\n");
- + MAKE_KNOB (SendA1, 13, 0, &LaunchControlXL::dm_plug_param_0);
- + MAKE_KNOB (SendA2, 14, 1, &LaunchControlXL::dm_plug_param_1);
- + } else {
- + DEBUG_TRACE (DEBUG::LaunchControlXL, "build_maps() with device mode off\n");
- + MAKE_KNOB (SendA1, 13, 0, &LaunchControlXL::knob_sendA1);
- + MAKE_KNOB (SendA2, 14, 1, &LaunchControlXL::knob_sendA2);
- + MAKE_KNOB (SendA3, 15, 2, &LaunchControlXL::knob_sendA3);
- + MAKE_KNOB (SendA4, 16, 3, &LaunchControlXL::knob_sendA4);
- + MAKE_KNOB (SendA5, 17, 4, &LaunchControlXL::knob_sendA5);
- + MAKE_KNOB (SendA6, 18, 5, &LaunchControlXL::knob_sendA6);
- + MAKE_KNOB (SendA7, 19, 6, &LaunchControlXL::knob_sendA7);
- + MAKE_KNOB (SendA8, 20, 7, &LaunchControlXL::knob_sendA8);
- +
- + MAKE_KNOB (SendB1, 29, 8, &LaunchControlXL::knob_sendB1);
- + MAKE_KNOB (SendB2, 30, 9, &LaunchControlXL::knob_sendB2);
- + MAKE_KNOB (SendB3, 31, 10, &LaunchControlXL::knob_sendB3);
- + MAKE_KNOB (SendB4, 32, 11, &LaunchControlXL::knob_sendB4);
- + MAKE_KNOB (SendB5, 33, 12, &LaunchControlXL::knob_sendB5);
- + MAKE_KNOB (SendB6, 34, 13, &LaunchControlXL::knob_sendB6);
- + MAKE_KNOB (SendB7, 35, 14, &LaunchControlXL::knob_sendB7);
- + MAKE_KNOB (SendB8, 36, 15, &LaunchControlXL::knob_sendB8);
- +
- + MAKE_KNOB (Pan1, 49, 16, &LaunchControlXL::knob_pan1);
- + MAKE_KNOB (Pan2, 50, 17, &LaunchControlXL::knob_pan2);
- + MAKE_KNOB (Pan3, 51, 18, &LaunchControlXL::knob_pan3);
- + MAKE_KNOB (Pan4, 52, 19, &LaunchControlXL::knob_pan4);
- + MAKE_KNOB (Pan5, 53, 20, &LaunchControlXL::knob_pan5);
- + MAKE_KNOB (Pan6, 54, 21, &LaunchControlXL::knob_pan6);
- + MAKE_KNOB (Pan7, 55, 22, &LaunchControlXL::knob_pan7);
- + MAKE_KNOB (Pan8, 56, 23, &LaunchControlXL::knob_pan8);
- + }
- /* Faders */
- boost::shared_ptr<Fader> fader;
- @@ -748,6 +758,49 @@ LaunchControlXL::button_track_mode(TrackMode state)
- }
- void
- +LaunchControlXL::dm_plug_param(uint8_t param_no) {
- +
- + if (!first_selected_stripable()) {
- + return;
- + }
- +
- + boost::shared_ptr<Knob> knob = 0;
- + IDKnobMap::iterator k = id_knob_map.find(static_cast<KnobID>(param_no));
- +
- + if (k != id_knob_map.end()) {
- + knob = k->second;
- + }
- +
- + if (!knob) {
- + return;
- + }
- +
- + DEBUG_TRACE(DEBUG::LaunchControlXL, string_compose("Handling plugin parameter %1 with knob in Device Mode\n", param_no));
- + boost::shared_ptr<Controllable> c;
- + boost::shared_ptr<Route> r = boost::dynamic_pointer_cast<Route> (first_selected_stripable());
- + if (r) {
- + boost::shared_ptr<Processor> proc = r->nth_plugin (0);
- + if (proc) {
- + boost::shared_ptr<PluginInsert> p = boost::dynamic_pointer_cast<PluginInsert> (proc);
- + bool ok;
- + if (p) {
- + DEBUG_TRACE(DEBUG::LaunchControlXL, "P REACHED\n");
- + uint32_t param = p->plugin()->nth_parameter(param_no, ok);
- + if (ok) {
- + DEBUG_TRACE(DEBUG::LaunchControlXL, string_compose("plugin parameter %1 is OK\n", param_no));
- + c = boost::dynamic_pointer_cast<Controllable> (proc->control (Evoral::Parameter (PluginAutomation, 0, param)));
- + }
- + }
- + }
- + }
- + if (c) {
- + if (c && check_pick_up(knob, c)) {
- + c->set_value ((knob->value() / 127.0), Controllable::UseGroup );
- + }
- + }
- +}
- +
- +void
- LaunchControlXL::button_select_left()
- {
- switch_bank (max (0, bank_start - (7 + (fader8master() ? 0 : 1))));
- diff --git a/libs/surfaces/launch_control_xl/launch_control_xl.cc b/libs/surfaces/launch_control_xl/launch_control_xl.cc
- index e719c056f7..3513de411d 100644
- --- a/libs/surfaces/launch_control_xl/launch_control_xl.cc
- +++ b/libs/surfaces/launch_control_xl/launch_control_xl.cc
- @@ -456,6 +456,14 @@ LaunchControlXL::check_pick_up(boost::shared_ptr<Controller> controller, boost::
- return ( abs( controller->value() / 127.0 - ac->internal_to_interface(ac->get_value()) ) < 0.007875 );
- }
- +bool
- +LaunchControlXL::check_pick_up(boost::shared_ptr<Controller> controller, boost::shared_ptr<PBD::Controllable> c)
- +{
- + /* returns false until the controller value matches with the current setting of the stripable's ac */
- + return ( abs( controller->value() / 127.0 - c->internal_to_interface(c->get_value()) ) < 0.007875 );
- +}
- +
- +
- void
- LaunchControlXL::handle_midi_controller_message (MIDI::Parser& parser, MIDI::EventTwoBytes* ev, MIDI::channel_t chan)
- {
- @@ -892,9 +900,10 @@ void
- LaunchControlXL::set_device_mode (bool yn)
- {
- _device_mode = yn;
- - TrackStateButton* db = static_cast<TrackStateButton*>(id_note_button_map[Device]);
- + DEBUG_TRACE (DEBUG::LaunchControlXL, string_compose("Device Mode: '%1'\n", _device_mode));
- + boost::shared_ptr<TrackStateButton> db = boost::dynamic_pointer_cast<TrackStateButton>(id_note_button_map[Device]);
- write(db->state_msg(_device_mode));
- - switch_bank (bank_start);
- + build_maps();
- }
- diff --git a/libs/surfaces/launch_control_xl/launch_control_xl.h b/libs/surfaces/launch_control_xl/launch_control_xl.h
- index 087c3a179c..ad21c4cade 100644
- --- a/libs/surfaces/launch_control_xl/launch_control_xl.h
- +++ b/libs/surfaces/launch_control_xl/launch_control_xl.h
- @@ -27,6 +27,7 @@
- #define ABSTRACT_UI_EXPORTS
- #include "pbd/abstract_ui.h"
- +#include "pbd/controllable.h"
- #include "midi++/types.h"
- @@ -450,6 +451,7 @@ private:
- void handle_button_message(boost::shared_ptr<Button> button, MIDI::EventTwoBytes *);
- bool check_pick_up(boost::shared_ptr<Controller> controller, boost::shared_ptr<ARDOUR::AutomationControl> ac);
- + bool check_pick_up(boost::shared_ptr<Controller> controller, boost::shared_ptr<PBD::Controllable> ac);
- void handle_midi_controller_message(MIDI::Parser &, MIDI::EventTwoBytes *, MIDI::channel_t chan);
- void handle_midi_note_on_message(MIDI::Parser &, MIDI::EventTwoBytes *, MIDI::channel_t chan);
- @@ -503,6 +505,11 @@ private:
- void knob_pan7() { knob_pan(6); }
- void knob_pan8() { knob_pan(7); }
- + /* Knob methods - device mode */
- + void dm_plug_param (uint8_t param_no);
- + void dm_plug_param_0() { dm_plug_param(0); }
- + void dm_plug_param_1() { dm_plug_param(1); }
- +
- /* Fader methods */
- void fader(uint8_t n);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement