#include "evoral/visibility.h"
#include "evoral/types.hpp"
#include "evoral/Note.hpp"
-#include "evoral/Parameter.hpp"
#include "evoral/ControlSet.hpp"
#include "evoral/ControlList.hpp"
#include "evoral/PatchChange.hpp"
namespace Evoral {
+class Parameter;
class TypeMap;
template<typename Time> class EventSink;
template<typename Time> class Note;
ResolveStuckNotes
};
- void end_write (StuckNoteOption, Time when = 0);
+ void end_write (StuckNoteOption, Time when = Time());
void append(const Event<Time>& ev, Evoral::event_id_t evid);
+ const TypeMap& type_map() const { return _type_map; }
+
inline size_t n_notes() const { return _notes.size(); }
inline bool empty() const { return _notes.empty() && _sysexes.empty() && _patch_changes.empty() && ControlSet::controls_empty(); }
struct EarlierNoteComparator {
inline bool operator()(const boost::shared_ptr< const Note<Time> > a,
const boost::shared_ptr< const Note<Time> > b) const {
- return musical_time_less_than (a->time(), b->time());
+ return a->time() < b->time();
}
};
typedef const Note<Time>* value_type;
inline bool operator()(const boost::shared_ptr< const Note<Time> > a,
const boost::shared_ptr< const Note<Time> > b) const {
- return musical_time_greater_than (a->time(), b->time());
+ return a->time() > b->time();
}
};
typedef const Note<Time>* value_type;
inline bool operator()(const boost::shared_ptr< const Note<Time> > a,
const boost::shared_ptr< const Note<Time> > b) const {
- return musical_time_greater_than (a->end_time(), b->end_time());
+ return a->end_time() > b->end_time();
}
};
struct EarlierSysExComparator {
inline bool operator() (constSysExPtr a, constSysExPtr b) const {
- return musical_time_less_than (a->time(), b->time());
+ return a->time() < b->time();
}
};
struct EarlierPatchChangeComparator {
inline bool operator() (constPatchChangePtr a, constPatchChangePtr b) const {
- return musical_time_less_than (a->time(), b->time());
+ return a->time() < b->time();
}
};
public:
/** Read iterator */
- class LIBEVORAL_API /* Added by JE - */ const_iterator {
+ class LIBEVORAL_API const_iterator {
public:
const_iterator();
const_iterator(const Sequence<Time>& seq, Time t, bool, std::set<Evoral::Parameter> const &);
private:
friend class Sequence<Time>;
+ Time choose_next(Time earliest_t);
+ void set_event();
+
typedef std::vector<ControlIterator> ControlIterators;
enum MIDIMessageType { NIL, NOTE_ON, NOTE_OFF, CONTROL, SYSEX, PATCH_CHANGE };
};
const_iterator begin (
- Time t = 0,
+ Time t = Time(),
bool force_discrete = false,
std::set<Evoral::Parameter> const & f = std::set<Evoral::Parameter> ()) const {
return const_iterator (*this, t, force_discrete, f);