home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / temacd / reaper / reaper147-install.exe / Effects / MIDI / arpeggiator_simple next >
Text File  |  2006-08-12  |  907b  |  57 lines

  1. desc:simple MIDI arpeggiator
  2. slider1:1<0.1,4>size (beats)
  3.  
  4. @init 
  5. status=0;
  6. status2=128;
  7. memset(status,-1,128);
  8. memset(status2,0,128);
  9.  
  10. @slider 
  11. div=slider1;
  12.  
  13. @block
  14.  
  15. while (
  16. midirecv(ts,msg1,msg23) ? 
  17. (
  18.   m=msg1&240;
  19.   note=msg23&127;
  20.   (m == 9*16 && msg23>=256) ? (
  21.     status[note]=0;
  22.     status2[note]=1;
  23.     midisend(ts,9*16,note+127*256); // send note on
  24.   ) : (m == 8*16 || m == 9*16) ? (
  25.     status[note]=-1;
  26.     status2[note] ? (
  27.       midisend(ts,8*16,note); // send note off
  28.       status2[note]=0;
  29.     );
  30.   );
  31.   bla=1;
  32. );
  33. );
  34.  
  35. inc = samplesblock/srate*(tempo/60)*2/div;
  36. x=0;
  37. loop(128,
  38.   status[x]>=0.0 ? 
  39.   (
  40.     status[x] += inc;
  41.     status[x] >= 1.0 ? 
  42.     (
  43.       status[x] -= 1.0;
  44.       status2[x] ? 
  45.         (status2[x]=0; midisend(0,8*16,x)) : 
  46.         (status2[x]=1; midisend(0,9*16,x + 127*256)) 
  47.     );
  48.   );
  49.   x+=1;
  50. );
  51.  
  52.  
  53. @sample
  54.  
  55.  
  56.  
  57.