home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 February / PCWorld_2008-02_cd.bin / audio-video / reaper / reaper2028-install.exe / Effects / MIDI / midi_chorderizer < prev    next >
Text File  |  2007-12-03  |  2KB  |  92 lines

  1. desc:MIDI chorderizer
  2. slider1:5<1,24,1>voice 1 offset (st)
  3. slider2:0<1,24,1>voice 2 offset (st)
  4. slider3:0<1,24,1>voice 3 offset (st)
  5. slider4:0<1,24,1>voice 4 offset (st)
  6. slider5:1<0,1>velocity scale @ 1
  7. slider6:1<0,1>velocity scale @ 4
  8. slider7:0<0,127,1>note range low (passthru other notes)
  9. slider8:127<0,127,1>note range high (passthru other notes)
  10.  
  11. @init 
  12.  
  13.  
  14. @slider
  15. slider1|=0;
  16. slider2|=0;
  17. slider3|=0;
  18. slider4|=0;
  19.  
  20. @block
  21.  
  22. while (
  23. midirecv(ts,msg1,msg23) ? 
  24. (
  25.   m=msg1&240;
  26.   note=msg23&127;
  27.  
  28.   (m == 8*16 || m==9*16) && note >= slider7 && note <= slider8 ? 
  29.   (
  30.  
  31.     slider1 ? (
  32.       note2 = note+slider1;
  33.     ) : note2=-1;
  34.  
  35.     slider2 ?  (
  36.       note3 = note+slider2;
  37.     ) : note3=-1;
  38.  
  39.     slider3 ? (
  40.       note4 = note+slider3;
  41.     ) : note4=-1;
  42.  
  43.     slider4 ? (
  44.       note5 = note+slider4;
  45.     ) : note5=-1;
  46.  
  47.     (m == 9*16 && msg23>=256) ? 
  48.     (
  49.       vel=(msg23/256)|0;
  50.       vel<0?vel=0:vel>=127?vel=127:vel|=0;
  51.       ov=vel;
  52.       vel *= 256.0;
  53.      
  54.    
  55.       note >= 0 && note < 128 ? midisend(ts,9*16,note+vel); // send note on
  56.       note2 >= 0 && note2 < 128 ? (
  57.         sc=slider5;  vel2=ov*sc; vel2<0?vel2=0:vel2>=127?vel2=127:vel2|=0; vel2 *= 256.0;
  58.         midisend(ts,9*16,note2+vel2); // send note on
  59.       );
  60.       note3 >= 0 && note3 < 128 ? (
  61.         sc=slider5*0.75 * slider6*0.25;  vel2=ov*sc; vel2<0?vel2=0:vel2>=127?vel2=127:vel2|=0; vel2 *= 256.0;
  62.         midisend(ts,9*16,note3+vel2); // send note on
  63.       );
  64.       note4 >= 0 && note4 < 128 ? (
  65.         sc=slider5*0.25 * slider6*0.75;  vel2=ov*sc; vel2<0?vel2=0:vel2>=127?vel2=127:vel2|=0; vel2 *= 256.0;
  66.         midisend(ts,9*16,note4+vel2); // send note on
  67.       );
  68.       note5 >= 0 && note5 < 128 ? (
  69.         sc=slider6;  vel2=ov*sc; vel2<0?vel2=0:vel2>=127?vel2=127:vel2|=0; vel2 *= 256.0;
  70.         midisend(ts,9*16,note5+vel2); // send note on
  71.       );
  72.     ) : (m == 8*16 || m == 9*16) ? (
  73.       note >= 0 && note < 128 ? midisend(ts,8*16,note); // send note off
  74.       note2 >= 0 && note2 < 128 ? midisend(ts,8*16,note2); // send note off
  75.       note3 >= 0 && note3 < 128 ? midisend(ts,8*16,note3); // send note off
  76.       note4 >= 0 && note4 < 128 ? midisend(ts,8*16,note4); // send note off
  77.       note5 >= 0 && note5 < 128 ? midisend(ts,8*16,note5); // send note off    
  78.     );
  79.   ) : 
  80.   (
  81.     midisend(ts,msg1,msg23);
  82.   );
  83.   bla=1;
  84. );
  85. );
  86.  
  87.  
  88. @sample
  89.  
  90.  
  91.  
  92.