summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/midi_buffer.h4
-rw-r--r--libs/ardour/ardour/midi_diskstream.h22
-rw-r--r--libs/ardour/ardour/midi_playlist.h2
-rw-r--r--libs/ardour/ardour/midi_region.h8
-rw-r--r--libs/ardour/ardour/midi_source.h13
-rw-r--r--libs/ardour/ardour/midi_track.h5
-rw-r--r--libs/ardour/ardour/smf_source.h4
7 files changed, 27 insertions, 31 deletions
diff --git a/libs/ardour/ardour/midi_buffer.h b/libs/ardour/ardour/midi_buffer.h
index f90cbfd8e3..8ea5e32e81 100644
--- a/libs/ardour/ardour/midi_buffer.h
+++ b/libs/ardour/ardour/midi_buffer.h
@@ -32,7 +32,7 @@ namespace ARDOUR {
class MidiBuffer : public Buffer
{
public:
- typedef double TimeType;
+ typedef nframes_t TimeType;
MidiBuffer(size_t capacity);
~MidiBuffer();
@@ -45,7 +45,7 @@ public:
bool push_back(const Evoral::MIDIEvent<TimeType>& event);
bool push_back(const jack_midi_event_t& event);
- uint8_t* reserve(double time, size_t size);
+ uint8_t* reserve(TimeType time, size_t size);
void resize(size_t);
diff --git a/libs/ardour/ardour/midi_diskstream.h b/libs/ardour/ardour/midi_diskstream.h
index 7a0daf37e8..eddeaa451a 100644
--- a/libs/ardour/ardour/midi_diskstream.h
+++ b/libs/ardour/ardour/midi_diskstream.h
@@ -170,18 +170,16 @@ class MidiDiskstream : public Diskstream
void engage_record_enable ();
void disengage_record_enable ();
- void check_note_onoffs(Evoral::MIDIEvent<MidiBuffer::TimeType> &event);
- void emit_pending_note_offs(MidiBuffer &dst, nframes_t time);
-
- MidiRingBuffer<MidiBuffer::TimeType>* _playback_buf;
- MidiRingBuffer<MidiBuffer::TimeType>* _capture_buf;
- MidiPort* _source_port;
- boost::shared_ptr<SMFSource> _write_source;
- nframes_t _last_flush_frame;
- NoteMode _note_mode;
- MidiStateTracker _midi_state_tracker;
- volatile gint _frames_written_to_ringbuffer;
- volatile gint _frames_read_from_ringbuffer;
+
+ MidiRingBuffer<nframes_t>* _playback_buf;
+ MidiRingBuffer<nframes_t>* _capture_buf;
+ MidiPort* _source_port;
+ boost::shared_ptr<SMFSource> _write_source;
+ nframes_t _last_flush_frame;
+ NoteMode _note_mode;
+ MidiStateTracker _midi_state_tracker;
+ volatile gint _frames_written_to_ringbuffer;
+ volatile gint _frames_read_from_ringbuffer;
};
}; /* namespace ARDOUR */
diff --git a/libs/ardour/ardour/midi_playlist.h b/libs/ardour/ardour/midi_playlist.h
index d7fdadb2f5..a956878348 100644
--- a/libs/ardour/ardour/midi_playlist.h
+++ b/libs/ardour/ardour/midi_playlist.h
@@ -47,7 +47,7 @@ public:
~MidiPlaylist ();
- nframes_t read (MidiRingBuffer<double>& buf,
+ nframes_t read (MidiRingBuffer<nframes_t>& buf,
nframes_t start, nframes_t cnt, uint32_t chan_n=0);
int set_state (const XMLNode&);
diff --git a/libs/ardour/ardour/midi_region.h b/libs/ardour/ardour/midi_region.h
index 781f815ec5..356e418fc1 100644
--- a/libs/ardour/ardour/midi_region.h
+++ b/libs/ardour/ardour/midi_region.h
@@ -48,8 +48,6 @@ template<typename T> class MidiRingBuffer;
class MidiRegion : public Region
{
public:
- typedef double TimeType;
-
~MidiRegion();
boost::shared_ptr<MidiSource> midi_source (uint32_t n=0) const;
@@ -58,13 +56,13 @@ class MidiRegion : public Region
virtual nframes64_t read (Sample*, nframes64_t pos, nframes64_t cnt, int channel) const { return 0; }
virtual nframes64_t readable_length() const { return length(); }
- nframes_t read_at (MidiRingBuffer<TimeType>& dst,
+ nframes_t read_at (MidiRingBuffer<nframes_t>& dst,
nframes_t position,
nframes_t dur,
uint32_t chan_n = 0,
NoteMode mode = Sustained) const;
- nframes_t master_read_at (MidiRingBuffer<TimeType>& dst,
+ nframes_t master_read_at (MidiRingBuffer<nframes_t>& dst,
nframes_t position,
nframes_t dur,
uint32_t chan_n = 0,
@@ -108,7 +106,7 @@ class MidiRegion : public Region
MidiRegion (const SourceList &, const XMLNode&);
private:
- nframes_t _read_at (const SourceList&, MidiRingBuffer<TimeType>& dst,
+ nframes_t _read_at (const SourceList&, MidiRingBuffer<nframes_t>& dst,
nframes_t position,
nframes_t dur,
uint32_t chan_n = 0,
diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h
index c0b105decd..2126b4b162 100644
--- a/libs/ardour/ardour/midi_source.h
+++ b/libs/ardour/ardour/midi_source.h
@@ -57,8 +57,8 @@ class MidiSource : public Source
virtual uint32_t n_channels () const { return 1; }
// FIXME: integrate this with the Readable::read interface somehow
- virtual nframes_t midi_read (MidiRingBuffer<TimeType>& dst, nframes_t start, nframes_t cnt, nframes_t stamp_offset, nframes_t negative_stamp_offset) const;
- virtual nframes_t midi_write (MidiRingBuffer<TimeType>& src, nframes_t cnt);
+ virtual nframes_t midi_read (MidiRingBuffer<nframes_t>& dst, nframes_t start, nframes_t cnt, nframes_t stamp_offset, nframes_t negative_stamp_offset) const;
+ virtual nframes_t midi_write (MidiRingBuffer<nframes_t>& src, nframes_t cnt);
virtual void append_event_unlocked(EventTimeUnit unit, const Evoral::Event<TimeType>& ev) = 0;
@@ -98,11 +98,9 @@ class MidiSource : public Source
protected:
virtual void flush_midi() = 0;
- //virtual int flush_header() = 0;
- //virtual int flush_footer() = 0;
- virtual nframes_t read_unlocked (MidiRingBuffer<TimeType>& dst, nframes_t start, nframes_t cnt, nframes_t stamp_offset, nframes_t negative_stamp_offset) const = 0;
- virtual nframes_t write_unlocked (MidiRingBuffer<TimeType>& dst, nframes_t cnt) = 0;
+ virtual nframes_t read_unlocked (MidiRingBuffer<nframes_t>& dst, nframes_t start, nframes_t cnt, nframes_t stamp_offset, nframes_t negative_stamp_offset) const = 0;
+ virtual nframes_t write_unlocked (MidiRingBuffer<nframes_t>& dst, nframes_t cnt) = 0;
mutable Glib::Mutex _lock;
string _captured_for;
@@ -112,6 +110,9 @@ class MidiSource : public Source
boost::shared_ptr<MidiModel> _model;
bool _writing;
+
+ mutable Evoral::Sequence<double>::const_iterator _model_iter;
+ mutable nframes_t _last_read_end;
private:
bool file_changed (string path);
diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h
index 09c64c2978..d4054066f1 100644
--- a/libs/ardour/ardour/midi_track.h
+++ b/libs/ardour/ardour/midi_track.h
@@ -90,7 +90,6 @@ public:
void set_note_mode (NoteMode m);
protected:
-
XMLNode& state (bool full);
int _set_state (const XMLNode&, bool call_base);
@@ -104,8 +103,8 @@ private:
void set_state_part_two ();
void set_state_part_three ();
- MidiRingBuffer<double> _immediate_events;
- NoteMode _note_mode;
+ MidiRingBuffer<nframes_t> _immediate_events;
+ NoteMode _note_mode;
};
} /* namespace ARDOUR*/
diff --git a/libs/ardour/ardour/smf_source.h b/libs/ardour/ardour/smf_source.h
index 9981408abc..ccc03acd66 100644
--- a/libs/ardour/ardour/smf_source.h
+++ b/libs/ardour/ardour/smf_source.h
@@ -102,14 +102,14 @@ class SMFSource : public MidiSource, public Evoral::SMF<double> {
int init (string idstr, bool must_exist);
nframes_t read_unlocked (
- MidiRingBuffer<double>& dst,
+ MidiRingBuffer<nframes_t>& dst,
nframes_t start,
nframes_t cn,
nframes_t stamp_offset,
nframes_t negative_stamp_offset) const;
nframes_t write_unlocked (
- MidiRingBuffer<double>& src,
+ MidiRingBuffer<nframes_t>& src,
nframes_t cnt);
bool find (std::string path, bool must_exist, bool& is_new);