diff --git a/libs/surfaces/faderport8/actions.cc b/libs/surfaces/faderport8/actions.cc index f26cc16eac..b8efa27faf 100644 --- a/libs/surfaces/faderport8/actions.cc +++ b/libs/surfaces/faderport8/actions.cc @@ -228,6 +228,7 @@ FaderPort8::button_link () { switch (_ctrls.fader_mode()) { case ModeTrack: + case ModeTrim: case ModePan: if (_link_enabled) { stop_link (); @@ -287,6 +288,9 @@ FaderPort8::button_automation (ARDOUR::AutoState as) case ModeTrack: ac = (*i)->gain_control (); break; + case ModeTrim: + ac = (*i)->trim_control (); + break; case ModePan: ac = (*i)->pan_azimuth_control (); break; @@ -473,7 +477,7 @@ FaderPort8::button_arm (bool press) } #else FaderMode fadermode = _ctrls.fader_mode (); - if (fadermode == ModeTrack || fadermode == ModePan) { + if (fadermode == ModeTrack || fadermode == ModePan || fadermode == ModeTrim) { _ctrls.button (FP8Controls::BtnArm).set_active (press); ARMButtonChange (press); /* EMIT SIGNAL */ } @@ -660,6 +664,7 @@ FaderPort8::button_parameter () { switch (_ctrls.fader_mode()) { case ModeTrack: + case ModeTrim: case ModePan: if (_link_enabled || _link_locked) { handle_encoder_link (0); @@ -681,6 +686,7 @@ FaderPort8::encoder_parameter (bool neg, int steps) { switch (_ctrls.fader_mode()) { case ModeTrack: + case ModeTrim: case ModePan: if (steps != 0) { if (_link_enabled || _link_locked) { diff --git a/libs/surfaces/faderport8/callbacks.cc b/libs/surfaces/faderport8/callbacks.cc index 9431689c3b..708493ed4c 100644 --- a/libs/surfaces/faderport8/callbacks.cc +++ b/libs/surfaces/faderport8/callbacks.cc @@ -80,6 +80,9 @@ FaderPort8::notify_route_state_changed () case ModeTrack: ac = s->gain_control(); break; + case ModeTrim: + ac = s->trim_control(); + break; case ModePan: ac = s->pan_azimuth_control(); break; diff --git a/libs/surfaces/faderport8/faderport8.cc b/libs/surfaces/faderport8/faderport8.cc index 5adf517607..45391dd501 100644 --- a/libs/surfaces/faderport8/faderport8.cc +++ b/libs/surfaces/faderport8/faderport8.cc @@ -1045,7 +1045,7 @@ FaderPort8::assign_stripables (bool select_only) #ifdef FADERPORT2 std::shared_ptr s = first_selected_stripable(); if (s) { - _ctrls.strip(0).set_stripable (s, _ctrls.fader_mode() == ModePan); + _ctrls.strip(0).set_stripable (s, _ctrls.fader_mode()); } else { _ctrls.strip(0).unset_controllables ( FP8Strip::CTRL_ALL ); } @@ -1090,7 +1090,7 @@ FaderPort8::assign_stripables (bool select_only) _ctrls.strip(id).select_button ().set_active ((*s)->is_selected ()); _ctrls.strip(id).select_button ().set_blinking (*s == first_selected_stripable ()); } else { - _ctrls.strip(id).set_stripable (*s, _ctrls.fader_mode() == ModePan); + _ctrls.strip(id).set_stripable (*s, _ctrls.fader_mode()); } boost::function cb (boost::bind (&FaderPort8::select_strip, this, std::weak_ptr (*s))); @@ -1782,6 +1782,7 @@ FaderPort8::assign_strips () FaderMode fadermode = _ctrls.fader_mode (); switch (fadermode) { case ModeTrack: + case ModeTrim: case ModePan: assign_stripables (); stripable_selection_changed (); // update selection, automation-state @@ -1895,6 +1896,7 @@ FaderPort8::notify_fader_mode_changed () switch (fadermode) { case ModeTrack: + case ModeTrim: case ModePan: break; case ModePlugins: @@ -1965,7 +1967,7 @@ FaderPort8::notify_stripable_property_changed (std::weak_ptr ws, cons } if (what_changed.empty ()) { - _ctrls.strip(id).set_stripable (s, _ctrls.fader_mode() == ModePan); + _ctrls.strip(id).set_stripable (s, _ctrls.fader_mode()); } if (what_changed.contains (Properties::name)) { @@ -1974,6 +1976,7 @@ FaderPort8::notify_stripable_property_changed (std::weak_ptr ws, cons _ctrls.strip(id).set_text_line (3, s->name(), true); break; case ModeTrack: + case ModeTrim: case ModePan: _ctrls.strip(id).set_text_line (0, s->name()); break; @@ -2026,6 +2029,7 @@ FaderPort8::stripable_selection_changed () assign_sends (); return; case ModeTrack: + case ModeTrim: case ModePan: break; } diff --git a/libs/surfaces/faderport8/fp8_base.h b/libs/surfaces/faderport8/fp8_base.h index d793f7143e..83b2b37511 100644 --- a/libs/surfaces/faderport8/fp8_base.h +++ b/libs/surfaces/faderport8/fp8_base.h @@ -152,7 +152,8 @@ namespace FP8Types { ModeTrack, ModePlugins, ModeSend, - ModePan + ModePan, + ModeTrim }; enum NavigationMode { diff --git a/libs/surfaces/faderport8/fp8_controls.cc b/libs/surfaces/faderport8/fp8_controls.cc index 33e9b493cd..9266685792 100644 --- a/libs/surfaces/faderport8/fp8_controls.cc +++ b/libs/surfaces/faderport8/fp8_controls.cc @@ -428,6 +428,11 @@ FP8Controls::set_nav_mode (NavigationMode m) void FP8Controls::set_fader_mode (FaderMode m) { +#if 0 + if (m == ModeSend /*&& shift_mod ()*/) { + m = ModeTrim; + } +#endif if (_fadermode == m) { if (m == ModePlugins || m == ModeSend) { /* "Edit Plugins" while editing Plugin-params, returns back diff --git a/libs/surfaces/faderport8/fp8_strip.cc b/libs/surfaces/faderport8/fp8_strip.cc index 1005a9e20e..08ae0f25b4 100644 --- a/libs/surfaces/faderport8/fp8_strip.cc +++ b/libs/surfaces/faderport8/fp8_strip.cc @@ -286,7 +286,7 @@ FP8Strip::set_strip_name () } void -FP8Strip::set_stripable (std::shared_ptr s, bool panmode) +FP8Strip::set_stripable (std::shared_ptr s, FaderMode fadermode) { assert (s); @@ -301,11 +301,18 @@ FP8Strip::set_stripable (std::shared_ptr s, bool panmode) set_bar_mode (4, true); // Off } - if (panmode) { - set_fader_controllable (s->pan_azimuth_control ()); - } else { - set_fader_controllable (s->gain_control ()); + switch (fadermode) { + case ModePan: + set_fader_controllable (s->pan_azimuth_control ()); + break; + case ModeTrim: + set_fader_controllable (s->trim_control ()); + break; + default: + set_fader_controllable (s->gain_control ()); + break; } + set_pan_controllable (s->pan_azimuth_control ()); if (s->is_monitor ()) { diff --git a/libs/surfaces/faderport8/fp8_strip.h b/libs/surfaces/faderport8/fp8_strip.h index 2071e0d726..94a740f107 100644 --- a/libs/surfaces/faderport8/fp8_strip.h +++ b/libs/surfaces/faderport8/fp8_strip.h @@ -95,7 +95,7 @@ public: void set_periodic_display_mode (DisplayMode m); // convenience function to call all set_XXX_controllable - void set_stripable (std::shared_ptr, bool panmode); + void set_stripable (std::shared_ptr, FP8Types::FaderMode); void set_text_line (uint8_t, std::string const&, bool inv = false); enum CtrlMask {