20 #ifndef EVORAL_PATCH_CHANGE_HPP
21 #define EVORAL_PATCH_CHANGE_HPP
32 template<
typename Time>
122 inline bool operator< (const PatchChange<Time>& o)
const {
123 if (
time() != o.time()) {
124 return time() < o.time();
127 if (
bank() != o.bank()) {
128 return bank() < o.bank();
131 return (
program() < o.program());
168 template<
typename Time>
169 std::ostream& operator<< (std::ostream& o, const Evoral::PatchChange<Time>& p) {
170 o <<
"Patch Change " << p.id() <<
" @ " << p.time() <<
" bank " << (int) p.bank() <<
" program " << (int) p.program();
MIDIEvent< Time > _program_change
#define MIDI_CTL_MSB_BANK
bool operator==(const PatchChange< Time > &o) const
MIDIEvent< Time > const & message(int i) const
#define MIDI_CTL_LSB_BANK
#define MIDI_CMD_PGM_CHANGE
MIDIEvent< Time > _bank_change_lsb
void set_id(event_id_t id)
PatchChange(const PatchChange &other)
void set_program(uint8_t p)
void set_channel(uint8_t c)
MIDIEvent< Time > _bank_change_msb
PatchChange(Time t, uint8_t c, uint8_t p, int b)