--- linuxsampler/trunk/src/drivers/midi/MidiInputPort.cpp 2005/09/18 12:41:56 774 +++ linuxsampler/trunk/src/drivers/midi/MidiInputPort.cpp 2005/09/21 14:30:43 775 @@ -24,6 +24,7 @@ #include "MidiInputPort.h" #include "../../Sampler.h" +#include "../../engines/EngineFactory.h" namespace LinuxSampler { @@ -148,28 +149,10 @@ } void MidiInputPort::DispatchSysex(void* pData, uint Size) { - // dispatch event for engines listening to the same MIDI channel - { - for (uint MidiChannel = 0; MidiChannel <= 16; MidiChannel++) { - std::set::iterator engineiter = MidiChannelMap[MidiChannel].begin(); - std::set::iterator end = MidiChannelMap[MidiChannel].end(); - for (; engineiter != end; engineiter++) { - Engine* pEngine = (*engineiter)->GetEngine(); - if (pEngine) pEngine->SendSysex(pData, Size); - } - } - } - // dispatch event for engines listening to ALL MIDI channels - { - for (uint MidiChannel = 0; MidiChannel <= 16; MidiChannel++) { - std::set::iterator engineiter = MidiChannelMap[midi_chan_all].begin(); - std::set::iterator end = MidiChannelMap[midi_chan_all].end(); - for (; engineiter != end; engineiter++) { - Engine* pEngine = (*engineiter)->GetEngine(); - if (pEngine) pEngine->SendSysex(pData, Size); - } - } - } + // dispatch event to all engine instances + std::set::iterator engineiter = EngineFactory::EngineInstances().begin(); + std::set::iterator end = EngineFactory::EngineInstances().end(); + for (; engineiter != end; engineiter++) (*engineiter)->SendSysex(pData, Size); } void MidiInputPort::DispatchProgramChange(uint8_t Program, uint MidiChannel) {