Ardour  9.8-236-gb896344c8d
console1.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2026 Holger Dehnhardt <holger@dehnhardt.org>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along
15  * with this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18 
19 #ifndef ardour_surface_console1_h
20 #define ardour_surface_console1_h
21 
22 #include <list>
23 #include <map>
24 #include <set>
25 #include <vector>
26 
27 #define ABSTRACT_UI_EXPORTS
28 #include <ytkmm/liststore.h>
29 
30 #include "pbd/abstract_ui.h"
31 
35 
37 #include "control_protocol/types.h"
38 
41 
42 namespace MIDI {
43 class Parser;
44 class Port;
45 }
46 
47 namespace ARDOUR {
48 class AsyncMIDIPort;
49 class Bundle;
50 class Port;
51 class Plugin;
52 class Processor;
53 class ReadOnlyControl;
54 class Route;
55 class Session;
56 class MidiPort;
57 }
58 
59 namespace PBD {
60 class Controllable;
61 }
62 
63 class MIDIControllable;
64 class MIDIFunction;
65 class MIDIAction;
66 
67 namespace ArdourSurface {
68 
69 class C1GUI;
70 
71 // XXX TODO: these classes should not be in the ArdourSurface namespace
72 // which is shared with all other ctrl surfaces.
73 //
74 // ArdourSurface::Meter etc may cause conflicts.
75 // best add a C1 prefix, or additional namespace
76 
77 class Controller;
78 class ControllerButton;
79 class MultiStateButton;
80 class Meter;
81 class Encoder;
82 
83 // 'using' in header files is frowned upon.
84 // it may cause conflicts or result in amgibuities
85 using Controllable = std::shared_ptr<PBD::Controllable>;
87 
88 class ControlNotFoundException : public std::exception
89 {
90 public:
92 };
93 
94 class Console1 : public MIDISurface
95 {
96 
97  friend Controller;
100  friend Meter;
101  friend Encoder;
102 
103 public:
106 
107  void map_p ();
108 
109  int set_active (bool yn) override;
110 
111  bool has_editor () const override { return true; }
112  void* get_gui () const override;
113  void tear_down_gui () override;
114 
115  std::string input_port_name () const override;
116  std::string output_port_name () const override;
117 
118  XMLNode& get_state () const override;
119  int set_state (const XMLNode&, int version) override;
120 
122  bool band_q_as_send = true;
124  bool switch_eq_q_dials = true;
125 
126  bool in_use(){
127  return _in_use;
128  }
129 
131 
132  /* Timer Events */
133  PBD::Signal<void(bool)> BlinkIt;
135 
136  /* Local Signals */
141  sigc::signal2<void, int, bool> SendControllerNumber;
142  bool midi_assign_mode = false;
145  /* emitted when the functions assigned to the controls change (strip, type, plugin) */
147 
149  {
151  VOLUME = 7,
152  PAN = 10,
153  MUTE = 12,
154  SOLO = 13,
155  ORDER = 14,
156  DRIVE = 15,
158  CHARACTER = 18,
159  FOCUS1 = 21,
178  FOCUS20 = 40,
179  COMP = 46,
183  COMP_PAR = 50,
185  SHAPE = 53,
190  PRESET = 58,
191  HARD_GATE = 59,
194  EQ = 80,
195  HIGH_GAIN = 82,
196  HIGH_FREQ = 83,
203  LOW_GAIN = 91,
204  LOW_FREQ = 92,
205  LOW_SHAPE = 93,
206  PAGE_UP = 96,
207  PAGE_DOWN = 97,
208  DISPLAY_ON = 102,
209  LOW_CUT = 103,
210  MODE = 104,
211  HIGH_CUT = 105,
212  GAIN = 107,
213  PHASE_INV = 108,
218  SHAPE_METER = 114,
219  COMP_METER = 115,
220  TRACK_COPY = 120,
221  TRACK_GROUP = 123,
222 
223  };
224 
225  /* Name of the function a control currently has (depends on shift, plugin mode and strip types) */
226  std::string control_label (ControllerID id) const;
227  bool is_shifted () const { return shift_state; }
228  bool is_in_plugin_state () const { return in_plugin_state; }
229 
230  enum EQ_MODE
231  {
234  EQM_SSL = 1
235  };
236 
237  using ControllerMap = std::map<std::string, ControllerID>;
238 
239  ControllerMap controllerMap{ { "CONTROLLER_NONE", ControllerID::CONTROLLER_NONE },
240  { "VOLUME", ControllerID::VOLUME },
241  { "PAN", ControllerID::PAN },
242  { "MUTE", ControllerID::MUTE },
243  { "SOLO", ControllerID::SOLO },
244  { "ORDER", ControllerID::ORDER },
245  { "DRIVE", ControllerID::DRIVE },
246  { "EXTERNAL_SIDECHAIN", ControllerID::EXTERNAL_SIDECHAIN },
247  { "CHARACTER", ControllerID::CHARACTER },
248  { "FOCUS1", ControllerID::FOCUS1 },
249  { "FOCUS2", ControllerID::FOCUS2 },
250  { "FOCUS3", ControllerID::FOCUS3 },
251  { "FOCUS4", ControllerID::FOCUS4 },
252  { "FOCUS5", ControllerID::FOCUS5 },
253  { "FOCUS6", ControllerID::FOCUS6 },
254  { "FOCUS7", ControllerID::FOCUS7 },
255  { "FOCUS8", ControllerID::FOCUS8 },
256  { "FOCUS9", ControllerID::FOCUS9 },
257  { "FOCUS10", ControllerID::FOCUS10 },
258  { "FOCUS11", ControllerID::FOCUS11 },
259  { "FOCUS12", ControllerID::FOCUS12 },
260  { "FOCUS13", ControllerID::FOCUS13 },
261  { "FOCUS14", ControllerID::FOCUS14 },
262  { "FOCUS15", ControllerID::FOCUS15 },
263  { "FOCUS16", ControllerID::FOCUS16 },
264  { "FOCUS17", ControllerID::FOCUS17 },
265  { "FOCUS18", ControllerID::FOCUS18 },
266  { "FOCUS19", ControllerID::FOCUS19 },
267  { "FOCUS20", ControllerID::FOCUS20 },
268  { "COMP", ControllerID::COMP },
269  { "COMP_THRESH", ControllerID::COMP_THRESH },
270  { "COMP_RELEASE", ControllerID::COMP_RELEASE },
271  { "COMP_RATIO", ControllerID::COMP_RATIO },
272  { "COMP_PAR", ControllerID::COMP_PAR },
273  { "COMP_ATTACK", ControllerID::COMP_ATTACK },
274  { "SHAPE", ControllerID::SHAPE },
275  { "SHAPE_GATE", ControllerID::SHAPE_GATE },
276  { "SHAPE_SUSTAIN", ControllerID::SHAPE_SUSTAIN },
277  { "SHAPE_RELEASE", ControllerID::SHAPE_RELEASE },
278  { "SHAPE_PUNCH", ControllerID::SHAPE_PUNCH },
279  { "PRESET", ControllerID::PRESET },
280  { "HARD_GATE", ControllerID::HARD_GATE },
281  { "FILTER_TO_COMPRESSORS", ControllerID::FILTER_TO_COMPRESSORS },
282  { "HIGH_SHAPE", ControllerID::HIGH_SHAPE },
283  { "EQ", ControllerID::EQ },
284  { "HIGH_GAIN", ControllerID::HIGH_GAIN },
285  { "HIGH_FREQ", ControllerID::HIGH_FREQ },
286  { "HIGH_MID_GAIN", ControllerID::HIGH_MID_GAIN },
287  { "HIGH_MID_FREQ", ControllerID::HIGH_MID_FREQ },
288  { "HIGH_MID_SHAPE", ControllerID::HIGH_MID_SHAPE },
289  { "LOW_MID_GAIN", ControllerID::LOW_MID_GAIN },
290  { "LOW_MID_FREQ", ControllerID::LOW_MID_FREQ },
291  { "LOW_MID_SHAPE", ControllerID::LOW_MID_SHAPE },
292  { "LOW_GAIN", ControllerID::LOW_GAIN },
293  { "LOW_FREQ", ControllerID::LOW_FREQ },
294  { "LOW_SHAPE", ControllerID::LOW_SHAPE },
295  { "PAGE_UP", ControllerID::PAGE_UP },
296  { "PAGE_DOWN", ControllerID::PAGE_DOWN },
297  { "DISPLAY_ON", ControllerID::DISPLAY_ON },
298  { "LOW_CUT", ControllerID::LOW_CUT },
299  { "MODE", ControllerID::MODE },
300  { "HIGH_CUT", ControllerID::HIGH_CUT },
301  { "GAIN", ControllerID::GAIN },
302  { "PHASE_INV", ControllerID::PHASE_INV },
303  { "INPUT_METER_L", ControllerID::INPUT_METER_L },
304  { "INPUT_METER_R", ControllerID::INPUT_METER_R },
305  { "OUTPUT_METER_L", ControllerID::OUTPUT_METER_L },
306  { "OUTPUT_METER_R", ControllerID::OUTPUT_METER_R },
307  { "SHAPE_METER", ControllerID::SHAPE_METER },
308  { "COMP_METER", ControllerID::COMP_METER },
309  { "TRACK_COPY", ControllerID::TRACK_COPY },
310  { "TRACK_GROUP", ControllerID::TRACK_GROUP } };
311 
312 private:
313  std::string config_dir_name = "c1mappings";
314  /* GUI */
315  mutable C1GUI* gui;
316  void build_gui ();
317 
318  /* Configuration */
319  const uint32_t bank_size = 20;
320 
321  // Shift button
322  bool shift_state = false;
324 
325  // Plugin state
326  bool in_plugin_state = false;
327 
328  // Selected EQ
330 
331  bool rolling = false;
332  uint32_t current_bank = 0;
334 
335  uint32_t max_strip_index = 0;
336  uint32_t master_index = 0;
337 
338  int32_t current_plugin_index = -1;
339 #ifdef MIXBUS
340  int32_t selected_intern_plugin_index = -1;
341 #endif
342 
343  std::shared_ptr<ARDOUR::AutomationControl> current_pan_control = nullptr;
344 
345  std::shared_ptr<ARDOUR::Stripable> _current_stripable;
346  std::weak_ptr<ARDOUR::Stripable> pre_master_stripable;
347  std::weak_ptr<ARDOUR::Stripable> pre_monitor_stripable;
348 
350  std::function<void (uint32_t)> action,
351  std::function<void (uint32_t)> shift_action = 0);
352 
353  void setup_controls ();
354 
355  bool strip_recenabled = false;
357 
358  int begin_using_device () override;
359  int stop_using_device () override;
360 
361  int device_acquire () override { return 0; }
362  void device_release () override {}
363 
364  void connect_session_signals () override;
366 
367  void run_event_loop ();
369 
370  /* MIDI-Message handler - we only have controller messages */
372 
374 
375  /* Strip inventory */
376  typedef std::map<uint32_t, order_t> StripInventoryMap;
377 
379 
381 
384  }
385 
386  order_t get_inventory_order_by_index (const uint32_t index);
388 
389  void select_rid_by_index (const uint32_t index);
390 
391  /* Controller Maps*/
392  typedef std::map<ControllerID, ArdourSurface::ControllerButton*> ButtonMap;
393  typedef std::map<ControllerID, ArdourSurface::MultiStateButton*> MultiStateButtonMap;
394  typedef std::map<ControllerID, ArdourSurface::Meter*> MeterMap;
395  typedef std::map<ControllerID, ArdourSurface::Encoder*> EncoderMap;
396 
399 
402 
405 
408 
409  typedef std::map<uint32_t, ControllerID> SendControllerMap;
411  { 3, HIGH_FREQ }, { 4, LOW_GAIN }, { 5, LOW_MID_GAIN },
412  { 6, HIGH_MID_GAIN }, { 7, HIGH_GAIN }, { 8, LOW_MID_SHAPE },
413  { 9, HIGH_MID_SHAPE }, { 10, LOW_MID_SHAPE }, { 11, HIGH_MID_SHAPE } };
414 
416 
417  /* */
418  void all_lights_out ();
419 
421  void notify_solo_active_changed (bool) override;
422 
423  sigc::connection periodic_connection;
424 
425  bool periodic ();
427 
428  // Meter Handlig
429  uint32_t last_output_meter_l = 0;
430  uint32_t last_output_meter_r = 0;
431 
432  std::shared_ptr<ARDOUR::ReadOnlyControl> gate_redux_meter = 0;
433  uint32_t last_gate_meter = 0;
434 
435  std::shared_ptr<ARDOUR::ReadOnlyControl> comp_redux_meter = 0;
436  uint32_t last_comp_redux = 0;
437  float smoothed_comp_redux = 0.f;
438 
439  bool controls_initialized = false;
440 
441  sigc::connection blink_connection;
442  typedef std::list<ControllerID> Blinkers;
445  bool blinker ();
448 
449  void set_current_stripable (std::shared_ptr<ARDOUR::Stripable>);
451  /*void use_master ();
452  void use_monitor ();*/
453  void stripable_selection_changed () override;
457  /*PBD::ScopedConnection selection_connection;*/
467  void map_eq_section ();
471  std::map<ControllerID, std::string> plugin_labels;
472 
473  /* plugin output parameters shown on the console1 meters */
474  struct PluginMeter
475  {
477  std::shared_ptr<ARDOUR::ReadOnlyControl> control;
479  uint32_t last_value = 0xffffffff;
480  };
481  std::vector<PluginMeter> plugin_meters;
484 
486 
487  void notify_parameter_changed (std::string) override;
489 
490  /* operations (defined in c1_operations.cc) */
491 
492  void bank (bool up);
493  void drive (uint32_t value);
494  void gain (const uint32_t value);
495  void mute (const uint32_t);
496  void pan (const uint32_t value);
497  void phase (const uint32_t);
498  void rude_solo (const uint32_t);
499  void select (const uint32_t i);
500  void shift (const uint32_t);
501  void set_shift_state (bool state);
502  void plugin_state (const uint32_t);
503  void solo (const uint32_t);
504  void trim (const uint32_t value);
505  void window (const uint32_t value);
506  void zoom (const uint32_t value);
507 
508  // Filter Section
509  void filter (const uint32_t value);
510  void low_cut (const uint32_t value);
511  void high_cut (const uint32_t value);
512 
513  // Gate Section
514  void gate (const uint32_t value);
515  void gate_scf (const uint32_t value);
516  void gate_listen (const uint32_t value);
517  void gate_thresh (const uint32_t value);
518  void gate_depth (const uint32_t value);
519  void gate_release (const uint32_t value);
520  void gate_attack (const uint32_t value);
521  void gate_hyst (const uint32_t value);
522  std::shared_ptr<ARDOUR::AutomationControl> gate_sustain_control () const;
523  std::shared_ptr<ARDOUR::AutomationControl> gate_hard_control () const;
524  std::shared_ptr<ARDOUR::AutomationControl> gate_hard_shift_control () const;
525  void gate_hold (const uint32_t value);
526  void gate_filter_freq (const uint32_t value);
527 
528  // EQ section
529  void eq (const uint32_t);
530  void eq_freq (const uint32_t band, uint32_t value);
531  void eq_gain (const uint32_t band, uint32_t value);
532  void eq_band_q (const uint32_t band, uint32_t value);
533  void eq_high_shape (const uint32_t value);
534  void eq_low_shape (const uint32_t value);
535 
537  {
538  ControllerID eq_freq_id;
539  switch (band) {
540  case 0:
541  eq_freq_id = ControllerID::LOW_FREQ;
542  break;
543  case 1:
544  eq_freq_id = ControllerID::LOW_MID_FREQ;
545  break;
546  case 2:
547  eq_freq_id = ControllerID::HIGH_MID_FREQ;
548  break;
549  case 3:
550  eq_freq_id = ControllerID::HIGH_FREQ;
551  break;
552  }
553  return eq_freq_id;
554  }
555 
557  {
558  ControllerID eq_gain_id;
559  switch (band) {
560  case 0:
561  eq_gain_id = ControllerID::LOW_GAIN;
562  break;
563  case 1:
564  eq_gain_id = ControllerID::LOW_MID_GAIN;
565  break;
566  case 2:
567  eq_gain_id = ControllerID::HIGH_MID_GAIN;
568  break;
569  case 3:
570  eq_gain_id = ControllerID::HIGH_GAIN;
571  break;
572  }
573  return eq_gain_id;
574  }
575 
577  {
578  if( band_q_as_send )
579  return ControllerID::CONTROLLER_NONE;
580  ControllerID eq_gain_id = ControllerID::CONTROLLER_NONE;
581  switch (band)
582  {
583  case 0:
584  break;
585  case 1:
586  eq_gain_id = ControllerID::LOW_MID_SHAPE;
587  break;
588  case 2:
589  eq_gain_id = ControllerID::HIGH_MID_SHAPE;
590  break;
591  case 3:
592  break;
593  }
594  return eq_gain_id;
595  }
596 
597  // Mixbus sends
598  void mb_send_level (const uint32_t n, const uint32_t value);
599 
600  // Comp Section
601  void comp (const uint32_t value);
602  void comp_mode (const uint32_t value);
603  void comp_thresh (const uint32_t value);
604  void comp_attack (const uint32_t value);
605  void comp_release (const uint32_t value);
606  void comp_ratio (const uint32_t value);
607  std::shared_ptr<ARDOUR::AutomationControl> comp_par_control () const;
608  void comp_makeup (const uint32_t value);
609  void comp_emph (const uint32_t value);
610 
611  bool map_encoder (ControllerID controllerID);
612  void map_encoder (ControllerID controllerID, std::shared_ptr<ARDOUR::AutomationControl> control);
613 
614  void map_bank ();
615  void map_drive ();
616  void map_gain ();
617  void map_monitoring ();
618  void map_mute ();
619  void map_pan ();
620  void map_phase ();
621  void map_recenable ();
622  void map_select ();
623  void map_shift (bool shift);
624  void map_plugin_state (bool state);
625  void map_solo ();
626  void map_trim ();
627 
628  // Filter Section
629  void map_filter ();
630  void map_low_cut ();
631  void map_high_cut ();
632 
633  // Gate Section
634  void map_gate ();
635  void map_gate_scf ();
638  void map_gate_depth ();
641  void map_gate_hyst ();
642  void map_gate_hold ();
644 
645  // EQ section
646  void map_eq ();
647  void map_eq_mode ();
648  void map_eq_freq(const uint32_t band);
649  void map_eq_gain (const uint32_t band);
650  void map_eq_band_q (const uint32_t band);
653 
654  // MB Sends
655  void map_mb_send_level (const uint32_t n);
656 
657  // Comp Section
658  void map_comp ();
659  void map_comp_mode ();
663  void map_comp_ratio ();
665  void map_comp_emph ();
666 
668 
669  float calculate_meter (float dB);
670  uint32_t control_to_midi (Controllable controllable, float val, uint32_t max_value_for_type = 127);
671  float midi_to_control (Controllable controllable, uint32_t val, uint32_t max_value_for_type = 127);
672 
673 public:
675  {
677  bool shift = false;
678  bool is_switch = false;
679  std::string name;
680  ControllerID controllerId = ControllerID::CONTROLLER_NONE;
681  };
682 
683  using ParameterMap = std::map<uint32_t, PluginParameterMapping>;
684 
686  {
687  std::string id;
688  std::string name;
689  bool configured = true;
691  };
692 
693  using PluginMappingMap = std::map<std::string, PluginMapping>;
695 
697  {
699  {
701  add (controllerId);
702  }
705  };
707  Glib::RefPtr<Gtk::ListStore> plugin_controller_model;
708  Glib::RefPtr<Gtk::ListStore> getPluginControllerModel ();
709  const std::string findControllerNameById (const ControllerID id);
710  uint32_t load_mappings ();
712 
713 private:
714 
715  /* plugin handling */
717  bool load_mapping (XMLNode* fin);
718  void create_mapping (const std::shared_ptr<ARDOUR::Processor> proc, const std::shared_ptr<ARDOUR::Plugin> plugin);
719 
720  bool spill_plugins (const int32_t plugin_index);
721 
722  /* plugin operations */
724  std::shared_ptr<ARDOUR::Processor> find_plugin (const int32_t plugin_index);
725  bool select_plugin (const int32_t plugin_index);
726 
727  bool map_select_plugin (const int32_t plugin_index);
728 
729  void eqBandQChangeMapping (bool mapValues);
730 };
731 }
732 #endif /* ardour_surface_console1_h */
void strip_inventory_changed(ARDOUR::RouteList &)
Definition: console1.h:382
std::map< std::string, PluginMapping > PluginMappingMap
Definition: console1.h:693
Glib::RefPtr< Gtk::ListStore > plugin_controller_model
Definition: console1.h:707
float midi_to_control(Controllable controllable, uint32_t val, uint32_t max_value_for_type=127)
ControllerID eq_q_controller_for_band(const uint32_t band)
Definition: console1.h:576
Meter * get_meter(ControllerID) const
std::map< ControllerID, std::string > plugin_labels
Definition: console1.h:471
void eq_low_shape(const uint32_t value)
std::shared_ptr< ARDOUR::AutomationControl > gate_sustain_control() const
void comp_mode(const uint32_t value)
ARDOUR::MonitorState monitor_state
Definition: console1.h:356
StripInventoryMap strip_inventory
Definition: console1.h:378
void gate_listen(const uint32_t value)
int device_acquire() override
Definition: console1.h:361
std::weak_ptr< ARDOUR::Stripable > pre_monitor_stripable
Definition: console1.h:347
uint32_t last_output_meter_r
Definition: console1.h:430
Encoder * get_encoder(ControllerID) const
void rude_solo(const uint32_t)
std::string control_label(ControllerID id) const
std::string output_port_name() const override
std::shared_ptr< ARDOUR::ReadOnlyControl > gate_redux_meter
Definition: console1.h:432
PBD::Signal< void()> PluginStubAdded
Definition: console1.h:140
bool has_editor() const override
Definition: console1.h:111
PluginMappingMap pluginMappingMap
Definition: console1.h:694
void comp_makeup(const uint32_t value)
sigc::signal2< void, int, bool > SendControllerNumber
Definition: console1.h:141
void start_blinking(ControllerID)
uint32_t last_output_meter_l
Definition: console1.h:429
void create_mapping(const std::shared_ptr< ARDOUR::Processor > proc, const std::shared_ptr< ARDOUR::Plugin > plugin)
ControllerID eq_gain_controller_for_band(const uint32_t band)
Definition: console1.h:556
void window(const uint32_t value)
void zoom(const uint32_t value)
void notify_parameter_changed(std::string) override
PBD::Signal< void()> ConnectionChange
Definition: console1.h:130
ControllerID get_send_controllerid(uint32_t)
void plugin_state(const uint32_t)
void comp_ratio(const uint32_t value)
std::map< std::string, ControllerID > ControllerMap
Definition: console1.h:237
void gate_hold(const uint32_t value)
bool plugin_meter_active(ControllerID id) const
bool spill_plugins(const int32_t plugin_index)
const std::string findControllerNameById(const ControllerID id)
int set_state(const XMLNode &, int version) override
order_t get_inventory_order_by_index(const uint32_t index)
Console1(ARDOUR::Session &)
void map_eq_freq(const uint32_t band)
PBD::Signal< void(bool)> EQBandQBindingChange
Definition: console1.h:144
void notify_transport_state_changed() override
SendControllerMap send_controllers
Definition: console1.h:410
void comp(const uint32_t value)
void gate_filter_freq(const uint32_t value)
std::map< uint32_t, order_t > StripInventoryMap
Definition: console1.h:376
void comp_thresh(const uint32_t value)
void low_cut(const uint32_t value)
void filter(const uint32_t value)
std::shared_ptr< ARDOUR::Processor > find_plugin(const int32_t plugin_index)
void gate_depth(const uint32_t value)
void set_current_stripable(std::shared_ptr< ARDOUR::Stripable >)
bool map_encoder(ControllerID controllerID)
const uint32_t bank_size
Definition: console1.h:319
void map_shift(bool shift)
PluginControllerColumns plugin_controller_columns
Definition: console1.h:706
void trim(const uint32_t value)
void set_shift_state(bool state)
PBD::Signal< void(bool)> BlinkIt
Definition: console1.h:133
void gate_attack(const uint32_t value)
bool map_select_plugin(const int32_t plugin_index)
std::vector< PluginMeter > plugin_meters
Definition: console1.h:481
float calculate_meter(float dB)
void shift(const uint32_t)
void select(const uint32_t i)
void gate_scf(const uint32_t value)
bool is_in_plugin_state() const
Definition: console1.h:228
void map_eq_band_q(const uint32_t band)
void high_cut(const uint32_t value)
void eq_freq(const uint32_t band, uint32_t value)
void solo(const uint32_t)
void connect_session_signals() override
void phase(const uint32_t)
void map_plugin_state(bool state)
int32_t current_plugin_index
Definition: console1.h:338
std::map< ControllerID, ArdourSurface::ControllerButton * > ButtonMap
Definition: console1.h:392
int stop_using_device() override
PBD::ScopedConnectionList console1_connections
Definition: console1.h:469
void mb_send_level(const uint32_t n, const uint32_t value)
PBD::ScopedConnectionList stripable_connections
Definition: console1.h:458
std::shared_ptr< ARDOUR::AutomationControl > gate_hard_control() const
std::shared_ptr< ARDOUR::ReadOnlyControl > comp_redux_meter
Definition: console1.h:435
void map_encoder(ControllerID controllerID, std::shared_ptr< ARDOUR::AutomationControl > control)
std::map< ControllerID, ArdourSurface::MultiStateButton * > MultiStateButtonMap
Definition: console1.h:393
ControllerButton * get_button(ControllerID) const
void map_mb_send_level(const uint32_t n)
void gate_hyst(const uint32_t value)
std::map< uint32_t, PluginParameterMapping > ParameterMap
Definition: console1.h:683
void write_plugin_mapping(PluginMapping &mapping)
PBD::Signal< void()> LabelsChanged
Definition: console1.h:146
void drive(uint32_t value)
void stop_blinking(ControllerID)
std::shared_ptr< ARDOUR::Stripable > _current_stripable
Definition: console1.h:345
void map_eq_gain(const uint32_t band)
void notify_solo_active_changed(bool) override
void device_release() override
Definition: console1.h:362
uint32_t get_index_by_inventory_order(order_t order)
void tear_down_gui() override
ControllerID eq_freq_controller_for_band(const uint32_t band)
Definition: console1.h:536
void eq_high_shape(const uint32_t value)
std::map< ControllerID, ArdourSurface::Encoder * > EncoderMap
Definition: console1.h:395
void eq_gain(const uint32_t band, uint32_t value)
ControllerMap controllerMap
Definition: console1.h:239
std::map< ControllerID, ArdourSurface::Meter * > MeterMap
Definition: console1.h:394
MultiStateButton * get_mbutton(ControllerID id) const
void eq_band_q(const uint32_t band, uint32_t value)
void mute(const uint32_t)
uint32_t current_strippable_index
Definition: console1.h:333
bool is_shifted() const
Definition: console1.h:227
std::shared_ptr< ARDOUR::AutomationControl > gate_hard_shift_control() const
void eq(const uint32_t)
int begin_using_device() override
bool select_plugin(const int32_t plugin_index)
void * get_gui() const override
void comp_emph(const uint32_t value)
void gate(const uint32_t value)
void gate_thresh(const uint32_t value)
std::shared_ptr< ARDOUR::AutomationControl > comp_par_control() const
PBD::Signal< void(bool)> PluginStateChange
Definition: console1.h:139
std::map< uint32_t, ControllerID > SendControllerMap
Definition: console1.h:409
void handle_midi_controller_message(MIDI::Parser &, MIDI::EventTwoBytes *tb) override
PBD::Signal< void(bool)> ShiftChange
Definition: console1.h:138
uint32_t last_gate_meter
Definition: console1.h:433
int set_active(bool yn) override
PBD::ScopedConnectionList plugin_connections
Definition: console1.h:470
std::shared_ptr< ARDOUR::AutomationControl > current_pan_control
Definition: console1.h:343
sigc::connection periodic_connection
Definition: console1.h:423
XMLNode & get_state() const override
void create_encoder(ControllerID id, std::function< void(uint32_t)> action, std::function< void(uint32_t)> shift_action=0)
sigc::connection blink_connection
Definition: console1.h:441
std::string config_dir_name
Definition: console1.h:313
void comp_release(const uint32_t value)
sigc::connection initial_selection_connection
Definition: console1.h:456
PBD::ScopedConnectionList gate_connections
Definition: console1.h:459
PBD::Signal< void()> BankChange
Definition: console1.h:137
void pan(const uint32_t value)
Glib::RefPtr< Gtk::ListStore > getPluginControllerModel()
uint32_t control_to_midi(Controllable controllable, float val, uint32_t max_value_for_type=127)
PBD::ScopedConnectionList eq_connections
Definition: console1.h:460
std::list< ControllerID > Blinkers
Definition: console1.h:442
void gate_release(const uint32_t value)
PBD::ScopedConnectionList comp_connections
Definition: console1.h:461
void stripable_selection_changed() override
uint32_t max_strip_index
Definition: console1.h:335
void select_rid_by_index(const uint32_t index)
std::weak_ptr< ARDOUR::Stripable > pre_master_stripable
Definition: console1.h:346
PBD::Signal< void()> Periodic
Definition: console1.h:134
void gain(const uint32_t value)
MultiStateButtonMap multi_buttons
Definition: console1.h:400
void comp_attack(const uint32_t value)
bool load_mapping(XMLNode *fin)
std::string input_port_name() const override
void eqBandQChangeMapping(bool mapValues)
uint32_t last_comp_redux
Definition: console1.h:436
void add(TreeModelColumnBase &column)
Definition: xml++.h:114
PBD::PropertyDescriptor< uint32_t > order
std::list< std::shared_ptr< Route > > RouteList
ARDOUR::PresentationInfo::order_t order_t
Definition: console1.h:86
std::shared_ptr< PBD::Controllable > Controllable
Definition: console1.h:85
Definition: axis_view.h:42
Gtk::TreeModelColumn< std::string > controllerName
Definition: console1.h:703
Gtk::TreeModelColumn< int > controllerId
Definition: console1.h:704
ARDOUR::ParameterDescriptor descriptor
Definition: console1.h:478
std::shared_ptr< ARDOUR::ReadOnlyControl > control
Definition: console1.h:477