home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2007 July & August
/
PCWorld_2007-07-08_cd.bin
/
audio-video
/
reaper
/
reaper1861-install.exe
/
Effects
/
MIDI
/
midi_note_repeater
< prev
next >
Wrap
Text File
|
2007-02-12
|
1KB
|
60 lines
desc:simple MIDI note repeater
slider1:1<0.1,4>size (beats)
@init
status=0;
status2=128;
memset(status,-1,128);
memset(status2,0,128);
@slider
div=slider1;
@block
while (
midirecv(ts,msg1,msg23) ?
(
m=msg1&240;
note=msg23&127;
(m == 9*16 && msg23>=256) ? (
status[note]=0;
vel=(msg23/256);
vel<1?vel=1:vel>=127?vel=127:vel|=0;
status2[note]=vel;
midisend(ts,9*16,note+vel*256); // send note on
) : (m == 8*16 || m == 9*16) ? (
status[note]=-1;
status2[note]>0.0 ? (
midisend(ts,8*16,note); // send note off
status2[note]=0;
);
) : (
midisend(ts,msg1,msg23);
);
bla=1;
);
);
inc = samplesblock/srate*(tempo/60)*2/div;
x=0;
loop(128,
status[x]>=0.0 ?
(
status[x] += inc;
status[x] >= 1.0 ?
(
status[x] -= 1.0;
status2[x]>0.0 ? midisend(0,8*16,x) : midisend(0,9*16,x - status2[x]*256);
status2[x]*=-1;
);
);
x+=1;
);
@sample