};
public:
+
typedef typename boost::shared_ptr<Evoral::Note<Time> > NotePtr;
typedef typename boost::shared_ptr<const Evoral::Note<Time> > constNotePtr;
bool writing() const { return _writing; }
void end_write(bool delete_stuck=false);
- void append(const Event<Time>& ev);
+ void append(const Event<Time>& ev, Evoral::event_id_t evid);
inline size_t n_notes() const { return _notes.size(); }
inline bool empty() const { return _notes.size() == 0 && ControlSet::controls_empty(); }
class const_iterator {
public:
const_iterator();
- const_iterator(const Sequence<Time>& seq, Time t, std::set<Evoral::Parameter> const &);
+ const_iterator(const Sequence<Time>& seq, Time t, bool, std::set<Evoral::Parameter> const &);
~const_iterator();
inline bool valid() const { return !_is_end && _event; }
typename SysExes::const_iterator _sysex_iter;
ControlIterators _control_iters;
ControlIterators::iterator _control_iter;
+ bool _force_discrete;
};
- const_iterator begin (Time t=0, std::set<Evoral::Parameter> const & f = std::set<Evoral::Parameter> ()) const {
- return const_iterator (*this, t, f);
+ const_iterator begin (Time t = 0, bool force_discrete = false, std::set<Evoral::Parameter> const & f = std::set<Evoral::Parameter> ()) const {
+ return const_iterator (*this, t, force_discrete, f);
}
const const_iterator& end() const { return _end_iter; }
bool overlaps_unlocked (const NotePtr& ev, const NotePtr& ignore_this_note) const;
bool contains_unlocked (const NotePtr& ev) const;
- void append_note_on_unlocked (NotePtr);
+ void append_note_on_unlocked (NotePtr, Evoral::event_id_t);
void append_note_off_unlocked(NotePtr);
- void append_control_unlocked(const Parameter& param, Time time, double value);
- void append_sysex_unlocked(const MIDIEvent<Time>& ev);
+ void append_control_unlocked(const Parameter& param, Time time, double value, Evoral::event_id_t);
+ void append_sysex_unlocked(const MIDIEvent<Time>& ev, Evoral::event_id_t);
void get_notes_by_pitch (Notes&, NoteOperator, uint8_t val, int chan_mask = 0) const;
void get_notes_by_velocity (Notes&, NoteOperator, uint8_t val, int chan_mask = 0) const;
+ void control_list_marked_dirty ();
+
const TypeMap& _type_map;
Notes _notes; // notes indexed by time
typedef std::multiset<NotePtr, EarlierNoteComparator> WriteNotes;
WriteNotes _write_notes[16];
- typedef std::vector< boost::shared_ptr<const ControlList> > ControlLists;
- ControlLists _dirty_controls;
-
const const_iterator _end_iter;
bool _percussive;