diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-10-19 17:05:22 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-10-19 17:05:22 +0000 |
commit | 539a692b0e9d249cab75a2d1c255f8cbef8bcf6b (patch) | |
tree | 9c40db2f5651a57bd90e034c8750209915db2363 /libs/ardour/midi_region.cc | |
parent | a86b994c683b981c395f829082abef67add2424a (diff) |
track notes at the region level in MidiPlaylist; resolve them (deliver note offs) if a note spans the end of the region
git-svn-id: svn://localhost/ardour2/branches/3.0@5804 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_region.cc')
-rw-r--r-- | libs/ardour/midi_region.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc index 3ced46df9f..afa1c0f8cc 100644 --- a/libs/ardour/midi_region.cc +++ b/libs/ardour/midi_region.cc @@ -130,19 +130,20 @@ MidiRegion::set_position_internal (nframes_t pos, bool allow_bbt_recompute) } nframes_t -MidiRegion::read_at (MidiRingBuffer<nframes_t>& out, sframes_t position, nframes_t dur, uint32_t chan_n, NoteMode mode) const +MidiRegion::read_at (MidiRingBuffer<nframes_t>& out, sframes_t position, nframes_t dur, uint32_t chan_n, NoteMode mode, MidiStateTracker* tracker) const { - return _read_at (_sources, out, position, dur, chan_n, mode); + return _read_at (_sources, out, position, dur, chan_n, mode, tracker); } nframes_t MidiRegion::master_read_at (MidiRingBuffer<nframes_t>& out, sframes_t position, nframes_t dur, uint32_t chan_n, NoteMode mode) const { - return _read_at (_master_sources, out, position, dur, chan_n, mode); + return _read_at (_master_sources, out, position, dur, chan_n, mode); /* no tracker */ } nframes_t -MidiRegion::_read_at (const SourceList& /*srcs*/, MidiRingBuffer<nframes_t>& dst, nframes_t position, nframes_t dur, uint32_t chan_n, NoteMode mode) const +MidiRegion::_read_at (const SourceList& /*srcs*/, MidiRingBuffer<nframes_t>& dst, sframes_t position, nframes_t dur, uint32_t chan_n, + NoteMode mode, MidiStateTracker* tracker) const { nframes_t internal_offset = 0; nframes_t src_offset = 0; @@ -207,8 +208,9 @@ MidiRegion::_read_at (const SourceList& /*srcs*/, MidiRingBuffer<nframes_t>& dst _start + internal_offset, // where to start reading in the source to_read, // read duration in frames output_buffer_position, // the offset in the output buffer - negative_output_buffer_position // amount to substract from note times - ) != to_read) { + negative_output_buffer_position, // amount to substract from note times + tracker + ) != to_read) { return 0; /* "read nothing" */ } |