#include "ardour/amp.h"
#include "ardour/automatable.h"
#include "ardour/event_type_map.h"
+#include "ardour/gain_control.h"
#include "ardour/midi_track.h"
#include "ardour/pan_controllable.h"
#include "ardour/pannable.h"
boost::shared_ptr<AutomationList> l
= boost::dynamic_pointer_cast<AutomationList>(c->list());
- if (l && l->automation_state () == Write) {
+ if (l) {
l->start_write_pass (now);
}
}
const bool list_did_write = !l->in_new_write_pass ();
l->stop_touch (true, now);
- if (list_did_write) {
- c->commit_transaction ();
- }
- l->write_pass_finished (now, Config->get_automation_thinning_factor());
- if (l->automation_playback()) {
- c->set_value(c->list()->eval(now));
- }
+ c->commit_transaction (list_did_write);
+
+ l->write_pass_finished (now, Config->get_automation_thinning_factor ());
- if (l->automation_state() == Write) {
+ if (l->automation_state () == Write) {
l->set_automation_state (Touch);
}
+
+ if (l->automation_playback ()) {
+ c->set_value_unchecked (c->list ()->eval (now));
+ }
}
}
warning << "PluginPropertyAutomation for non-Plugin" << endl;
}
} else if (param.type() == GainAutomation) {
- Amp* amp = dynamic_cast<Amp*>(this);
- if (amp) {
- control = new Amp::GainControl(X_("gaincontrol"), _a_session, amp, param);
- } else {
- warning << "GainAutomation for non-Amp" << endl;
- }
+ control = new GainControl(_a_session, param);
} 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;
- }
+ control = new GainControl(_a_session, param);
} else if (param.type() == PanAzimuthAutomation || param.type() == PanWidthAutomation || param.type() == PanElevationAutomation) {
Pannable* pannable = dynamic_cast<Pannable*>(this);
if (pannable) {