/[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 1751 by schoenebeck, Mon Jul 28 07:36:35 2008 UTC revision 1765 by persson, Sat Sep 6 16:44:42 2008 UTC
# Line 397  namespace LinuxSampler { Line 397  namespace LinuxSampler {
397          MidiChannelMapReader.Unlock();          MidiChannelMapReader.Unlock();
398      }      }
399    
400        void MidiInputPort::DispatchRaw(uint8_t* pData, int32_t FragmentPos) {
401            uint8_t channel = pData[0] & 0x0f;
402            switch (pData[0] & 0xf0) {
403            case 0x80:
404                DispatchNoteOff(pData[1], pData[2], channel, FragmentPos);
405                break;
406            case 0x90:
407                if (pData[2]) {
408                    DispatchNoteOn(pData[1], pData[2], channel, FragmentPos);
409                } else {
410                    DispatchNoteOff(pData[1], pData[2], channel, FragmentPos);
411                }
412                break;
413            case 0xb0:
414                if (pData[1] == 0) {
415                    DispatchBankSelectMsb(pData[2], channel);
416                } else if (pData[1] == 32) {
417                    DispatchBankSelectLsb(pData[2], channel);
418                }
419                DispatchControlChange(pData[1], pData[2], channel, FragmentPos);
420                break;
421            case 0xc0:
422                DispatchProgramChange(pData[1], channel);
423                break;
424            case 0xd0:
425                DispatchControlChange(128, pData[1], channel, FragmentPos);
426                break;
427            case 0xe0:
428                DispatchPitchbend(pData[1], channel, FragmentPos);
429                break;
430            }
431        }
432    
433      void MidiInputPort::Connect(EngineChannel* pEngineChannel, midi_chan_t MidiChannel) {      void MidiInputPort::Connect(EngineChannel* pEngineChannel, midi_chan_t MidiChannel) {
434          if (MidiChannel < 0 || MidiChannel > 16)          if (MidiChannel < 0 || MidiChannel > 16)
435              throw MidiInputException("MIDI channel index out of bounds");              throw MidiInputException("MIDI channel index out of bounds");

Legend:
Removed from v.1751  
changed lines
  Added in v.1765

  ViewVC Help
Powered by ViewVC