diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-04-27 20:57:48 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-04-27 20:57:48 +0000 |
commit | f78913cc99ffd13001b4c4daf625391be77e79d0 (patch) | |
tree | 7576a54e9312d9c3bbfd490671c3b2b6702a5c51 /libs/ardour/ardour | |
parent | d1af0b89a847fbde9a30a95e0198380ff6f4e68d (diff) |
Crossfades: default xfades are now constant-power, -3dB rule, other options are constant power(-6dB) rule or use existing region fade shape as is; provide GUI control over options; fix some inconsistent behaviour regarding xfades when relayering
git-svn-id: svn://localhost/ardour2/branches/3.0@12113 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/audioregion.h | 10 | ||||
-rw-r--r-- | libs/ardour/ardour/playlist.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/session_configuration_vars.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/types.h | 12 |
4 files changed, 23 insertions, 2 deletions
diff --git a/libs/ardour/ardour/audioregion.h b/libs/ardour/ardour/audioregion.h index 7236cd69a9..87d515d399 100644 --- a/libs/ardour/ardour/audioregion.h +++ b/libs/ardour/ardour/audioregion.h @@ -89,6 +89,11 @@ class AudioRegion : public Region bool fade_in_active () const { return _fade_in_active; } bool fade_out_active () const { return _fade_out_active; } + bool fade_in_is_xfade() const { return _fade_in_is_xfade; } + void set_fade_in_is_xfade (bool yn); + bool fade_out_is_xfade() const { return _fade_out_is_xfade; } + void set_fade_out_is_xfade (bool yn); + boost::shared_ptr<AutomationList> fade_in() { return _fade_in; } boost::shared_ptr<AutomationList> fade_out() { return _fade_out; } boost::shared_ptr<AutomationList> envelope() { return _envelope; } @@ -232,6 +237,11 @@ class AudioRegion : public Region boost::shared_ptr<AutomationList> _envelope; uint32_t _fade_in_suspended; uint32_t _fade_out_suspended; + /* This is not a Property because its not subject to user control, + or undo/redo. XXX this may prove to be a mistake. + */ + bool _fade_in_is_xfade; + bool _fade_out_is_xfade; protected: /* default constructor for derived (compound) types */ diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h index d57df6999b..559a24062b 100644 --- a/libs/ardour/ardour/playlist.h +++ b/libs/ardour/ardour/playlist.h @@ -367,7 +367,7 @@ public: private: - void setup_layering_indices (RegionList const &) const; + void setup_layering_indices (RegionList const &); void coalesce_and_check_crossfades (std::list<Evoral::Range<framepos_t> >); boost::shared_ptr<RegionList> find_regions_at (framepos_t); }; diff --git a/libs/ardour/ardour/session_configuration_vars.h b/libs/ardour/ardour/session_configuration_vars.h index a6147f9140..16ce36020b 100644 --- a/libs/ardour/ardour/session_configuration_vars.h +++ b/libs/ardour/ardour/session_configuration_vars.h @@ -26,6 +26,7 @@ *****************************************************/ CONFIG_VARIABLE (CrossfadeModel, xfade_model, "xfade-model", FullCrossfade) +CONFIG_VARIABLE (CrossfadeChoice, xfade_choice, "xfade-choice", ConstantPowerMinus3dB) CONFIG_VARIABLE (bool, auto_xfade, "auto-xfade", true) CONFIG_VARIABLE (float, short_xfade_seconds, "short-xfade-seconds", 0.015) CONFIG_VARIABLE (bool, xfades_active, "xfades-active", true) diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index b3c1666dbb..71c00e7520 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -406,6 +406,12 @@ namespace ARDOUR { ShortCrossfade }; + enum CrossfadeChoice { + RegionFades, + ConstantPowerMinus3dB, + ConstantPowerMinus6dB, + }; + enum ListenPosition { AfterFaderListen, PreFaderListen @@ -558,7 +564,9 @@ namespace ARDOUR { FadeFast, FadeSlow, FadeLogA, - FadeLogB + FadeLogB, + FadeConstantPowerMinus3dB, + FadeConstantPowerMinus6dB, }; } // namespace ARDOUR @@ -579,6 +587,7 @@ std::istream& operator>>(std::istream& o, ARDOUR::RemoteModel& sf); std::istream& operator>>(std::istream& o, ARDOUR::ListenPosition& sf); std::istream& operator>>(std::istream& o, ARDOUR::InsertMergePolicy& sf); std::istream& operator>>(std::istream& o, ARDOUR::CrossfadeModel& sf); +std::istream& operator>>(std::istream& o, ARDOUR::CrossfadeChoice& sf); std::istream& operator>>(std::istream& o, ARDOUR::SyncSource& sf); std::istream& operator>>(std::istream& o, ARDOUR::ShuttleBehaviour& sf); std::istream& operator>>(std::istream& o, ARDOUR::ShuttleUnits& sf); @@ -599,6 +608,7 @@ std::ostream& operator<<(std::ostream& o, const ARDOUR::RemoteModel& sf); std::ostream& operator<<(std::ostream& o, const ARDOUR::ListenPosition& sf); std::ostream& operator<<(std::ostream& o, const ARDOUR::InsertMergePolicy& sf); std::ostream& operator<<(std::ostream& o, const ARDOUR::CrossfadeModel& sf); +std::ostream& operator<<(std::ostream& o, const ARDOUR::CrossfadeChoice& sf); std::ostream& operator<<(std::ostream& o, const ARDOUR::SyncSource& sf); std::ostream& operator<<(std::ostream& o, const ARDOUR::ShuttleBehaviour& sf); std::ostream& operator<<(std::ostream& o, const ARDOUR::ShuttleUnits& sf); |