ardour
Classes | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
ARDOUR::MidiPlaylist Class Reference

#include <midi_playlist.h>

Inheritance diagram for ARDOUR::MidiPlaylist:
ARDOUR::Playlist ARDOUR::SessionObject boost::enable_shared_from_this< Playlist > ARDOUR::SessionHandleRef PBD::StatefulDestructible PBD::ScopedConnectionList PBD::Stateful PBD::Destructible

Classes

struct  RegionTracker
 

Public Member Functions

 MidiPlaylist (Session &, const XMLNode &, bool hidden=false)
 
 MidiPlaylist (Session &, std::string name, bool hidden=false)
 
 MidiPlaylist (boost::shared_ptr< const MidiPlaylist > other, std::string name, bool hidden=false)
 
 MidiPlaylist (boost::shared_ptr< const MidiPlaylist > other, framepos_t start, framecnt_t cnt, std::string name, bool hidden=false)
 
 ~MidiPlaylist ()
 
framecnt_t read (Evoral::EventSink< framepos_t > &buf, framepos_t start, framecnt_t cnt, uint32_t chan_n=0, MidiChannelFilter *filter=NULL)
 
int set_state (const XMLNode &, int version)
 
bool destroy_region (boost::shared_ptr< Region >)
 
void set_note_mode (NoteMode m)
 
std::set< Evoral::Parametercontained_automation ()
 
void region_edited (boost::shared_ptr< Region > region, const MidiModel::NoteDiffCommand *cmd)
 
void reset_note_trackers ()
 
void resolve_note_trackers (Evoral::EventSink< framepos_t > &dst, framepos_t time)
 
- Public Member Functions inherited from ARDOUR::Playlist
 Playlist (Session &, const XMLNode &, DataType type, bool hidden=false)
 
 Playlist (Session &, std::string name, DataType type, bool hidden=false)
 
 Playlist (boost::shared_ptr< const Playlist >, std::string name, bool hidden=false)
 
 Playlist (boost::shared_ptr< const Playlist >, framepos_t start, framecnt_t cnt, std::string name, bool hidden=false)
 
virtual ~Playlist ()
 
void update (const RegionListProperty::ChangeRecord &)
 
void clear_owned_changes ()
 
void rdiff (std::vector< Command * > &) const
 
boost::shared_ptr< Regionregion_by_id (const PBD::ID &) const
 
uint32_t max_source_level () const
 
void set_region_ownership ()
 
virtual void clear (bool with_signals=true)
 
void use ()
 
void release ()
 
bool used () const
 
bool set_name (const std::string &str)
 
int sort_id ()
 
const DataTypedata_type () const
 
bool frozen () const
 
void set_frozen (bool yn)
 
bool hidden () const
 
bool empty () const
 
uint32_t n_regions () const
 
bool all_regions_empty () const
 
std::pair< framepos_t, framepos_tget_extent () const
 
std::pair< framepos_t, framepos_tget_extent_with_endspace () const
 
layer_t top_layer () const
 
EditMode get_edit_mode () const
 
void set_edit_mode (EditMode)
 
void add_region (boost::shared_ptr< Region >, framepos_t position, float times=1, bool auto_partition=false)
 
void remove_region (boost::shared_ptr< Region >)
 
void remove_region_by_source (boost::shared_ptr< Source >)
 
void get_equivalent_regions (boost::shared_ptr< Region >, std::vector< boost::shared_ptr< Region > > &)
 
void get_region_list_equivalent_regions (boost::shared_ptr< Region >, std::vector< boost::shared_ptr< Region > > &)
 
void get_source_equivalent_regions (boost::shared_ptr< Region >, std::vector< boost::shared_ptr< Region > > &)
 
void replace_region (boost::shared_ptr< Region > old, boost::shared_ptr< Region > newr, framepos_t pos)
 
void split_region (boost::shared_ptr< Region >, framepos_t position)
 
void split (framepos_t at)
 
void shift (framepos_t at, frameoffset_t distance, bool move_intersected, bool ignore_music_glue)
 
void partition (framepos_t start, framepos_t end, bool cut=false)
 
void duplicate (boost::shared_ptr< Region >, framepos_t position, float times)
 
void nudge_after (framepos_t start, framecnt_t distance, bool forwards)
 
boost::shared_ptr< Regioncombine (const RegionList &)
 
void uncombine (boost::shared_ptr< Region >)
 
void fade_range (std::list< AudioRange > &)
 
void shuffle (boost::shared_ptr< Region >, int dir)
 
void ripple (framepos_t at, framecnt_t distance, RegionList *exclude)
 
void ripple (framepos_t at, framecnt_t distance, boost::shared_ptr< Region > exclude)
 
void update_after_tempo_map_change ()
 
boost::shared_ptr< Playlistcut (std::list< AudioRange > &, bool result_is_hidden=true)
 
boost::shared_ptr< Playlistcopy (std::list< AudioRange > &, bool result_is_hidden=true)
 
int paste (boost::shared_ptr< Playlist >, framepos_t position, float times)
 
const RegionListPropertyregion_list () const
 
boost::shared_ptr< RegionListregions_at (framepos_t frame)
 
uint32_t count_regions_at (framepos_t) const
 
boost::shared_ptr< RegionListregions_touched (framepos_t start, framepos_t end)
 
boost::shared_ptr< RegionListregions_with_start_within (Evoral::Range< framepos_t >)
 
boost::shared_ptr< RegionListregions_with_end_within (Evoral::Range< framepos_t >)
 
uint32_t region_use_count (boost::shared_ptr< Region >) const
 
boost::shared_ptr< Regionfind_region (const PBD::ID &) const
 
boost::shared_ptr< Regiontop_region_at (framepos_t frame)
 
boost::shared_ptr< Regiontop_unmuted_region_at (framepos_t frame)
 
boost::shared_ptr< Regionfind_next_region (framepos_t frame, RegionPoint point, int dir)
 
framepos_t find_next_region_boundary (framepos_t frame, int dir)
 
bool region_is_shuffle_constrained (boost::shared_ptr< Region >)
 
bool has_region_at (framepos_t const) const
 
bool uses_source (boost::shared_ptr< const Source > src) const
 
framepos_t find_next_transient (framepos_t position, int dir)
 
void foreach_region (boost::function< void(boost::shared_ptr< Region >)>)
 
XMLNodeget_state ()
 
XMLNodeget_template ()
 
void freeze ()
 
void thaw (bool from_undo=false)
 
void raise_region (boost::shared_ptr< Region >)
 
void lower_region (boost::shared_ptr< Region >)
 
void raise_region_to_top (boost::shared_ptr< Region >)
 
void lower_region_to_bottom (boost::shared_ptr< Region >)
 
const PBD::IDget_orig_track_id () const
 
void set_orig_track_id (const PBD::ID &did)
 
void sync_all_regions_with_regions ()
 
void drop_regions ()
 
virtual boost::shared_ptr
< Crossfade > 
find_crossfade (const PBD::ID &) const
 
framepos_t find_next_top_layer_position (framepos_t) const
 
uint32_t combine_ops () const
 
void set_layer (boost::shared_ptr< Region >, double)
 
void set_capture_insertion_in_progress (bool yn)
 
- Public Member Functions inherited from ARDOUR::SessionObject
 SessionObject (Session &session, const std::string &name)
 
Sessionsession () const
 
std::string name () const
 
- Public Member Functions inherited from ARDOUR::SessionHandleRef
 SessionHandleRef (ARDOUR::Session &s)
 
virtual ~SessionHandleRef ()
 
- Public Member Functions inherited from PBD::ScopedConnectionList
 ScopedConnectionList ()
 
virtual ~ScopedConnectionList ()
 
void add_connection (const UnscopedConnection &c)
 
void drop_connections ()
 
- Public Member Functions inherited from PBD::Stateful
 Stateful ()
 
virtual ~Stateful ()
 
virtual bool apply_changes (PropertyBase const &)
 
PropertyChange apply_changes (PropertyList const &)
 
const OwnedPropertyListproperties () const
 
void add_property (PropertyBase &s)
 
void add_extra_xml (XMLNode &)
 
XMLNodeextra_xml (const std::string &str, bool add_if_missing=false)
 
void save_extra_xml (const XMLNode &)
 
const PBD::IDid () const
 
bool set_id (const XMLNode &)
 
void set_id (const std::string &)
 
void reset_id ()
 
void clear_changes ()
 
PropertyListget_changes_as_properties (Command *) const
 
bool changed () const
 
virtual PropertyListproperty_factory (const XMLNode &) const
 
virtual void suspend_property_changes ()
 
virtual void resume_property_changes ()
 
bool property_changes_suspended () const
 
- Public Member Functions inherited from PBD::Destructible
 Destructible ()
 
virtual ~Destructible ()
 
void drop_references ()
 

Protected Member Functions

void remove_dependents (boost::shared_ptr< Region > region)
 
- Protected Member Functions inherited from ARDOUR::Playlist
void init (bool hide)
 
bool holding_state () const
 
void delay_notifications ()
 
void release_notifications (bool from_undo=false)
 
virtual void flush_notifications (bool from_undo=false)
 
void clear_pending ()
 
void _set_sort_id ()
 
boost::shared_ptr< RegionListregions_touched_locked (framepos_t start, framepos_t end)
 
void notify_region_removed (boost::shared_ptr< Region >)
 
void notify_region_added (boost::shared_ptr< Region >)
 
void notify_layering_changed ()
 
void notify_contents_changed ()
 
void notify_state_changed (const PBD::PropertyChange &)
 
void notify_region_moved (boost::shared_ptr< Region >)
 
void notify_region_start_trimmed (boost::shared_ptr< Region >)
 
void notify_region_end_trimmed (boost::shared_ptr< Region >)
 
void mark_session_dirty ()
 
void region_changed_proxy (const PBD::PropertyChange &, boost::weak_ptr< Region >)
 
virtual bool region_changed (const PBD::PropertyChange &, boost::shared_ptr< Region >)
 
void region_bounds_changed (const PBD::PropertyChange &, boost::shared_ptr< Region >)
 
void region_deleted (boost::shared_ptr< Region >)
 
void sort_regions ()
 
void possibly_splice (framepos_t at, framecnt_t distance, boost::shared_ptr< Region > exclude=boost::shared_ptr< Region >())
 
void possibly_splice_unlocked (framepos_t at, framecnt_t distance, boost::shared_ptr< Region > exclude=boost::shared_ptr< Region >())
 
void core_splice (framepos_t at, framecnt_t distance, boost::shared_ptr< Region > exclude)
 
void splice_locked (framepos_t at, framecnt_t distance, boost::shared_ptr< Region > exclude)
 
void splice_unlocked (framepos_t at, framecnt_t distance, boost::shared_ptr< Region > exclude)
 
void core_ripple (framepos_t at, framecnt_t distance, RegionList *exclude)
 
void ripple_locked (framepos_t at, framecnt_t distance, RegionList *exclude)
 
void ripple_unlocked (framepos_t at, framecnt_t distance, RegionList *exclude)
 
virtual XMLNodestate (bool)
 
bool add_region_internal (boost::shared_ptr< Region >, framepos_t position)
 
int remove_region_internal (boost::shared_ptr< Region >)
 
void copy_regions (RegionList &) const
 
void partition_internal (framepos_t start, framepos_t end, bool cutting, RegionList &thawlist)
 
std::pair< framepos_t, framepos_t_get_extent () const
 
boost::shared_ptr< Playlistcut_copy (boost::shared_ptr< Playlist >(Playlist::*pmf)(framepos_t, framecnt_t, bool), std::list< AudioRange > &ranges, bool result_is_hidden)
 
boost::shared_ptr< Playlistcut (framepos_t start, framecnt_t cnt, bool result_is_hidden)
 
boost::shared_ptr< Playlistcopy (framepos_t start, framecnt_t cnt, bool result_is_hidden)
 
void relayer ()
 
void begin_undo ()
 
void end_undo ()
 
void _split_region (boost::shared_ptr< Region >, framepos_t position)
 
virtual void pre_combine (std::vector< boost::shared_ptr< Region > > &)
 
virtual void post_combine (std::vector< boost::shared_ptr< Region > > &, boost::shared_ptr< Region >)
 
virtual void pre_uncombine (std::vector< boost::shared_ptr< Region > > &, boost::shared_ptr< Region >)
 
- Protected Member Functions inherited from ARDOUR::SessionHandleRef
virtual void session_going_away ()
 
virtual void insanity_check ()
 
- Protected Member Functions inherited from PBD::Stateful
void add_instant_xml (XMLNode &, const std::string &directory_path)
 
XMLNodeinstant_xml (const std::string &str, const std::string &directory_path)
 
void add_properties (XMLNode &)
 
PropertyChange set_values (XMLNode const &)
 
virtual void post_set (const PropertyChange &)
 
virtual void send_change (const PropertyChange &)
 
virtual void mid_thaw (const PropertyChange &)
 

Private Types

typedef Evoral::Note
< Evoral::Beats
Note
 
typedef Evoral::Event< framepos_tEvent
 
typedef std::map< Region
*, boost::shared_ptr
< RegionTracker > > 
NoteTrackers
 

Private Member Functions

void dump () const
 

Private Attributes

NoteTrackers _note_trackers
 
NoteMode _note_mode
 
framepos_t _read_end
 

Additional Inherited Members

- Static Public Member Functions inherited from ARDOUR::Playlist
static void make_property_quarks ()
 
static std::string bump_name (std::string old_name, Session &)
 
- Static Public Member Functions inherited from ARDOUR::SessionObject
static void make_property_quarks ()
 
- Public Attributes inherited from ARDOUR::Playlist
PBD::Signal1< void, bool > InUse
 
PBD::Signal0< void > ContentsChanged
 
PBD::Signal1< void,
boost::weak_ptr< Region > > 
RegionAdded
 
PBD::Signal1< void,
boost::weak_ptr< Region > > 
RegionRemoved
 
PBD::Signal0< void > NameChanged
 
PBD::Signal0< void > LayeringChanged
 
PBD::Signal2< void, std::list
< Evoral::RangeMove
< framepos_t > > const &, bool > 
RangesMoved
 
PBD::Signal1< void, std::list
< Evoral::Range< framepos_t >
> const & > 
RegionsExtended
 
- Public Attributes inherited from PBD::Stateful
PBD::Signal1< void, const
PropertyChange & > 
PropertyChanged
 
- Public Attributes inherited from PBD::Destructible
PBD::Signal0< void > Destroyed
 
PBD::Signal0< void > DropReferences
 
- Static Public Attributes inherited from PBD::Stateful
static int current_state_version = 0
 
static int loading_state_version = 0
 
- Protected Types inherited from ARDOUR::Playlist
typedef std::pair
< boost::shared_ptr< Region >
, boost::shared_ptr< Region > > 
TwoRegions
 
- Protected Attributes inherited from ARDOUR::Playlist
RegionListProperty regions
 
std::set< boost::shared_ptr
< Region > > 
all_regions
 
PBD::ScopedConnectionList region_state_changed_connections
 
DataType _type
 
int _sort_id
 
gint block_notifications
 
gint ignore_state_changes
 
std::set< boost::shared_ptr
< Region > > 
pending_adds
 
std::set< boost::shared_ptr
< Region > > 
pending_removes
 
RegionList pending_bounds
 
bool pending_contents_change
 
bool pending_layering
 
std::list< Evoral::RangeMove
< framepos_t > > 
pending_range_moves
 
std::list< Evoral::Range
< framepos_t > > 
pending_region_extensions
 
uint32_t in_set_state
 
bool in_undo
 
bool first_set_state
 
bool _hidden
 
bool _splicing
 
bool _rippling
 
bool _shuffling
 
bool _nudging
 
uint32_t _refcnt
 
EditMode _edit_mode
 
bool in_flush
 
bool in_partition
 
bool _frozen
 
bool _capture_insertion_underway
 
uint32_t subcnt
 
PBD::ID _orig_track_id
 
uint32_t _combine_ops
 
- Protected Attributes inherited from ARDOUR::SessionObject
PBD::Property< std::string > _name
 
- Protected Attributes inherited from ARDOUR::SessionHandleRef
ARDOUR::Session_session
 
- Protected Attributes inherited from PBD::Stateful
XMLNode_extra_xml
 
XMLNode_instant_xml
 
PBD::PropertyChange _pending_changed
 
Glib::Threads::Mutex _lock
 
std::string _xml_node_name
 name of node to use for this object in XML More...
 
OwnedPropertyList_properties
 

Detailed Description

Definition at line 52 of file midi_playlist.h.

Member Typedef Documentation

Definition at line 116 of file midi_playlist.h.

Definition at line 115 of file midi_playlist.h.

Definition at line 123 of file midi_playlist.h.

Constructor & Destructor Documentation

MidiPlaylist::MidiPlaylist ( Session session,
const XMLNode node,
bool  hidden = false 
)

Definition at line 44 of file midi_playlist.cc.

ARDOUR::MidiPlaylist::MidiPlaylist ( Session ,
std::string  name,
bool  hidden = false 
)
ARDOUR::MidiPlaylist::MidiPlaylist ( boost::shared_ptr< const MidiPlaylist other,
std::string  name,
bool  hidden = false 
)
ARDOUR::MidiPlaylist::MidiPlaylist ( boost::shared_ptr< const MidiPlaylist other,
framepos_t  start,
framecnt_t  cnt,
std::string  name,
bool  hidden = false 
)

This constructor does NOT notify others (session)

MidiPlaylist::~MidiPlaylist ( )

Definition at line 88 of file midi_playlist.cc.

Member Function Documentation

set< Evoral::Parameter > MidiPlaylist::contained_automation ( )

Definition at line 366 of file midi_playlist.cc.

bool MidiPlaylist::destroy_region ( boost::shared_ptr< Region region)
virtual

Implements ARDOUR::Playlist.

Definition at line 327 of file midi_playlist.cc.

void MidiPlaylist::dump ( ) const
privatevirtual

Reimplemented from ARDOUR::Playlist.

Definition at line 306 of file midi_playlist.cc.

framecnt_t MidiPlaylist::read ( Evoral::EventSink< framepos_t > &  buf,
framepos_t  start,
framecnt_t  cnt,
uint32_t  chan_n = 0,
MidiChannelFilter filter = NULL 
)

Read a range from the playlist into an event sink.

Parameters
bufDestination for events.
startFirst frame of read range.
cntNumber of frames in read range.
chan_nMust be 0 (this is the audio-style "channel", where each channel is backed by a separate region, not MIDI channels, which all exist in the same region and are not handled here).
Returns
The number of frames read (time, not an event count).

Definition at line 109 of file midi_playlist.cc.

void MidiPlaylist::region_edited ( boost::shared_ptr< Region region,
const MidiModel::NoteDiffCommand cmd 
)

Handle a region edit during read.

This must be called before the command is applied to the model. Events are injected into the playlist output to compensate for edits to active notes and maintain coherent output and tracker state.

Definition at line 237 of file midi_playlist.cc.

void MidiPlaylist::remove_dependents ( boost::shared_ptr< Region region)
protectedvirtual

Reimplemented from ARDOUR::Playlist.

Definition at line 283 of file midi_playlist.cc.

void MidiPlaylist::reset_note_trackers ( )

Clear all note trackers.

Definition at line 262 of file midi_playlist.cc.

void MidiPlaylist::resolve_note_trackers ( Evoral::EventSink< framepos_t > &  dst,
framepos_t  time 
)

Resolve all pending notes and clear all note trackers.

Parameters
dstSink to write note offs to.
timeTime stamp of all written note offs.

Definition at line 271 of file midi_playlist.cc.

void ARDOUR::MidiPlaylist::set_note_mode ( NoteMode  m)
inline

Definition at line 88 of file midi_playlist.h.

int MidiPlaylist::set_state ( const XMLNode node,
int  version 
)
virtual

Reimplemented from ARDOUR::Playlist.

Definition at line 290 of file midi_playlist.cc.

Member Data Documentation

NoteMode ARDOUR::MidiPlaylist::_note_mode
private

Definition at line 128 of file midi_playlist.h.

NoteTrackers ARDOUR::MidiPlaylist::_note_trackers
private

Definition at line 127 of file midi_playlist.h.

framepos_t ARDOUR::MidiPlaylist::_read_end
private

Definition at line 129 of file midi_playlist.h.


The documentation for this class was generated from the following files: