diff options
author | David Robillard <d@drobilla.net> | 2008-02-19 03:24:44 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-02-19 03:24:44 +0000 |
commit | 012292b4bdf5bf843232243852b39e8892b837de (patch) | |
tree | cddefe42aab1301df0677d652d37ba757894d97b /libs/ardour/midi_playlist.cc | |
parent | b79d5bfad3473f54ab24c0b7852fc4bfc9d9ebb0 (diff) |
Less crash-happy MIDI reading on weird MIDI files.
Make "show existing automation" create/show automation tracks for all contained CC in MIDI tracks.
Fix staggered time when importing multi-track MIDI files.
git-svn-id: svn://localhost/ardour2/branches/3.0@3086 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_playlist.cc')
-rw-r--r-- | libs/ardour/midi_playlist.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libs/ardour/midi_playlist.cc b/libs/ardour/midi_playlist.cc index d8e59efd4a..d258d49524 100644 --- a/libs/ardour/midi_playlist.cc +++ b/libs/ardour/midi_playlist.cc @@ -265,6 +265,30 @@ MidiPlaylist::destroy_region (boost::shared_ptr<Region> region) return changed; } +set<Parameter> +MidiPlaylist::contained_automation() +{ + /* this function is never called from a realtime thread, so + its OK to block (for short intervals). + */ + + Glib::Mutex::Lock rm (region_lock); + + set<Parameter> ret; + + for (RegionList::const_iterator r = regions.begin(); r != regions.end(); ++r) { + boost::shared_ptr<MidiRegion> mr = boost::dynamic_pointer_cast<MidiRegion>(*r); + + for (Automatable::Controls::iterator c = mr->controls().begin(); + c != mr->controls().end(); ++c) { + ret.insert(c->first); + } + } + + return ret; +} + + bool MidiPlaylist::region_changed (Change what_changed, boost::shared_ptr<Region> region) { |