summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_playlist.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-10-26 19:54:10 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2019-11-02 16:32:18 -0600
commit6e0c5483b203036cfe56da6a7f47ceb12956c327 (patch)
tree1370396d4abf905981e096a73c01f0845b84f773 /libs/ardour/midi_playlist.cc
parent7dfae40e3b271605c9ebbba25f8ff921f9c7ae0e (diff)
remove MidiPlaylist::read() API
Diffstat (limited to 'libs/ardour/midi_playlist.cc')
-rw-r--r--libs/ardour/midi_playlist.cc101
1 files changed, 0 insertions, 101 deletions
diff --git a/libs/ardour/midi_playlist.cc b/libs/ardour/midi_playlist.cc
index 21dec88ad4..3b24232626 100644
--- a/libs/ardour/midi_playlist.cc
+++ b/libs/ardour/midi_playlist.cc
@@ -111,107 +111,6 @@ struct EventsSortByTimeAndType {
}
};
-samplecnt_t
-MidiPlaylist::read (Evoral::EventSink<samplepos_t>& dst,
- samplepos_t start,
- samplecnt_t dur,
- Evoral::Range<samplepos_t>* loop_range,
- unsigned chan_n,
- MidiChannelFilter* filter)
-{
- typedef pair<MidiStateTracker*,samplepos_t> TrackerInfo;
-
- Playlist::RegionReadLock rl (this);
-
- 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;
- std::vector< boost::shared_ptr<Region> > regs;
- std::vector< boost::shared_ptr<Region> > ended;
- for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) {
-
- /* check for the case of solo_selection */
- bool force_transparent = ( _session.solo_selection_active() && SoloSelectedActive() && !SoloSelectedListIncludes( (const Region*) &(**i) ) );
- if ( force_transparent )
- continue;
-
- switch ((*i)->coverage (start, end)) {
- case Evoral::OverlapStart:
- case Evoral::OverlapInternal:
- regs.push_back (*i);
- break;
-
- case Evoral::OverlapExternal:
- /* this region is entirely contained in the read range */
- regs.push_back (*i);
- ended.push_back (*i);
- break;
-
- case Evoral::OverlapEnd:
- /* this region ends within the read range */
- regs.push_back (*i);
- ended.push_back (*i);
- break;
-
- default:
- /* we don't care */
- break;
- }
- }
-
- /* If we are reading from a single region, we can read directly into dst. Otherwise,
- we read into a temporarily list, sort it, then write that to dst. */
- const bool direct_read = regs.size() == 1 &&
- (ended.empty() || (ended.size() == 1 && ended.front() == regs.front()));
-
- Evoral::EventList<samplepos_t> evlist;
- Evoral::EventSink<samplepos_t>& tgt = direct_read ? dst : evlist;
-
- DEBUG_TRACE (DEBUG::MidiPlaylistIO,
- string_compose ("\t%1 regions to read, direct: %2\n", regs.size(), direct_read));
-
- for (vector<boost::shared_ptr<Region> >::iterator i = regs.begin(); i != regs.end(); ++i) {
- boost::shared_ptr<MidiRegion> mr = boost::dynamic_pointer_cast<MidiRegion>(*i);
- if (!mr) {
- continue;
- }
-
- 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, 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\n", mr->name()));
- }
- }
-
- if (!direct_read && !evlist.empty()) {
- /* We've read from multiple regions, sort the event list by time. */
- EventsSortByTimeAndType<samplepos_t> cmp;
- evlist.sort (cmp);
-
- /* Copy ordered events from event list to dst. */
- for (Evoral::EventList<samplepos_t>::iterator e = evlist.begin(); e != evlist.end(); ++e) {
- Evoral::Event<samplepos_t>* ev (*e);
- dst.write (ev->time(), ev->event_type(), ev->size(), ev->buffer());
- delete ev;
- }
- }
-
- DEBUG_TRACE (DEBUG::MidiPlaylistIO, "---- End MidiPlaylist::read ----\n");
- _read_end = start + dur;
- return dur;
-}
-
void
MidiPlaylist::reset_note_trackers ()
{