diff options
author | David Robillard <d@drobilla.net> | 2007-06-03 20:06:01 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-06-03 20:06:01 +0000 |
commit | b0e91bfa0899435c7b798ebd35363147eb1b2823 (patch) | |
tree | 0efa702f1d76ca2fadf309674cb2ee11fbc876db /libs/ardour/ardour | |
parent | 41c128155a5eec412f138bcb90b8eb65bd1c5b3d (diff) |
Fix MIDI region loading.
Add model loading and destroying to SMFSource.
Load and display MIDI region data on session load.
git-svn-id: svn://localhost/ardour2/trunk@1947 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/midi_model.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_playlist.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_region.h | 7 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_source.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_track.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/smf_source.h | 3 |
6 files changed, 17 insertions, 6 deletions
diff --git a/libs/ardour/ardour/midi_model.h b/libs/ardour/ardour/midi_model.h index 5d343d7fa9..509504a472 100644 --- a/libs/ardour/ardour/midi_model.h +++ b/libs/ardour/ardour/midi_model.h @@ -35,9 +35,14 @@ public: MidiModel(size_t size=0); ~MidiModel(); + void clear() { _events.clear(); } + /** Resizes vector if necessary (NOT realtime safe) */ void append(const MidiBuffer& data); + /** Resizes vector if necessary (NOT realtime safe) */ + void append(const MidiEvent& ev); + inline const MidiEvent& event_at(unsigned i) const { return _events[i]; } inline size_t n_events() const { return _events.size(); } diff --git a/libs/ardour/ardour/midi_playlist.h b/libs/ardour/ardour/midi_playlist.h index 44f04b781b..3162debbd5 100644 --- a/libs/ardour/ardour/midi_playlist.h +++ b/libs/ardour/ardour/midi_playlist.h @@ -57,7 +57,6 @@ public: protected: /* playlist "callbacks" */ - void flush_notifications (); void finalize_split_region (boost::shared_ptr<Region> original, boost::shared_ptr<Region> left, boost::shared_ptr<Region> right); @@ -66,7 +65,6 @@ protected: void remove_dependents (boost::shared_ptr<Region> region); private: - XMLNode& state (bool full_state); void dump () const; bool region_changed (Change, boost::shared_ptr<Region>); diff --git a/libs/ardour/ardour/midi_region.h b/libs/ardour/ardour/midi_region.h index 2b783a92a8..83487e456a 100644 --- a/libs/ardour/ardour/midi_region.h +++ b/libs/ardour/ardour/midi_region.h @@ -79,9 +79,6 @@ class MidiRegion : public Region MidiRegion (SourceList &, const XMLNode&); private: - friend class Playlist; - - private: nframes_t _read_at (const SourceList&, MidiRingBuffer& dst, nframes_t position, nframes_t dur, @@ -89,6 +86,10 @@ class MidiRegion : public Region void recompute_at_start (); void recompute_at_end (); + + protected: + + int set_live_state (const XMLNode&, Change&, bool send); }; } /* namespace ARDOUR */ diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h index 40ef87f8c9..fd5aa15376 100644 --- a/libs/ardour/ardour/midi_source.h +++ b/libs/ardour/ardour/midi_source.h @@ -69,6 +69,9 @@ class MidiSource : public Source XMLNode& get_state (); int set_state (const XMLNode&); + virtual void load_model(bool lock=true) = 0; + virtual void destroy_model() = 0; + MidiModel& model() { return _model; } protected: diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 0dad40a973..c88878c167 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -75,10 +75,11 @@ public: protected: XMLNode& state (bool full); + + int _set_state (const XMLNode&, bool call_base); private: int set_diskstream (boost::shared_ptr<MidiDiskstream> ds); - void set_state_part_two (); void set_state_part_three (); }; diff --git a/libs/ardour/ardour/smf_source.h b/libs/ardour/ardour/smf_source.h index 6ab81a2ac3..ed1a0edb76 100644 --- a/libs/ardour/ardour/smf_source.h +++ b/libs/ardour/ardour/smf_source.h @@ -87,6 +87,9 @@ class SMFSource : public MidiSource { int set_state (const XMLNode&); void seek_to(nframes_t time); + + void load_model(bool lock=true); + void destroy_model(); private: |