auditioner always runs at normal speed, independent of transport speed
[ardour.git] / gtk2_ardour / gain_meter.cc
index 9a4ed70084b72bd2cf1b03e92f2e1055cce5d50a..02c3967f1614495a937e59b1dc25f4cb6011894f 100644 (file)
@@ -262,6 +262,8 @@ GainMeterBase::set_controls (boost::shared_ptr<Route> r,
                                                              sigc::bind (sigc::mem_fun (*this, &GainMeterBase::set_gain_astate), (AutoState) ARDOUR::Write)));
                gain_astate_menu.items().push_back (MenuElem (_("Touch"),
                                                              sigc::bind (sigc::mem_fun (*this, &GainMeterBase::set_gain_astate), (AutoState) ARDOUR::Touch)));
+               gain_astate_menu.items().push_back (MenuElem (_("Latch"),
+                                                             sigc::bind (sigc::mem_fun (*this, &GainMeterBase::set_gain_astate), (AutoState) ARDOUR::Latch)));
 
                connections.push_back (gain_automation_state_button.signal_button_press_event().connect (sigc::mem_fun(*this, &GainMeterBase::gain_automation_state_button_event), false));
                connections.push_back (ChangeGainAutomationState.connect (sigc::mem_fun(*this, &GainMeterBase::set_gain_astate)));
@@ -292,7 +294,12 @@ GainMeterBase::set_gain_astate (AutoState as)
                ChangeGainAutomationState (as);
                return;
        }
-       _amp->set_parameter_automation_state (Evoral::Parameter (GainAutomation), as);
+       if (_amp) {
+               _amp->set_parameter_automation_state (Evoral::Parameter (GainAutomation), as);
+       } else if (_control) {
+               _control->set_automation_state (as);
+               _session->set_dirty ();
+       }
 }
 
 void
@@ -732,7 +739,7 @@ GainMeterBase::amp_start_touch ()
 void
 GainMeterBase::amp_stop_touch ()
 {
-       _control->stop_touch (false, _control->session().transport_frame());
+       _control->stop_touch (_control->session().transport_frame());
        effective_gain_display ();
 }
 
@@ -777,16 +784,19 @@ GainMeterBase::_astate_string (AutoState state, bool shrt)
 
        switch (state) {
        case ARDOUR::Off:
-               sstr = (shrt ? "M" : _("M"));
+               sstr = (shrt ? "M" : S_("Manual|M"));
                break;
        case Play:
-               sstr = (shrt ? "P" : _("P"));
+               sstr = (shrt ? "P" : S_("Play|P"));
                break;
        case Touch:
-               sstr = (shrt ? "T" : _("T"));
+               sstr = (shrt ? "T" : S_("Trim|T"));
+               break;
+       case Latch:
+               sstr = (shrt ? "L" : S_("Latch|L"));
                break;
        case Write:
-               sstr = (shrt ? "W" : _("W"));
+               sstr = (shrt ? "W" : S_("Write|W"));
                break;
        }