/*
dB to Velocity calculator.

With non-normalized drum samples
you can set up the right velocities
for a multi-layered drum patch.

How to:

Measure the RMS values of your media items.
You can do this in Reaper with the Xenakios Label Processor,
using /r or/R.
(...you can also sort your items by their RMS values with an action.)

The loudest item is slider1 (for velocity 127).
So adjust slider1 to the RMS value of the loudest item.

Then adjust the other sliders.

The velocity sliders will readout the velocities.
You can use these values to create a sfz file.


More infos here: http://www.drealm.info/sfz/VelLeveler/
*/

slider1:0<-96,0,0.1>(Item dB value for Velocity at 127) 1 (dB)
slider2:-96<-96,0,0.1>2 (dB)
slider3:-96<-96,0,0.1>3 (dB)
slider4:-96<-96,0,0.1>4 (dB)
slider5:-96<-96,0,0.1>5 (dB)
slider6:-96<-96,0,0.1>6 (dB)
slider7:-96<-96,0,0.1>7 (dB)
slider8:-96<-96,0,0.1>8 (dB)
slider9:-96<-96,0,0.1>9 (dB)
slider10:-96<-96,0,0.1>10 (dB)
slider11:-96<-96,0,0.1>11 (dB)
slider12:-96<-96,0,0.1>12 (dB)
slider13:-96<-96,0,0.1>13 (dB)
slider14:-96<-96,0,0.1>14 (dB)
slider15:-96<-96,0,0.1>15 (dB)
slider16:-96<-96,0,0.1>16 (dB)
slider17:-96<-96,0,0.1>17 (dB)
slider18:-96<-96,0,0.1>18 (dB)
slider19:-96<-96,0,0.1>19 (dB)
slider20:-96<-96,0,0.1>20 (dB)

slider22:0<0,127,0.1>2 (Velocity)
slider23:0<0,127,0.1>3 (Velocity)
slider24:0<0,127,0.1>4 (Velocity)
slider25:0<0,127,0.1>5 (Velocity)
slider26:0<0,127,0.1>6 (Velocity)
slider27:0<0,127,0.1>7 (Velocity)
slider28:0<0,127,0.1>8 (Velocity)
slider29:0<0,127,0.1>9 (Velocity)
slider30:0<0,127,0.1>10 (Velocity)
slider31:0<0,127,0.1>11 (Velocity)
slider32:0<0,127,0.1>12 (Velocity)
slider33:0<0,127,0.1>13 (Velocity)
slider34:0<0,127,0.1>14 (Velocity)
slider35:0<0,127,0.1>15 (Velocity)
slider36:0<0,127,0.1>16 (Velocity)
slider37:0<0,127,0.1>17 (Velocity)
slider38:0<0,127,0.1>18 (Velocity)
slider39:0<0,127,0.1>19 (Velocity)
slider40:0<0,127,0.1>20 (Velocity)

in_pin:none
out_pin:none

@block

diff[0]=slider1-slider2;
diff[0] < 0 ? diff[0]=diff[0]*-1;
diff[1]=slider1-slider3;
diff[1] < 0 ? diff[1]=diff[1]*-1;
diff[2]=slider1-slider4;
diff[2] < 0 ? diff[2]=diff[2]*-1;
diff[3]=slider1-slider5;
diff[3] < 0 ? diff[3]=diff[3]*-1;
diff[4]=slider1-slider6;
diff[4] < 0 ? diff[4]=diff[4]*-1;
diff[5]=slider1-slider7;
diff[5] < 0 ? diff[5]=diff[5]*-1;
diff[6]=slider1-slider8;
diff[6] < 0 ? diff[6]=diff[6]*-1;
diff[7]=slider1-slider9;
diff[7] < 0 ? diff[7]=diff[7]*-1;
diff[8]=slider1-slider10;
diff[8] < 0 ? diff[8]=diff[8]*-1;
diff[9]=slider1-slider11;
diff[9] < 0 ? diff[9]=diff[9]*-1;
diff[10]=slider1-slider12;
diff[10] < 0 ? diff[10]=diff[10]*-1;
diff[11]=slider1-slider13;
diff[11] < 0 ? diff[11]=diff[11]*-1;
diff[12]=slider1-slider14;
diff[12] < 0 ? diff[12]=diff[12]*-1;
diff[13]=slider1-slider15;
diff[13] < 0 ? diff[13]=diff[13]*-1;
diff[14]=slider1-slider16;
diff[14] < 0 ? diff[14]=diff[14]*-1;
diff[15]=slider1-slider17;
diff[15] < 0 ? diff[15]=diff[15]*-1;
diff[16]=slider1-slider18;
diff[16] < 0 ? diff[16]=diff[16]*-1;
diff[17]=slider1-slider19;
diff[17] < 0 ? diff[17]=diff[17]*-1;
diff[18]=slider1-slider20;
diff[18] < 0 ? diff[18]=diff[18]*-1;

vel[0]=sqrt(127^2/10^(diff[0]/20));
slider22=floor(vel[0]*10)/10;
sliderchange(slider22);

vel[1]=sqrt(127^2/10^(diff[1]/20));
slider23=floor(vel[1]*10)/10;
sliderchange(slider23);

vel[2]=sqrt(127^2/10^(diff[2]/20));
slider24=floor(vel[2]*10)/10;
sliderchange(slider24);

vel[3]=sqrt(127^2/10^(diff[3]/20));
slider25=floor(vel[3]*10)/10;
sliderchange(slider25);

vel[4]=sqrt(127^2/10^(diff[4]/20));
slider26=floor(vel[4]*10)/10;
sliderchange(slider26);

vel[5]=sqrt(127^2/10^(diff[5]/20));
slider27=floor(vel[5]*10)/10;
sliderchange(slider27);

vel[6]=sqrt(127^2/10^(diff[6]/20));
slider28=floor(vel[6]*10)/10;
sliderchange(slider28);

vel[7]=sqrt(127^2/10^(diff[7]/20));
slider29=floor(vel[7]*10)/10;
sliderchange(slider29);

vel[8]=sqrt(127^2/10^(diff[8]/20));
slider30=floor(vel[8]*10)/10;
sliderchange(slider30);

vel[9]=sqrt(127^2/10^(diff[9]/20));
slider31=floor(vel[9]*10)/10;
sliderchange(slider31);

vel[10]=sqrt(127^2/10^(diff[10]/20));
slider32=floor(vel[10]*10)/10;
sliderchange(slider32);

vel[11]=sqrt(127^2/10^(diff[11]/20));
slider33=floor(vel[11]*10)/10;
sliderchange(slider33);

vel[12]=sqrt(127^2/10^(diff[12]/20));
slider34=floor(vel[12]*10)/10;
sliderchange(slider34);

vel[13]=sqrt(127^2/10^(diff[13]/20));
slider35=floor(vel[13]*10)/10;
sliderchange(slider35);

vel[14]=sqrt(127^2/10^(diff[14]/20));
slider36=floor(vel[14]*10)/10;
sliderchange(slider36);

vel[15]=sqrt(127^2/10^(diff[15]/20));
slider37=floor(vel[15]*10)/10;
sliderchange(slider37);

vel[16]=sqrt(127^2/10^(diff[16]/20));
slider38=floor(vel[16]*10)/10;
sliderchange(slider38);

vel[17]=sqrt(127^2/10^(diff[17]/20));
slider39=floor(vel[17]*10)/10;
sliderchange(slider39);

vel[18]=sqrt(127^2/10^(diff[18]/20));
slider40=floor(vel[18]*10)/10;
sliderchange(slider40);
