X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Fardour%2Fmidi_playlist.h;h=b118214c9e2a2a2aaf5f6a23b3ffc86ec7231c16;hb=10a4b2d3eda15101d527249ad799c93bb1097d52;hp=da8391a16bc1eab19a95cefbdf5899ae8dd028d7;hpb=3b89d9eaa03406a5e03648f47734211f09b89d62;p=ardour.git diff --git a/libs/ardour/ardour/midi_playlist.h b/libs/ardour/ardour/midi_playlist.h index da8391a16b..b118214c9e 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. @@ -25,55 +25,55 @@ #include "ardour/ardour.h" #include "ardour/playlist.h" +#include "ardour/midi_state_tracker.h" #include "evoral/Parameter.hpp" namespace ARDOUR { class Session; -class Region; class MidiRegion; class Source; template class MidiRingBuffer; -class MidiPlaylist : public ARDOUR::Playlist +class LIBARDOUR_API MidiPlaylist : public ARDOUR::Playlist { public: MidiPlaylist (Session&, const XMLNode&, 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, nframes_t start, nframes_t cnt, + 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&); + int set_state (const XMLNode&, int version); bool destroy_region (boost::shared_ptr); - + void set_note_mode (NoteMode m) { _note_mode = m; } std::set contained_automation(); -protected: + void clear_note_trackers (); - /* playlist "callbacks" */ +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 */