X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fmidi_playlist.h;h=543e1b353f4b44e2bde000f457f83da22c3402cc;hb=43f7813b248686bfa89600f91dccd83017dfe669;hp=5838f5addd0cfd1bd698a328568e664a38d082f6;hpb=633d9131af0a04bed812ce75e9f1da07fe7dfcd4;p=ardour.git diff --git a/libs/ardour/ardour/midi_playlist.h b/libs/ardour/ardour/midi_playlist.h index 5838f5addd..543e1b353f 100644 --- a/libs/ardour/ardour/midi_playlist.h +++ b/libs/ardour/ardour/midi_playlist.h @@ -1,17 +1,17 @@ /* - Copyright (C) 2006 Paul Davis - Written by Dave Robillard, 2006 - + Copyright (C) 2006 Paul Davis + Author: David Robillard + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. @@ -23,8 +23,10 @@ #include #include -#include -#include +#include "ardour/ardour.h" +#include "ardour/playlist.h" +#include "ardour/midi_state_tracker.h" +#include "evoral/Parameter.hpp" namespace ARDOUR { @@ -33,45 +35,46 @@ class Session; class Region; class MidiRegion; class Source; -class MidiRingBuffer; +template class MidiRingBuffer; class MidiPlaylist : public ARDOUR::Playlist { public: MidiPlaylist (Session&, const XMLNode&, bool hidden = false); - MidiPlaylist (Session&, string name, bool hidden = false); - MidiPlaylist (boost::shared_ptr other, string name, bool hidden = false); - MidiPlaylist (boost::shared_ptr other, nframes_t start, nframes_t cnt, - string name, bool hidden = false); + MidiPlaylist (Session&, std::string name, bool hidden = false); + MidiPlaylist (boost::shared_ptr other, std::string name, bool hidden = false); + MidiPlaylist (boost::shared_ptr other, framepos_t start, framecnt_t cnt, + std::string name, bool hidden = false); ~MidiPlaylist (); - nframes_t read (MidiRingBuffer& buf, - nframes_t start, nframes_t cnt, uint32_t chan_n=0); + framecnt_t read (Evoral::EventSink& buf, + framepos_t start, framecnt_t cnt, uint32_t chan_n = 0); - int set_state (const XMLNode&); - UndoAction get_memento() const; + int set_state (const XMLNode&, int version); bool destroy_region (boost::shared_ptr); - + void set_note_mode (NoteMode m) { _note_mode = m; } -protected: + std::set contained_automation(); - /* playlist "callbacks" */ + void clear_note_trackers (); + +protected: - void finalize_split_region (boost::shared_ptr original, boost::shared_ptr left, boost::shared_ptr right); - - void check_dependents (boost::shared_ptr region, bool norefresh); - void refresh_dependents (boost::shared_ptr region); void remove_dependents (boost::shared_ptr region); private: void dump () const; - bool region_changed (Change, boost::shared_ptr); - - NoteMode _note_mode; + bool region_changed (const PBD::PropertyChange&, boost::shared_ptr); + + NoteMode _note_mode; + + typedef std::map NoteTrackers; + NoteTrackers _note_trackers; + }; } /* namespace ARDOUR */