From 55209b5df7d681ef56b09bc1765cf8d32d78acf4 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 9 Oct 2021 16:58:58 -0600 Subject: [PATCH] triggerbox: respond to changes in default trigger input port --- libs/ardour/ardour/session.h | 2 -- libs/ardour/ardour/triggerbox.h | 3 +++ libs/ardour/triggerbox.cc | 21 +++++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index c833978175..85623a3077 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -832,8 +832,6 @@ public: bool loop_is_possible () const; PBD::Signal0 PunchLoopConstraintChange; - // Temporal::TempoMap& tempo_map() { *Temporal::TempoMap::fetch(); } - // const Temporal::TempoMap& tempo_map() const { return *Temporal::TempoMap::fetch(); } void maybe_update_tempo_from_midiclock_tempo (float bpm); unsigned int get_xrun_count () const {return _xrun_count; } diff --git a/libs/ardour/ardour/triggerbox.h b/libs/ardour/ardour/triggerbox.h index d755f080fd..7a2170960d 100644 --- a/libs/ardour/ardour/triggerbox.h +++ b/libs/ardour/ardour/triggerbox.h @@ -341,6 +341,9 @@ class LIBARDOUR_API TriggerBox : public Processor void note_on (int note_number, int velocity); void note_off (int note_number, int velocity); + void reconnect_to_default (); + void parameter_changed (std::string const &); + typedef std::map MidiTriggerMap; MidiTriggerMap midi_trigger_map; diff --git a/libs/ardour/triggerbox.cc b/libs/ardour/triggerbox.cc index b5da9b0ff3..ce330add31 100644 --- a/libs/ardour/triggerbox.cc +++ b/libs/ardour/triggerbox.cc @@ -944,6 +944,8 @@ TriggerBox::TriggerBox (Session& s, DataType dt) midi_trigger_map.insert (midi_trigger_map.end(), std::make_pair (uint8_t (36), 7)); Temporal::TempoMap::MapChanged.connect_same_thread (tempo_map_connection, boost::bind (&TriggerBox::tempo_map_change, this)); + + Config->ParameterChanged.connect_same_thread (*this, boost::bind (&TriggerBox::parameter_changed, this, _1)); } void @@ -1678,3 +1680,22 @@ TriggerBox::tempo_map_change () t->tempo_map_change (); } } + +void +TriggerBox::parameter_changed (std::string const & param) +{ + if (param == X_("default-trigger-input-port")) { + reconnect_to_default (); + } +} + +void +TriggerBox::reconnect_to_default () +{ + if (!_sidechain) { + return; + } + + _sidechain->input()->nth (0)->disconnect_all (); + _sidechain->input()->nth (0)->connect (Config->get_default_trigger_input_port()); +}