Advertisement
Guest User

Untitled

a guest
Nov 10th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 KB | None | 0 0
  1. /* inputParameters */
  2. uint8 microtonal;
  3.  
  4. /* midi */
  5. uint8 eventChannel,sourceChannel,destChannel,note,rootVal;
  6. int pitchWheelValue,noteModInt;
  7. float noteMod,bendRangeDevide;
  8. MidiEvent noteEvent,pichWheelEvent;
  9. bool isPlaying=false;
  10.  
  11. void processBlock(BlockData& data){
  12.     for(uint m=0;m<data.inputMidiEvents.length;m++){
  13.         eventChannel=sourceChannel=0;
  14.         if(eventChannel==sourceChannel or sourceChannel==0){
  15.             noteEvent=data.inputMidiEvents[m];
  16.             if(MidiEventUtils::getType(noteEvent)==kMidiNoteOn){
  17.                 note=MidiEventUtils::getNote(noteEvent);
  18.                 if(isPlaying){
  19.                     MidiEventUtils::setType(noteEvent,kMidiNoteOff);
  20.                     MidiEventUtils::setNote(noteEvent,noteModInt);
  21.                     data.outputMidiEvents.push(noteEvent);
  22.                     MidiEventUtils::setType(noteEvent,kMidiNoteOn);
  23.                 }
  24.                 isPlaying=true;
  25.                 if(note>rootVal)
  26.                     noteMod=rootVal+(12.0/microtonal)*(note-rootVal);
  27.                 else
  28.                     noteMod=rootVal-(12.0/microtonal)*(rootVal-note);
  29.                 pitchWheelValue=rint(fraction(noteMod)*8192*bendRangeDevide);
  30.                 noteModInt=int(noteMod);
  31.                 MidiEventUtils::setNote(noteEvent,noteModInt);
  32.                 MidiEventUtils::setChannel(noteEvent,destChannel);
  33.                 data.outputMidiEvents.push(noteEvent);
  34.             } else if (MidiEventUtils::getType(noteEvent)==kMidiNoteOff){
  35.                 if(note==MidiEventUtils::getNote(noteEvent)){
  36.                     isPlaying=false;
  37.                     MidiEventUtils::setType(noteEvent,kMidiNoteOff);
  38.                     MidiEventUtils::setNote(noteEvent,noteModInt);
  39.                     data.outputMidiEvents.push(noteEvent);
  40.                 }
  41.             }
  42.         MidiEventUtils::setPitchWheelValue(pichWheelEvent,pitchWheelValue);
  43.         data.outputMidiEvents.push(pichWheelEvent);
  44.         }
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement