MidiEventList MidiIn::readAllNotes() { MidiEventList allNotes; //TODO: should be possible to transform it into // a do while MidiEvent event = read(); while( event.get_type() == MidiEventType_NoteOff || event.get_type() == MidiEventType_NoteOn ) { allNotes.push_back(event); event = read(); } return allNotes; }
MidiEventList MidiTrack::Update(microseconds_t delta_microseconds) { m_running_microseconds += delta_microseconds; MidiEventList evs; for (size_t i = m_last_event + 1; i < m_events.size(); ++i) { if (m_event_usecs[i] <= m_running_microseconds) { evs.push_back(m_events[i]); m_last_event = static_cast<long>(i); if (m_events[i].Type() == MidiEventType_NoteOn && m_events[i].NoteVelocity() > 0) m_notes_remaining--; } else break; } return evs; }