diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-09-13 14:10:04 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-09-13 14:11:29 -0500 |
commit | f41bc70ee900257d2d9008f3a749981b10de16bc (patch) | |
tree | 37f3f5950af81cd5f958da0a37a381dbf256c74d /libs/ardour/ardour | |
parent | 182e35235c41abb6ec7ab92897be0a1a228dd004 (diff) |
change all MIDI read-from-source to map all events into the loop-range for seamless looping (if using)
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/midi_playlist.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_playlist_source.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_region.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_source.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/smf_source.h | 1 |
5 files changed, 13 insertions, 0 deletions
diff --git a/libs/ardour/ardour/midi_playlist.h b/libs/ardour/ardour/midi_playlist.h index a84c464801..ad0a812cba 100644 --- a/libs/ardour/ardour/midi_playlist.h +++ b/libs/ardour/ardour/midi_playlist.h @@ -70,6 +70,7 @@ public: * @param buf Destination for events. * @param start First frame of read range. * @param cnt Number of frames in read range. + * @param loop_range If non-null, all event times will be mapped into this loop range. * @param chan_n Must be 0 (this is the audio-style "channel", where each * channel is backed by a separate region, not MIDI channels, which all * exist in the same region and are not handled here). @@ -78,6 +79,7 @@ public: framecnt_t read (Evoral::EventSink<framepos_t>& buf, framepos_t start, framecnt_t cnt, + Evoral::Range<framepos_t>* loop_range, uint32_t chan_n = 0, MidiChannelFilter* filter = NULL); diff --git a/libs/ardour/ardour/midi_playlist_source.h b/libs/ardour/ardour/midi_playlist_source.h index 12c184d7b5..7e54cde788 100644 --- a/libs/ardour/ardour/midi_playlist_source.h +++ b/libs/ardour/ardour/midi_playlist_source.h @@ -65,6 +65,7 @@ protected: framepos_t position, framepos_t start, framecnt_t cnt, + Evoral::Range<framepos_t>* loop_range, MidiStateTracker* tracker, MidiChannelFilter* filter) const; diff --git a/libs/ardour/ardour/midi_region.h b/libs/ardour/ardour/midi_region.h index 03166bb0c3..b19751aaa5 100644 --- a/libs/ardour/ardour/midi_region.h +++ b/libs/ardour/ardour/midi_region.h @@ -24,6 +24,7 @@ #include <vector> #include "evoral/Beats.hpp" +#include "evoral/Range.hpp" #include "ardour/ardour.h" #include "ardour/region.h" @@ -75,6 +76,7 @@ class LIBARDOUR_API MidiRegion : public Region framecnt_t read_at (Evoral::EventSink<framepos_t>& dst, framepos_t position, framecnt_t dur, + Evoral::Range<framepos_t>* loop_range, uint32_t chan_n = 0, NoteMode mode = Sustained, MidiStateTracker* tracker = 0, @@ -83,6 +85,7 @@ class LIBARDOUR_API MidiRegion : public Region framecnt_t master_read_at (MidiRingBuffer<framepos_t>& dst, framepos_t position, framecnt_t dur, + Evoral::Range<framepos_t>* loop_range, uint32_t chan_n = 0, NoteMode mode = Sustained) const; @@ -130,6 +133,7 @@ class LIBARDOUR_API MidiRegion : public Region framecnt_t _read_at (const SourceList&, Evoral::EventSink<framepos_t>& dst, framepos_t position, framecnt_t dur, + Evoral::Range<framepos_t>* loop_range, uint32_t chan_n = 0, NoteMode mode = Sustained, MidiStateTracker* tracker = 0, diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h index c2d029c63b..5e3484bb2f 100644 --- a/libs/ardour/ardour/midi_source.h +++ b/libs/ardour/ardour/midi_source.h @@ -27,6 +27,7 @@ #include "pbd/stateful.h" #include "pbd/xml++.h" #include "evoral/Sequence.hpp" +#include "evoral/Range.hpp" #include "ardour/ardour.h" #include "ardour/buffer.h" #include "ardour/source.h" @@ -82,14 +83,17 @@ class LIBARDOUR_API MidiSource : virtual public Source, public boost::enable_sha * \param source_start Start position of the SOURCE in this read context. * \param start Start of range to be read. * \param cnt Length of range to be read (in audio frames). + * \param loop_range If non-null, all event times will be mapped into this loop range. * \param tracker an optional pointer to MidiStateTracker object, for note on/off tracking. * \param filtered Parameters whose MIDI messages will not be returned. */ + virtual framecnt_t midi_read (const Lock& lock, Evoral::EventSink<framepos_t>& dst, framepos_t source_start, framepos_t start, framecnt_t cnt, + Evoral::Range<framepos_t>* loop_range, MidiStateTracker* tracker, MidiChannelFilter* filter, const std::set<Evoral::Parameter>& filtered, @@ -210,6 +214,7 @@ class LIBARDOUR_API MidiSource : virtual public Source, public boost::enable_sha framepos_t position, framepos_t start, framecnt_t cnt, + Evoral::Range<framepos_t>* loop_range, MidiStateTracker* tracker, MidiChannelFilter* filter) const = 0; diff --git a/libs/ardour/ardour/smf_source.h b/libs/ardour/ardour/smf_source.h index 8f58fda2fe..979c20dd21 100644 --- a/libs/ardour/ardour/smf_source.h +++ b/libs/ardour/ardour/smf_source.h @@ -94,6 +94,7 @@ public: framepos_t position, framepos_t start, framecnt_t cnt, + Evoral::Range<framepos_t>* loop_range, MidiStateTracker* tracker, MidiChannelFilter* filter) const; |