From f43935b5c873676a632b23cbfcef45a4431b233d Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sun, 8 Aug 2021 10:34:54 +0200 Subject: Add support for a single midi note that plays multiple instruments. --- test/dgreftest/midiinputengine.cc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'test/dgreftest/midiinputengine.cc') diff --git a/test/dgreftest/midiinputengine.cc b/test/dgreftest/midiinputengine.cc index ca223da..dbffec9 100644 --- a/test/dgreftest/midiinputengine.cc +++ b/test/dgreftest/midiinputengine.cc @@ -155,16 +155,15 @@ void MidifileInputEngine::run(size_t pos, size_t len, std::vector& even int key = current_event->midi_buffer[1]; int velocity = current_event->midi_buffer[2]; - events.emplace_back(); - auto& event = events.back(); - event.type = EventType::OnSet; - size_t evpos = current_event->time_seconds * (samplerate / speed); - event.offset = evpos - pos; - - int i = mmap.lookup(key); - if(i != -1) + auto instruments = mmap.lookup(key); + for(const auto& instrument_idx : instruments) { - event.instrument = i; + events.emplace_back(); + auto& event = events.back(); + event.type = EventType::OnSet; + size_t evpos = current_event->time_seconds * (samplerate / speed); + event.offset = evpos - pos; + event.instrument = instrument_idx; event.velocity = velocity / 127.0; } } -- cgit v1.2.3