desc:Blackout Crash MIDI instrument
slider1:0.65<0,1,0.01>Output
slider2:0.12<0.01,2,0.01>Release seconds
@init
h=file_open("/var/lib/craig-v6/workspace/data/projects/blackout-crown/samples/Crash.wav");file_riff(h,ch,rate);len=file_mem(h,0,1000000);file_close(h);
base=49; voices=24; state=1100000;
@block
while(midirecv(offset,msg,nv))(
 status=msg&240; key=nv&127; vel=(nv>>8)&127;
 status==144 && vel>0 ? (v=next;next=(next+1)%voices; a=state+v*6;a[0]=0;a[1]=2^((key-base)/12)*44100/srate;a[2]=vel/127;a[3]=key;a[4]=1;a[5]=1;);
 (status==128 || (status==144 && vel==0)) ? (v=0;loop(voices,a=state+v*6;a[3]==key?a[4]=0;v+=1;));
);
@sample
out=0;v=0;loop(voices,a=state+v*6;a[5]>0.0001 && a[0]<len-1 ? (idx=floor(a[0]);frac=a[0]-idx;out+=(idx[0]*(1-frac)+(idx+1)[0]*frac)*a[2]*a[5];a[0]+=a[1];a[4]==0?a[5]*=exp(-7/(slider2*srate)););v+=1;);spl0=spl1=out*slider1;
