void clear_automation ();
- bool gain_automation_recording() const {
- return (_gain_automation_curve.automation_state() & (Auto_Write|Auto_Touch));
- }
+ bool gain_automation_recording();
bool gain_automation_playback() const {
return (_gain_automation_curve.automation_state() & Auto_Play) ||
AutomationList *alist = *li;
- if (alist && alist->automation_write ()) {
+ if (alist && alist->automation_write () && _session.transport_rolling()) {
float val = _plugins[0]->get_parameter (n);
alist->rt_add (now, val);
if (alist) {
alist->reposition_for_rt_add (now);
- if (alist->automation_state() != Auto_Off) {
+ if (alist->automation_state() == Auto_Touch || alist->automation_state() == Auto_Play) {
_plugins[0]->set_parameter (n, alist->eval (now));
}
}
_plugins[0]->set_parameter (port, val);
- if (automation_list (port).automation_write()) {
+ if (automation_list (port).automation_write() && _session.transport_rolling()) {
if ( desc.toggled ) //store the previous value just before this so any interpolation works right
automation_list (port).add (_session.audible_frame()-1, last_val);
automation_list (port).add (_session.audible_frame(), val);
}
}
+bool
+IO::gain_automation_recording ()
+{
+ return (_session.transport_rolling() && _gain_automation_curve.automation_write() );
+}
+
+
void
IO::clear_automation ()
{
{
_gain_automation_curve.reposition_for_rt_add (frame);
- if (_gain_automation_curve.automation_state() != Auto_Off) {
+ if (_gain_automation_curve.automation_state() == Auto_Touch || _gain_automation_curve.automation_state() == Auto_Play) {
/* the src=0 condition is a special signal to not propagate
automation gain changes into the mix group when locating.
void
BaseStereoPanner::snapshot (nframes_t now)
{
- if (_automation.automation_state() == Auto_Write || _automation.automation_state() == Auto_Touch) {
+ if (_automation.automation_write () && parent.session().transport_rolling()) {
_automation.rt_add (now, x);
}
}
void
BaseStereoPanner::transport_stopped (nframes_t frame)
{
- if (_automation.automation_state() != Auto_Off) {
+ if (_automation.automation_state() == Auto_Touch || _automation.automation_state() == Auto_Play) {
set_position (_automation.eval (frame));
}