summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_playlist.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-10-17 23:16:55 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2019-11-02 16:32:18 -0600
commitc0a1aec51693a87cacfe12ec0bafda38d42a9ef5 (patch)
treeca571b61493250dad6847d75f9fac08d0959f66c /libs/ardour/midi_playlist.cc
parentaddebc3240e9f2f9f76defad680e310939b1d269 (diff)
start removal of NoteFixer code
Plan is to always read MIDI directly from rendered version. MidiPlaylistSource needs attention before MidiPlaylist::read() can be removed
Diffstat (limited to 'libs/ardour/midi_playlist.cc')
-rw-r--r--libs/ardour/midi_playlist.cc65
1 files changed, 4 insertions, 61 deletions
diff --git a/libs/ardour/midi_playlist.cc b/libs/ardour/midi_playlist.cc
index 9144742510..a7092c45ba 100644
--- a/libs/ardour/midi_playlist.cc
+++ b/libs/ardour/midi_playlist.cc
@@ -123,14 +123,7 @@ MidiPlaylist::read (Evoral::EventSink<samplepos_t>& dst,
Playlist::RegionReadLock rl (this);
- DEBUG_TRACE (DEBUG::MidiPlaylistIO,
- string_compose ("---- MidiPlaylist::read %1 .. %2 (%3 trackers) ----\n",
- start, start + dur, _note_trackers.size()));
-
- /* First, emit any queued edit fixup events at start. */
- for (NoteTrackers::iterator t = _note_trackers.begin(); t != _note_trackers.end(); ++t) {
- t->second->fixer.emit(dst, _read_end, t->second->tracker);
- }
+ DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("---- MidiPlaylist::read %1 .. %2 ----\n", start, start + dur));
/* Find relevant regions that overlap [start..end] */
const samplepos_t end = start + dur - 1;
@@ -184,52 +177,20 @@ MidiPlaylist::read (Evoral::EventSink<samplepos_t>& dst,
continue;
}
- /* Get the existing note tracker for this region, or create a new one. */
- NoteTrackers::iterator t = _note_trackers.find (mr.get());
- bool new_tracker = false;
- boost::shared_ptr<RegionTracker> tracker;
- if (t == _note_trackers.end()) {
- tracker = boost::shared_ptr<RegionTracker>(new RegionTracker);
- new_tracker = true;
- DEBUG_TRACE (DEBUG::MidiPlaylistIO,
- string_compose ("\tPre-read %1 (%2 .. %3): new tracker\n",
- mr->name(), mr->position(), mr->last_sample()));
- } else {
- tracker = t->second;
- DEBUG_TRACE (DEBUG::MidiPlaylistIO,
- string_compose ("\tPre-read %1 (%2 .. %3): %4 active notes\n",
- mr->name(), mr->position(), mr->last_sample(), tracker->tracker.on()));
- }
+ MidiCursor cursor; // XXX remove me
/* Read from region into target. */
DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("read from %1 at %2 for %3 LR %4 .. %5\n",
mr->name(), start, dur,
(loop_range ? loop_range->from : -1),
(loop_range ? loop_range->to : -1)));
- mr->read_at (tgt, start, dur, loop_range, tracker->cursor, chan_n, _note_mode, &tracker->tracker, filter);
- DEBUG_TRACE (DEBUG::MidiPlaylistIO,
- string_compose ("\tPost-read: %1 active notes\n", tracker->tracker.on()));
+ mr->read_at (tgt, start, dur, loop_range, cursor, chan_n, _note_mode, 0, filter);
if (find (ended.begin(), ended.end(), *i) != ended.end()) {
/* Region ended within the read range, so resolve any active notes
(either stuck notes in the data, or notes that end after the end
of the region). */
- DEBUG_TRACE (DEBUG::MidiPlaylistIO,
- string_compose ("\t%1 ended, resolve notes and delete (%2) tracker\n",
- mr->name(), ((new_tracker) ? "new" : "old")));
-
- tracker->tracker.resolve_notes (tgt, loop_range ? loop_range->squish ((*i)->last_sample()) : (*i)->last_sample());
- tracker->cursor.invalidate (false);
- if (!new_tracker) {
- _note_trackers.erase (t);
- }
-
- } else {
-
- if (new_tracker) {
- _note_trackers.insert (make_pair (mr.get(), tracker));
- DEBUG_TRACE (DEBUG::MidiPlaylistIO, "\tadded tracker to trackers\n");
- }
+ DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("\t%1 ended, resolve notes and delete\n", mr->name()));
}
}
@@ -254,29 +215,16 @@ MidiPlaylist::read (Evoral::EventSink<samplepos_t>& dst,
void
MidiPlaylist::reset_note_trackers ()
{
- Playlist::RegionWriteLock rl (this, false);
-
- DEBUG_TRACE (DEBUG::MidiTrackers, string_compose ("%1 reset all note trackers\n", name()));
- _note_trackers.clear ();
}
void
MidiPlaylist::resolve_note_trackers (Evoral::EventSink<samplepos_t>& dst, samplepos_t time)
{
- Playlist::RegionWriteLock rl (this, false);
-
- for (NoteTrackers::iterator n = _note_trackers.begin(); n != _note_trackers.end(); ++n) {
- n->second->tracker.resolve_notes(dst, time);
- }
- DEBUG_TRACE (DEBUG::MidiTrackers, string_compose ("%1 resolve all note trackers\n", name()));
- _note_trackers.clear ();
}
void
MidiPlaylist::remove_dependents (boost::shared_ptr<Region> region)
{
- /* MIDI regions have no dependents (crossfades) but we might be tracking notes */
- _note_trackers.erase(region.get());
}
void
@@ -353,11 +301,6 @@ MidiPlaylist::destroy_region (boost::shared_ptr<Region> region)
i = tmp;
}
-
- NoteTrackers::iterator t = _note_trackers.find(region.get());
- if (t != _note_trackers.end()) {
- _note_trackers.erase(t);
- }
}
if (changed) {