summaryrefslogtreecommitdiff
path: root/libs/ardour/audio_playlist.cc
diff options
context:
space:
mode:
authorBen Loftis <ben@glw.com>2012-12-13 16:42:05 +0000
committerBen Loftis <ben@glw.com>2012-12-13 16:42:05 +0000
commit2292e33ee418070c4d12971a72e01eb29dfc8de9 (patch)
tree6ed7d15db7ff0984efd2bd87f6f3cfa22adc3444 /libs/ardour/audio_playlist.cc
parent1224fc07007a99a138678a800497c841f4f04e1b (diff)
crossfade hack and slash. removed overlap checks, overlap mode, default length, fade_is_xfade, fade_is_short, and other leftovers from previous crossfade models. Draw crossfade drags in realtime so fade_line is no longer needed. remove code for hiding crossfades during a drag. moved crossfade rect to top layer so crossfade lines dont grab mouse focus. drag-trim-with-fixed-fade-anchor is partially implemented and needs discussion
git-svn-id: svn://localhost/ardour2/branches/3.0@13659 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/audio_playlist.cc')
-rw-r--r--libs/ardour/audio_playlist.cc206
1 files changed, 0 insertions, 206 deletions
diff --git a/libs/ardour/audio_playlist.cc b/libs/ardour/audio_playlist.cc
index fe13fe4e68..b008e4ff98 100644
--- a/libs/ardour/audio_playlist.cc
+++ b/libs/ardour/audio_playlist.cc
@@ -257,198 +257,6 @@ AudioPlaylist::read (Sample *buf, Sample *mixdown_buffer, float *gain_buffer, fr
}
void
-AudioPlaylist::check_crossfades (Evoral::Range<framepos_t> range)
-{
- if (in_set_state || in_partition || !_session.config.get_auto_xfade ()) {
- return;
- }
-
- boost::shared_ptr<RegionList> starts = regions_with_start_within (range);
- boost::shared_ptr<RegionList> ends = regions_with_end_within (range);
-
- RegionList all = *starts;
- std::copy (ends->begin(), ends->end(), back_inserter (all));
-
- all.sort (RegionSortByLayer ());
-
- set<boost::shared_ptr<Region> > done_start;
- set<boost::shared_ptr<Region> > done_end;
-
- for (RegionList::reverse_iterator i = all.rbegin(); i != all.rend(); ++i) {
- for (RegionList::reverse_iterator j = all.rbegin(); j != all.rend(); ++j) {
-
- if (i == j) {
- continue;
- }
-
- if ((*i)->muted() || (*j)->muted()) {
- continue;
- }
-
- if ((*i)->position() == (*j)->position() && ((*i)->length() == (*j)->length())) {
- /* precise overlay: no xfade */
- continue;
- }
-
- if ((*i)->position() == (*j)->position() || ((*i)->last_frame() == (*j)->last_frame())) {
- /* starts or ends match: no xfade */
- continue;
- }
-
- boost::shared_ptr<AudioRegion> top;
- boost::shared_ptr<AudioRegion> bottom;
-
- if ((*i)->layer() < (*j)->layer()) {
- top = boost::dynamic_pointer_cast<AudioRegion> (*j);
- bottom = boost::dynamic_pointer_cast<AudioRegion> (*i);
- } else {
- top = boost::dynamic_pointer_cast<AudioRegion> (*i);
- bottom = boost::dynamic_pointer_cast<AudioRegion> (*j);
- }
-
- if (!top->opaque ()) {
- continue;
- }
-
- Evoral::OverlapType const c = top->coverage (bottom->position(), bottom->last_frame());
-
- if (c == Evoral::OverlapStart) {
-
- /* top starts within bottom but covers bottom's end */
-
- /* { ==== top ============ }
- * [---- bottom -------------------]
- */
-
- if (done_start.find (top) == done_start.end() && done_end.find (bottom) == done_end.end ()) {
-
- /* Top's fade-in will cause an implicit fade-out of bottom */
-
- if (top->fade_in_is_xfade() && top->fade_in_is_short()) {
-
- /* its already an xfade. if its
- * really short, leave it
- * alone.
- */
-
- } else {
- framecnt_t len = 0;
-
- if (_capture_insertion_underway) {
- len = _session.config.get_short_xfade_seconds() * _session.frame_rate();
- } else {
- switch (_session.config.get_xfade_model()) {
- case FullCrossfade:
- len = bottom->last_frame () - top->first_frame () + 1;
- top->set_fade_in_is_short (false);
- break;
- case ShortCrossfade:
- len = _session.config.get_short_xfade_seconds() * _session.frame_rate();
- top->set_fade_in_is_short (true);
- break;
- }
- }
-
- top->set_fade_in_active (true);
- top->set_fade_in_is_xfade (true);
-
- /* XXX may 2012: -3dB and -6dB curves
- * are the same right now
- */
-
- switch (_session.config.get_xfade_choice ()) {
- case ConstantPowerMinus3dB:
- top->set_fade_in (FadeConstantPower, len);
- break;
- case ConstantPowerMinus6dB:
- top->set_fade_in (FadeConstantPower, len);
- break;
- case RegionFades:
- top->set_fade_in_length (len);
- break;
- }
- }
-
- done_start.insert (top);
- }
-
- } else if (c == Evoral::OverlapEnd) {
-
- /* top covers start of bottom but ends within it */
-
- /* [---- top ------------------------]
- * { ==== bottom ============ }
- */
-
- if (done_end.find (top) == done_end.end() && done_start.find (bottom) == done_start.end ()) {
- /* Top's fade-out will cause an implicit fade-in of bottom */
-
-
- if (top->fade_out_is_xfade() && top->fade_out_is_short()) {
-
- /* its already an xfade. if its
- * really short, leave it
- * alone.
- */
-
- } else {
- framecnt_t len = 0;
-
- if (_capture_insertion_underway) {
- len = _session.config.get_short_xfade_seconds() * _session.frame_rate();
- } else {
- switch (_session.config.get_xfade_model()) {
- case FullCrossfade:
- len = top->last_frame () - bottom->first_frame () + 1;
- break;
- case ShortCrossfade:
- len = _session.config.get_short_xfade_seconds() * _session.frame_rate();
- break;
- }
- }
-
- top->set_fade_out_active (true);
- top->set_fade_out_is_xfade (true);
-
- switch (_session.config.get_xfade_choice ()) {
- case ConstantPowerMinus3dB:
- top->set_fade_out (FadeConstantPower, len);
- break;
- case ConstantPowerMinus6dB:
- top->set_fade_out (FadeConstantPower, len);
- break;
- case RegionFades:
- top->set_fade_out_length (len);
- break;
- }
- }
-
- done_end.insert (top);
- }
- }
- }
- }
-
- for (RegionList::iterator i = starts->begin(); i != starts->end(); ++i) {
- if (done_start.find (*i) == done_start.end()) {
- boost::shared_ptr<AudioRegion> r = boost::dynamic_pointer_cast<AudioRegion> (*i);
- if (r->fade_in_is_xfade()) {
- r->set_default_fade_in ();
- }
- }
- }
-
- for (RegionList::iterator i = ends->begin(); i != ends->end(); ++i) {
- if (done_end.find (*i) == done_end.end()) {
- boost::shared_ptr<AudioRegion> r = boost::dynamic_pointer_cast<AudioRegion> (*i);
- if (r->fade_out_is_xfade()) {
- r->set_default_fade_out ();
- }
- }
- }
-}
-
-void
AudioPlaylist::dump () const
{
boost::shared_ptr<Region>r;
@@ -738,13 +546,6 @@ AudioPlaylist::load_legacy_crossfades (const XMLNode& node, int version)
}
}
- if ((p = (*i)->property ("follow-overlap")) != 0) {
- out_a->set_fade_out_is_short (!string_is_affirmative (p->value()));
- } else {
- out_a->set_fade_out_is_short (false);
- }
-
- out_a->set_fade_out_is_xfade (true);
out_a->set_fade_out_active (true);
} else {
@@ -763,13 +564,6 @@ AudioPlaylist::load_legacy_crossfades (const XMLNode& node, int version)
}
}
- if ((p = (*i)->property ("follow-overlap")) != 0) {
- in_a->set_fade_in_is_short (!string_is_affirmative (p->value()));
- } else {
- in_a->set_fade_in_is_short (false);
- }
-
- in_a->set_fade_in_is_xfade (true);
in_a->set_fade_in_active (true);
}
}