Apply MIDI playback filter to immediate note audition events
This commit is contained in:
@@ -46,8 +46,12 @@ NotePlayer::add (std::shared_ptr<NoteType> note)
|
||||
void
|
||||
NotePlayer::on ()
|
||||
{
|
||||
for (Notes::iterator n = notes.begin(); n != notes.end(); ++n) {
|
||||
track->write_immediate_event (Evoral::MIDI_EVENT, (*n)->on_event().size(), (*n)->on_event().buffer());
|
||||
MidiChannelFilter& filter = track->playback_filter ();
|
||||
for (auto const& n : notes) {
|
||||
Evoral::Event ev (n->on_event(), true);
|
||||
if (!filter.filter(ev.buffer(), ev.size())) {
|
||||
track->write_immediate_event (Evoral::MIDI_EVENT, ev.size(), ev.buffer());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +79,11 @@ NotePlayer::_off (NotePlayer* np)
|
||||
void
|
||||
NotePlayer::off ()
|
||||
{
|
||||
for (Notes::iterator n = notes.begin(); n != notes.end(); ++n) {
|
||||
track->write_immediate_event (Evoral::MIDI_EVENT, (*n)->off_event().size(), (*n)->off_event().buffer());
|
||||
MidiChannelFilter& filter = track->playback_filter ();
|
||||
for (auto const& n : notes) {
|
||||
Evoral::Event ev (n->off_event(), true);
|
||||
if (!filter.filter(ev.buffer(), ev.size())) {
|
||||
track->write_immediate_event (Evoral::MIDI_EVENT, ev.size(), ev.buffer());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user