// Velocity randomizer
// Author: Peter Sovietov

desc:Velocity randomizer
slider1:0<0,127,1>range
@init
@block
range = slider1;
(midirecv(offs, msg1, msg23)) ? (
  while(
    ((
      ((msg1 & 240) == 144) && ((msg23 & 32512) != 0);
    )) ? (
      note = msg23 & 127;
      vel = (msg23 >> 8) & 127;
      vel = min(max((vel + rand(range)) - (range / 2), 1), 127);
      msg23 = note | (vel << 8);
    );
    midisend(offs, msg1, msg23);
    midirecv(offs, msg1, msg23);
  );
);
