Advertisement
lentferj

Untitled

Sep 9th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 8.36 KB | None | 0 0
  1.  
  2. diff --git a/libs/surfaces/launch_control_xl/controllers.cc b/libs/surfaces/launch_control_xl/controllers.cc
  3. index bba2d6508f..63ef3aadce 100644
  4. --- a/libs/surfaces/launch_control_xl/controllers.cc
  5. +++ b/libs/surfaces/launch_control_xl/controllers.cc
  6. @@ -20,6 +20,7 @@
  7.  
  8.  #include "ardour/debug.h"
  9.  #include "ardour/mute_control.h"
  10. +#include "ardour/plugin_insert.h"
  11.  #include "ardour/session.h"
  12.  #include "ardour/solo_control.h"
  13.  #include "ardour/solo_isolate_control.h"
  14. @@ -34,6 +35,8 @@ using std::cerr;
  15.  void
  16.  LaunchControlXL::build_maps ()
  17.  {
  18. +
  19. +   DEBUG_TRACE (DEBUG::LaunchControlXL, string_compose("Running build_maps() with device_mode: %1\n", device_mode()));
  20.     /* Knobs */
  21.  
  22.     boost::shared_ptr<Knob> knob;
  23. @@ -43,33 +46,40 @@ LaunchControlXL::build_maps ()
  24.         cc_knob_map.insert (std::make_pair (knob->controller_number(), knob)); \
  25.         id_knob_map.insert (std::make_pair (knob->id(), knob))
  26.  
  27. -   MAKE_KNOB (SendA1, 13, 0, &LaunchControlXL::knob_sendA1);
  28. -   MAKE_KNOB (SendA2, 14, 1, &LaunchControlXL::knob_sendA2);
  29. -   MAKE_KNOB (SendA3, 15, 2, &LaunchControlXL::knob_sendA3);
  30. -   MAKE_KNOB (SendA4, 16, 3, &LaunchControlXL::knob_sendA4);
  31. -   MAKE_KNOB (SendA5, 17, 4, &LaunchControlXL::knob_sendA5);
  32. -   MAKE_KNOB (SendA6, 18, 5, &LaunchControlXL::knob_sendA6);
  33. -   MAKE_KNOB (SendA7, 19, 6, &LaunchControlXL::knob_sendA7);
  34. -   MAKE_KNOB (SendA8, 20, 7, &LaunchControlXL::knob_sendA8);
  35. -
  36. -   MAKE_KNOB (SendB1, 29, 8, &LaunchControlXL::knob_sendB1);
  37. -   MAKE_KNOB (SendB2, 30, 9, &LaunchControlXL::knob_sendB2);
  38. -   MAKE_KNOB (SendB3, 31, 10, &LaunchControlXL::knob_sendB3);
  39. -   MAKE_KNOB (SendB4, 32, 11, &LaunchControlXL::knob_sendB4);
  40. -   MAKE_KNOB (SendB5, 33, 12, &LaunchControlXL::knob_sendB5);
  41. -   MAKE_KNOB (SendB6, 34, 13, &LaunchControlXL::knob_sendB6);
  42. -   MAKE_KNOB (SendB7, 35, 14, &LaunchControlXL::knob_sendB7);
  43. -   MAKE_KNOB (SendB8, 36, 15, &LaunchControlXL::knob_sendB8);
  44. -
  45. -   MAKE_KNOB (Pan1, 49, 16, &LaunchControlXL::knob_pan1);
  46. -   MAKE_KNOB (Pan2, 50, 17, &LaunchControlXL::knob_pan2);
  47. -   MAKE_KNOB (Pan3, 51, 18, &LaunchControlXL::knob_pan3);
  48. -   MAKE_KNOB (Pan4, 52, 19, &LaunchControlXL::knob_pan4);
  49. -   MAKE_KNOB (Pan5, 53, 20, &LaunchControlXL::knob_pan5);
  50. -   MAKE_KNOB (Pan6, 54, 21, &LaunchControlXL::knob_pan6);
  51. -   MAKE_KNOB (Pan7, 55, 22, &LaunchControlXL::knob_pan7);
  52. -   MAKE_KNOB (Pan8, 56, 23, &LaunchControlXL::knob_pan8);
  53. -
  54. +   if (device_mode())
  55. +   {
  56. +       DEBUG_TRACE (DEBUG::LaunchControlXL, "build_maps() with device mode on\n");
  57. +       MAKE_KNOB (SendA1, 13, 0, &LaunchControlXL::dm_plug_param_0);
  58. +       MAKE_KNOB (SendA2, 14, 1, &LaunchControlXL::dm_plug_param_1);
  59. +   } else {
  60. +       DEBUG_TRACE (DEBUG::LaunchControlXL, "build_maps() with device mode off\n");
  61. +       MAKE_KNOB (SendA1, 13, 0, &LaunchControlXL::knob_sendA1);
  62. +       MAKE_KNOB (SendA2, 14, 1, &LaunchControlXL::knob_sendA2);
  63. +       MAKE_KNOB (SendA3, 15, 2, &LaunchControlXL::knob_sendA3);
  64. +       MAKE_KNOB (SendA4, 16, 3, &LaunchControlXL::knob_sendA4);
  65. +       MAKE_KNOB (SendA5, 17, 4, &LaunchControlXL::knob_sendA5);
  66. +       MAKE_KNOB (SendA6, 18, 5, &LaunchControlXL::knob_sendA6);
  67. +       MAKE_KNOB (SendA7, 19, 6, &LaunchControlXL::knob_sendA7);
  68. +       MAKE_KNOB (SendA8, 20, 7, &LaunchControlXL::knob_sendA8);
  69. +
  70. +       MAKE_KNOB (SendB1, 29, 8, &LaunchControlXL::knob_sendB1);
  71. +       MAKE_KNOB (SendB2, 30, 9, &LaunchControlXL::knob_sendB2);
  72. +       MAKE_KNOB (SendB3, 31, 10, &LaunchControlXL::knob_sendB3);
  73. +       MAKE_KNOB (SendB4, 32, 11, &LaunchControlXL::knob_sendB4);
  74. +       MAKE_KNOB (SendB5, 33, 12, &LaunchControlXL::knob_sendB5);
  75. +       MAKE_KNOB (SendB6, 34, 13, &LaunchControlXL::knob_sendB6);
  76. +       MAKE_KNOB (SendB7, 35, 14, &LaunchControlXL::knob_sendB7);
  77. +       MAKE_KNOB (SendB8, 36, 15, &LaunchControlXL::knob_sendB8);
  78. +
  79. +       MAKE_KNOB (Pan1, 49, 16, &LaunchControlXL::knob_pan1);
  80. +       MAKE_KNOB (Pan2, 50, 17, &LaunchControlXL::knob_pan2);
  81. +       MAKE_KNOB (Pan3, 51, 18, &LaunchControlXL::knob_pan3);
  82. +       MAKE_KNOB (Pan4, 52, 19, &LaunchControlXL::knob_pan4);
  83. +       MAKE_KNOB (Pan5, 53, 20, &LaunchControlXL::knob_pan5);
  84. +       MAKE_KNOB (Pan6, 54, 21, &LaunchControlXL::knob_pan6);
  85. +       MAKE_KNOB (Pan7, 55, 22, &LaunchControlXL::knob_pan7);
  86. +       MAKE_KNOB (Pan8, 56, 23, &LaunchControlXL::knob_pan8);
  87. +   }
  88.     /* Faders */
  89.  
  90.     boost::shared_ptr<Fader> fader;
  91. @@ -748,6 +758,49 @@ LaunchControlXL::button_track_mode(TrackMode state)
  92.  }
  93.  
  94.  void
  95. +LaunchControlXL::dm_plug_param(uint8_t param_no) {
  96. +
  97. +   if (!first_selected_stripable()) {
  98. +       return;
  99. +   }
  100. +
  101. +   boost::shared_ptr<Knob> knob = 0;
  102. +   IDKnobMap::iterator k = id_knob_map.find(static_cast<KnobID>(param_no));
  103. +
  104. +   if (k != id_knob_map.end()) {
  105. +       knob = k->second;
  106. +   }
  107. +
  108. +   if (!knob) {
  109. +       return;
  110. +   }
  111. +
  112. +   DEBUG_TRACE(DEBUG::LaunchControlXL, string_compose("Handling plugin parameter %1 with knob in Device Mode\n", param_no));
  113. +    boost::shared_ptr<Controllable> c;
  114. +   boost::shared_ptr<Route> r = boost::dynamic_pointer_cast<Route> (first_selected_stripable());
  115. +   if (r) {
  116. +       boost::shared_ptr<Processor> proc  = r->nth_plugin (0);
  117. +       if (proc) {
  118. +           boost::shared_ptr<PluginInsert> p = boost::dynamic_pointer_cast<PluginInsert> (proc);
  119. +           bool ok;
  120. +           if (p) {
  121. +               DEBUG_TRACE(DEBUG::LaunchControlXL, "P REACHED\n");
  122. +               uint32_t param = p->plugin()->nth_parameter(param_no, ok);
  123. +               if (ok) {
  124. +                   DEBUG_TRACE(DEBUG::LaunchControlXL, string_compose("plugin parameter %1 is OK\n", param_no));
  125. +                   c = boost::dynamic_pointer_cast<Controllable> (proc->control (Evoral::Parameter (PluginAutomation, 0, param)));
  126. +               }
  127. +           }
  128. +       }
  129. +   }
  130. +   if (c)  {
  131. +       if (c && check_pick_up(knob, c)) {
  132. +           c->set_value ((knob->value() / 127.0), Controllable::UseGroup );
  133. +       }
  134. +   }
  135. +}
  136. +
  137. +void
  138.  LaunchControlXL::button_select_left()
  139.  {
  140.     switch_bank (max (0, bank_start - (7 + (fader8master() ? 0 : 1))));
  141. diff --git a/libs/surfaces/launch_control_xl/launch_control_xl.cc b/libs/surfaces/launch_control_xl/launch_control_xl.cc
  142. index e719c056f7..3513de411d 100644
  143. --- a/libs/surfaces/launch_control_xl/launch_control_xl.cc
  144. +++ b/libs/surfaces/launch_control_xl/launch_control_xl.cc
  145. @@ -456,6 +456,14 @@ LaunchControlXL::check_pick_up(boost::shared_ptr<Controller> controller, boost::
  146.     return ( abs( controller->value() / 127.0 -  ac->internal_to_interface(ac->get_value()) ) < 0.007875 );
  147.  }
  148.  
  149. +bool
  150. +LaunchControlXL::check_pick_up(boost::shared_ptr<Controller> controller, boost::shared_ptr<PBD::Controllable> c)
  151. +{
  152. +   /* returns false until the controller value matches with the current setting of the stripable's ac */
  153. +   return ( abs( controller->value() / 127.0 -  c->internal_to_interface(c->get_value()) ) < 0.007875 );
  154. +}
  155. +
  156. +
  157.  void
  158.  LaunchControlXL::handle_midi_controller_message (MIDI::Parser& parser, MIDI::EventTwoBytes* ev, MIDI::channel_t chan)
  159.  {
  160. @@ -892,9 +900,10 @@ void
  161.  LaunchControlXL::set_device_mode (bool yn)
  162.  {
  163.     _device_mode = yn;
  164. -   TrackStateButton* db =  static_cast<TrackStateButton*>(id_note_button_map[Device]);
  165. +   DEBUG_TRACE (DEBUG::LaunchControlXL, string_compose("Device Mode: '%1'\n", _device_mode));
  166. +   boost::shared_ptr<TrackStateButton> db =  boost::dynamic_pointer_cast<TrackStateButton>(id_note_button_map[Device]);
  167.     write(db->state_msg(_device_mode));
  168. -   switch_bank (bank_start);
  169. +   build_maps();
  170.  }
  171.  
  172.  
  173. diff --git a/libs/surfaces/launch_control_xl/launch_control_xl.h b/libs/surfaces/launch_control_xl/launch_control_xl.h
  174. index 087c3a179c..ad21c4cade 100644
  175. --- a/libs/surfaces/launch_control_xl/launch_control_xl.h
  176. +++ b/libs/surfaces/launch_control_xl/launch_control_xl.h
  177. @@ -27,6 +27,7 @@
  178.  
  179.  #define ABSTRACT_UI_EXPORTS
  180.  #include "pbd/abstract_ui.h"
  181. +#include "pbd/controllable.h"
  182.  
  183.  #include "midi++/types.h"
  184.  
  185. @@ -450,6 +451,7 @@ private:
  186.     void handle_button_message(boost::shared_ptr<Button> button, MIDI::EventTwoBytes *);
  187.  
  188.     bool check_pick_up(boost::shared_ptr<Controller> controller, boost::shared_ptr<ARDOUR::AutomationControl> ac);
  189. +   bool check_pick_up(boost::shared_ptr<Controller> controller, boost::shared_ptr<PBD::Controllable> ac);
  190.  
  191.     void handle_midi_controller_message(MIDI::Parser &, MIDI::EventTwoBytes *, MIDI::channel_t chan);
  192.     void handle_midi_note_on_message(MIDI::Parser &, MIDI::EventTwoBytes *, MIDI::channel_t chan);
  193. @@ -503,6 +505,11 @@ private:
  194.     void knob_pan7() { knob_pan(6); }
  195.     void knob_pan8() { knob_pan(7); }
  196.  
  197. +   /* Knob methods - device mode */
  198. +   void dm_plug_param (uint8_t param_no);
  199. +   void dm_plug_param_0() { dm_plug_param(0); }
  200. +   void dm_plug_param_1() { dm_plug_param(1); }
  201. +
  202.     /* Fader methods */
  203.  
  204.     void fader(uint8_t n);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement