diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/midi_diskstream.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_state_tracker.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_track.h | 5 |
3 files changed, 7 insertions, 5 deletions
diff --git a/libs/ardour/ardour/midi_diskstream.h b/libs/ardour/ardour/midi_diskstream.h index 872ffb78e3..730d6c0276 100644 --- a/libs/ardour/ardour/midi_diskstream.h +++ b/libs/ardour/ardour/midi_diskstream.h @@ -39,7 +39,6 @@ #include "ardour/diskstream.h" #include "ardour/midi_playlist.h" #include "ardour/midi_ring_buffer.h" -#include "ardour/midi_state_tracker.h" #include "ardour/utils.h" struct tm; @@ -178,8 +177,6 @@ class MidiDiskstream : public Diskstream boost::shared_ptr<SMFSource> _write_source; nframes_t _last_flush_frame; NoteMode _note_mode; - MidiStateTracker _midi_state_tracker; - MidiStateTracker _incoming_midi_state_tracker; volatile gint _frames_written_to_ringbuffer; volatile gint _frames_read_from_ringbuffer; }; diff --git a/libs/ardour/ardour/midi_state_tracker.h b/libs/ardour/ardour/midi_state_tracker.h index 4c15ab1e0f..f9b39f9295 100644 --- a/libs/ardour/ardour/midi_state_tracker.h +++ b/libs/ardour/ardour/midi_state_tracker.h @@ -35,7 +35,7 @@ class MidiStateTracker public: MidiStateTracker(); - bool track (const MidiBuffer::iterator& from, const MidiBuffer::iterator& to); + void track (const MidiBuffer::iterator& from, const MidiBuffer::iterator& to, bool& looped); void resolve_notes (MidiBuffer& buffer, nframes_t time); void dump (std::ostream&); void reset (); @@ -43,7 +43,7 @@ public: private: void track_note_onoffs(const Evoral::MIDIEvent<MidiBuffer::TimeType>& event); - std::bitset<128*16> _active_notes; + uint8_t _active_notes[128*16]; }; diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 0030fdc520..a1b0d2003e 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -22,6 +22,7 @@ #include "ardour/track.h" #include "ardour/midi_ring_buffer.h" +#include "ardour/midi_state_tracker.h" namespace ARDOUR { @@ -41,6 +42,8 @@ public: int roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame, int declick, bool can_record, bool rec_monitors_input); + void handle_transport_stopped (bool abort, bool did_locate, bool flush_processors); + boost::shared_ptr<MidiDiskstream> midi_diskstream() const; int use_diskstream (string name); @@ -96,6 +99,8 @@ private: void set_state_part_two (); void set_state_part_three (); + MidiStateTracker _midi_state_tracker; + MidiRingBuffer<nframes_t> _immediate_events; MidiRingBuffer<nframes_t> _step_edit_ring_buffer; NoteMode _note_mode; |