From ab795db9131a464a18454771dcc8d3d79dd61c38 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 3 Nov 2008 17:10:00 +0000 Subject: [PATCH] fix up what freeze does with fader settings, gain & pan automation; unfreeze too git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4088 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/track.h | 3 +++ libs/ardour/audio_track.cc | 13 +++++++++++++ libs/ardour/crossfade.cc | 6 ++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index f99a29bcd1..4ba1b88fb7 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -129,6 +129,9 @@ class Track : public Route vector insert_info; bool have_mementos; FreezeState state; + gain_t gain; + AutoState gain_automation_state; + AutoState pan_automation_state; }; struct RecEnableControllable : public PBD::Controllable { diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc index d3b5e442c7..595471e7b5 100644 --- a/libs/ardour/audio_track.cc +++ b/libs/ardour/audio_track.cc @@ -848,6 +848,10 @@ AudioTrack::freeze (InterThreadInfo& itt) } } + _freeze_record.gain = _gain; + _freeze_record.gain_automation_state = _gain_automation_curve.automation_state(); + _freeze_record.pan_automation_state = _panner->automation_state(); + new_playlist = PlaylistFactory::create (_session, new_playlist_name, false); region_name = new_playlist_name; @@ -866,6 +870,12 @@ AudioTrack::freeze (InterThreadInfo& itt) diskstream->use_playlist (boost::dynamic_pointer_cast(new_playlist)); diskstream->set_record_enabled (false); + /* reset stuff that has already been accounted for in the freeze process */ + + set_gain (1.0, this); + _gain_automation_curve.set_automation_state (Off); + _panner->set_automation_state (Off); + _freeze_record.state = Frozen; FreezeChange(); /* EMIT SIGNAL */ } @@ -896,6 +906,9 @@ AudioTrack::unfreeze () } _freeze_record.playlist.reset (); + set_gain (_freeze_record.gain, this); + _gain_automation_curve.set_automation_state (_freeze_record.gain_automation_state); + _panner->set_automation_state (_freeze_record.pan_automation_state); } _freeze_record.state = UnFrozen; diff --git a/libs/ardour/crossfade.cc b/libs/ardour/crossfade.cc index 7e8307a158..f0cfb9eeda 100644 --- a/libs/ardour/crossfade.cc +++ b/libs/ardour/crossfade.cc @@ -209,7 +209,8 @@ Crossfade::initialize () _fade_out.freeze (); _fade_out.clear (); -#ifdef EQUAL_POWER_MINUS_3DB +#define EQUAL_POWER_MINUS_3DB +#ifdef EQUAL_POWER_MINUS_3DB _fade_out.add ((_length * 0.000000), 1.000000); _fade_out.add ((_length * 0.166667), 0.948859); @@ -235,7 +236,8 @@ Crossfade::initialize () _fade_in.freeze (); _fade_in.clear (); -#ifdef EQUAL_POWER_MINUS_3DB +#define EQUAL_POWER_MINUS_3DB +#ifdef EQUAL_POWER_MINUS_3DB _fade_in.add ((_length * 0.000000), 0.000000); _fade_in.add ((_length * 0.166667), 0.282192);