/[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 1886 by persson, Sat Sep 6 16:44:42 2008 UTC revision 1887 by persson, Sat Apr 18 08:17:16 2009 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *
6   *   Copyright (C) 2005 - 2008 Christian Schoenebeck                       *   *   Copyright (C) 2005 - 2009 Christian Schoenebeck                       *
7   *                                                                         *   *                                                                         *
8   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
9   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 397  namespace LinuxSampler { Line 397  namespace LinuxSampler {
397          MidiChannelMapReader.Unlock();          MidiChannelMapReader.Unlock();
398      }      }
399    
400        void MidiInputPort::DispatchRaw(uint8_t* pData) {
401            uint8_t channel = pData[0] & 0x0f;
402            switch (pData[0] & 0xf0) {
403            case 0x80:
404                DispatchNoteOff(pData[1], pData[2], channel);
405                break;
406            case 0x90:
407                if (pData[2]) {
408                    DispatchNoteOn(pData[1], pData[2], channel);
409                } else {
410                    DispatchNoteOff(pData[1], pData[2], channel);
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);
420                break;
421            case 0xc0:
422                DispatchProgramChange(pData[1], channel);
423                break;
424            case 0xd0:
425                DispatchControlChange(128, pData[1], channel);
426                break;
427            case 0xe0:
428                DispatchPitchbend((pData[1] | pData[2] << 7) - 8192, channel);
429                break;
430            }
431        }
432    
433      void MidiInputPort::DispatchRaw(uint8_t* pData, int32_t FragmentPos) {      void MidiInputPort::DispatchRaw(uint8_t* pData, int32_t FragmentPos) {
434          uint8_t channel = pData[0] & 0x0f;          uint8_t channel = pData[0] & 0x0f;
435          switch (pData[0] & 0xf0) {          switch (pData[0] & 0xf0) {
# Line 425  namespace LinuxSampler { Line 458  namespace LinuxSampler {
458              DispatchControlChange(128, pData[1], channel, FragmentPos);              DispatchControlChange(128, pData[1], channel, FragmentPos);
459              break;              break;
460          case 0xe0:          case 0xe0:
461              DispatchPitchbend(pData[1], channel, FragmentPos);              DispatchPitchbend((pData[1] | pData[2] << 7) - 8192, channel, FragmentPos);
462              break;              break;
463          }          }
464      }      }

Legend:
Removed from v.1886  
changed lines
  Added in v.1887

  ViewVC Help
Powered by ViewVC