/[svn]/linuxsampler/trunk/src/drivers/midi/MidiInputPort.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/drivers/midi/MidiInputPort.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 947 by schoenebeck, Mon Nov 27 21:34:55 2006 UTC revision 973 by schoenebeck, Fri Dec 15 21:40:27 2006 UTC
# Line 251  namespace LinuxSampler { Line 251  namespace LinuxSampler {
251                        << "This is a bug, please report it!\n" << std::flush;                        << "This is a bug, please report it!\n" << std::flush;
252              return;              return;
253          }          }
254            std::vector<int> maps = MidiInstrumentMapper::Maps();
255            if (maps.empty()) return;
256    
257          const MidiChannelMap_t& midiChannelMap = MidiChannelMapReader.Lock();          const MidiChannelMap_t& midiChannelMap = MidiChannelMapReader.Lock();
258          // dispatch event for engines listening to the same MIDI channel          // dispatch event for engines listening to the same MIDI channel
259          {          {
# Line 258  namespace LinuxSampler { Line 261  namespace LinuxSampler {
261              std::set<EngineChannel*>::iterator end        = midiChannelMap[MidiChannel].end();              std::set<EngineChannel*>::iterator end        = midiChannelMap[MidiChannel].end();
262              for (; engineiter != end; engineiter++) {              for (; engineiter != end; engineiter++) {
263                  (*engineiter)->SetMidiProgram(Program);                  (*engineiter)->SetMidiProgram(Program);
264                  // is there a mapping for this MIDI bank&prog pair?                  if ((*engineiter)->UsesNoMidiInstrumentMap()) continue;
265                    // retrieve the MIDI instrument map this engine channel is assigned to
266                    int iMapID = ((*engineiter)->UsesDefaultMidiInstrumentMap())
267                        ? maps[0] /*default*/ : (*engineiter)->GetMidiInstrumentMap();
268                    // is there an entry for this MIDI bank&prog pair in that map?
269                  midi_prog_index_t midiIndex;                  midi_prog_index_t midiIndex;
270                  midiIndex.midi_bank_msb = (*engineiter)->GetMidiBankMsb();                  midiIndex.midi_bank_msb = (*engineiter)->GetMidiBankMsb();
271                  midiIndex.midi_bank_lsb = (*engineiter)->GetMidiBankLsb();                  midiIndex.midi_bank_lsb = (*engineiter)->GetMidiBankLsb();
272                  midiIndex.midi_prog     = (*engineiter)->GetMidiProgram();                  midiIndex.midi_prog     = (*engineiter)->GetMidiProgram();
273                  optional<MidiInstrumentMapper::entry_t> mapping =                  optional<MidiInstrumentMapper::entry_t> mapping =
274                      MidiInstrumentMapper::GetEntry(midiIndex);                      MidiInstrumentMapper::GetEntry(iMapID, midiIndex);
275                  if (mapping) { // if mapping exists ...                  if (mapping) { // if mapping exists ...
276                      InstrumentManager::instrument_id_t id;                      InstrumentManager::instrument_id_t id;
277                      id.FileName = mapping->InstrumentFile;                      id.FileName = mapping->InstrumentFile;
# Line 281  namespace LinuxSampler { Line 288  namespace LinuxSampler {
288              std::set<EngineChannel*>::iterator end        = midiChannelMap[midi_chan_all].end();              std::set<EngineChannel*>::iterator end        = midiChannelMap[midi_chan_all].end();
289              for (; engineiter != end; engineiter++) {              for (; engineiter != end; engineiter++) {
290                  (*engineiter)->SetMidiProgram(Program);                  (*engineiter)->SetMidiProgram(Program);
291                  // is there a mapping for this MIDI bank&prog pair?                  if ((*engineiter)->UsesNoMidiInstrumentMap()) continue;
292                    // retrieve the MIDI instrument map this engine channel is assigned to
293                    int iMapID = ((*engineiter)->UsesDefaultMidiInstrumentMap())
294                        ? maps[0] /*default*/ : (*engineiter)->GetMidiInstrumentMap();
295                    // is there an entry for this MIDI bank&prog pair in that map?
296                  midi_prog_index_t midiIndex;                  midi_prog_index_t midiIndex;
297                  midiIndex.midi_bank_msb = (*engineiter)->GetMidiBankMsb();                  midiIndex.midi_bank_msb = (*engineiter)->GetMidiBankMsb();
298                  midiIndex.midi_bank_lsb = (*engineiter)->GetMidiBankLsb();                  midiIndex.midi_bank_lsb = (*engineiter)->GetMidiBankLsb();
299                  midiIndex.midi_prog     = (*engineiter)->GetMidiProgram();                  midiIndex.midi_prog     = (*engineiter)->GetMidiProgram();
300                  optional<MidiInstrumentMapper::entry_t> mapping =                  optional<MidiInstrumentMapper::entry_t> mapping =
301                      MidiInstrumentMapper::GetEntry(midiIndex);                      MidiInstrumentMapper::GetEntry(iMapID, midiIndex);
302                  if (mapping) { // if mapping exists ...                  if (mapping) { // if mapping exists ...
303                      InstrumentManager::instrument_id_t id;                      InstrumentManager::instrument_id_t id;
304                      id.FileName = mapping->InstrumentFile;                      id.FileName = mapping->InstrumentFile;

Legend:
Removed from v.947  
changed lines
  Added in v.973

  ViewVC Help
Powered by ViewVC