(controllably) random arpeggiator
chord dispersion is a (controllably) random arpeggiator. It's a MIDI effect, with no audio processing.
A clock feeds three random generators: one for pitch, one for velocity, one for note off. A pitch is selected from the input pitch classes, in the range specified, by the pitch generator. The probability of picking one pitch among the others is controlled by input velocities. This selection may trigger a note or not. The probability of triggering a note is controlled by two parameters: on > on if there's a note already sounding (the last event out was note on), off > on if there's not (the last event out was note off or none). If a note is triggered, its velocity is set by the velocity generator, in the range specified. If no note is triggered and there's a note already sounding, the probability of stopping it (sending a note off event) is controlled by on > off.
Two parameters set the smoothness of pitch and velocity contours. 0% lets the random values pass through. Higher settings apply a lowpass filter: 100% sets the cutoff 6 octaves below clock freq; 50%, 3 octaves below.
There's a "reference frequency". When the ref button is active for any of the smoothness or density parameters, its value is scaled so that absolute smoothness / density is as close as possible to what would be got with the original value and clock freq at ref. For example, if clock freq is 10, ref is 1 and density parameters are 50%, with ref active the effective values will be 5%, and the average number of notes per second will be as if clock freq was 1. This allows to change the granularity without scaling the dispersion.
The clock can be synchronized by sending a change to CC22. Pitch and velocity ranges can be overriden by CC28-29 and CC30-31 respectively.
v1.02: the effective clock freq is shown now for tempo sync mode.