- mr->read_at (evlist, start, dur, chan_n, _note_mode, tracker);
-
-#ifndef NDEBUG
- DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("After %1 (%2 .. %3) we now have %4\n", mr->name(), mr->position(), mr->last_frame(), evlist.size()));
- for (Evoral::EventList<framepos_t>::iterator x = evlist.begin(); x != evlist.end(); ++x) {
- DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("\t%1\n", **x));
- }
- DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("\tAFTER: tracker says there are %1 on notes\n", tracker->on()));
-#endif
- if (find (ended.begin(), ended.end(), *i) != ended.end()) {
-
- /* the region ended within the read range, so
- * resolve any dangling notes (i.e. notes whose
- * end is beyond the end of the region).
- */
-
- DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("\t%1 ended in this read, resolve notes and delete (%2) tracker\n",
- mr->name(), ((new_tracker) ? "new" : "old")));
-
- tracker->resolve_notes (evlist, (*i)->last_frame());
- delete tracker;
- 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");
- }
- }
+ /* Copy ordered events from event list to dst. */
+ for (Evoral::EventList<framepos_t>::iterator e = evlist.begin(); e != evlist.end(); ++e) {
+ Evoral::Event<framepos_t>* ev (*e);
+ dst.write (ev->time(), ev->event_type(), ev->size(), ev->buffer());
+ delete ev;