summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-04-27 20:57:48 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-04-27 20:57:48 +0000
commitf78913cc99ffd13001b4c4daf625391be77e79d0 (patch)
tree7576a54e9312d9c3bbfd490671c3b2b6702a5c51 /libs/ardour/ardour
parentd1af0b89a847fbde9a30a95e0198380ff6f4e68d (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.h10
-rw-r--r--libs/ardour/ardour/playlist.h2
-rw-r--r--libs/ardour/ardour/session_configuration_vars.h1
-rw-r--r--libs/ardour/ardour/types.h12
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);