summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-06-03 20:06:01 +0000
committerDavid Robillard <d@drobilla.net>2007-06-03 20:06:01 +0000
commitb0e91bfa0899435c7b798ebd35363147eb1b2823 (patch)
tree0efa702f1d76ca2fadf309674cb2ee11fbc876db /libs/ardour/ardour
parent41c128155a5eec412f138bcb90b8eb65bd1c5b3d (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.h5
-rw-r--r--libs/ardour/ardour/midi_playlist.h2
-rw-r--r--libs/ardour/ardour/midi_region.h7
-rw-r--r--libs/ardour/ardour/midi_source.h3
-rw-r--r--libs/ardour/ardour/midi_track.h3
-rw-r--r--libs/ardour/ardour/smf_source.h3
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: