properly handle integer steps in plugin controls
[ardour.git] / libs / ardour / automatable.cc
index 5e4991fe6e2eb750bb8c0b8d142d4d27d675fcea..f928ee01b3c5eda0902fec5d043e8fd0840a4cd9 100644 (file)
@@ -163,6 +163,8 @@ Automatable::describe_parameter (Evoral::Parameter param)
 
        if (param == Evoral::Parameter(GainAutomation)) {
                return _("Fader");
+       } else if (param.type() == TrimAutomation) {
+               return _("Trim");
        } else if (param.type() == MuteAutomation) {
                return _("Mute");
        } else if (param.type() == MidiCCAutomation) {
@@ -173,8 +175,10 @@ Automatable::describe_parameter (Evoral::Parameter param)
                return string_compose("Bender [%1]", int(param.channel()) + 1);
        } else if (param.type() == MidiChannelPressureAutomation) {
                return string_compose("Pressure [%1]", int(param.channel()) + 1);
+#ifdef LV2_SUPPORT
        } else if (param.type() == PluginPropertyAutomation) {
                return string_compose("Property %1", URIMap::instance().id_to_uri(param.id()));
+#endif
        } else {
                return EventTypeMap::instance().to_symbol(param);
        }
@@ -274,6 +278,7 @@ Automatable::set_parameter_automation_state (Evoral::Parameter param, AutoState
        if (c && (s != c->automation_state())) {
                c->set_automation_state (s);
                _a_session.set_dirty ();
+               AutomationStateChanged(); /* Emit signal */
        }
 }
 
@@ -439,6 +444,13 @@ Automatable::control_factory(const Evoral::Parameter& param)
                } else {
                        warning << "GainAutomation for non-Amp" << endl;
                }
+       } else if (param.type() == TrimAutomation) {
+               Amp* amp = dynamic_cast<Amp*>(this);
+               if (amp) {
+                       control = new Amp::GainControl(X_("trimcontrol"), _a_session, amp, param);
+               } else {
+                       warning << "TrimAutomation for non-Amp" << endl;
+               }
        } else if (param.type() == PanAzimuthAutomation || param.type() == PanWidthAutomation || param.type() == PanElevationAutomation) {
                Pannable* pannable = dynamic_cast<Pannable*>(this);
                if (pannable) {