FP8: allow to edit Track Trim (WIP)

This is still somewhat half-baked. There is no "Trim" fader
mode button. Shift+Send may be an option.

.. or perhaps this is wrong and trim should be listed
by "Edit Plugins" (but that does not survive track selection).
This commit is contained in:
Robin Gareus 2024-07-13 20:57:12 +02:00
parent 0ea7e80aa6
commit a6a92cd75d
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
7 changed files with 37 additions and 11 deletions

View file

@ -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) {

View file

@ -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;

View file

@ -1045,7 +1045,7 @@ FaderPort8::assign_stripables (bool select_only)
#ifdef FADERPORT2
std::shared_ptr<Stripable> 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<void ()> cb (boost::bind (&FaderPort8::select_strip, this, std::weak_ptr<Stripable> (*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<Stripable> 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<Stripable> 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;
}

View file

@ -152,7 +152,8 @@ namespace FP8Types {
ModeTrack,
ModePlugins,
ModeSend,
ModePan
ModePan,
ModeTrim
};
enum NavigationMode {

View file

@ -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

View file

@ -286,7 +286,7 @@ FP8Strip::set_strip_name ()
}
void
FP8Strip::set_stripable (std::shared_ptr<Stripable> s, bool panmode)
FP8Strip::set_stripable (std::shared_ptr<Stripable> s, FaderMode fadermode)
{
assert (s);
@ -301,11 +301,18 @@ FP8Strip::set_stripable (std::shared_ptr<Stripable> 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 ()) {

View file

@ -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<ARDOUR::Stripable>, bool panmode);
void set_stripable (std::shared_ptr<ARDOUR::Stripable>, FP8Types::FaderMode);
void set_text_line (uint8_t, std::string const&, bool inv = false);
enum CtrlMask {