in my never-ending quest for the ultimate controller smoothing ReaJS script, here is a new attempt.
I built CC smoothing on a new approach: whenever a relevant CC command hits the script, it will be evaluated as follows:
- if the time elapsed since the last CC command received is outside the “fast window”, the script will create a smooth fade to the target value. This fade will last the preset “fade time” (in quarter notes)
- if a CC is within the “fast window” since the last received command, the script will create a fast ramp (a new CC value every millisecond) towards the target value
- if the difference between the received CC value and the previous one is smaller than the “instant window”, the script will not ramp at all but jump directly to the target value. This is only true for any CC received within the “fast fade window”.
I put this script on the MIDI route between the expression pedal and my organ - or between a fader and a rack volume. The “fast window” and the “instant window” make it very responsive to pedal or fader moves, but changes made via state change bindings when no pedal is used will be faded in smoothly.
One nice aspect: When you have a value pre-set at e.g. 64 during song initialization via a binding and then later touch your expression pedal (which is unfortunately still at 127 from the last song), the script will start with a slow fade (outside fast window) from 64 to 127, but on the next CC received from the pedal from your pedal move (typically you’ll generate a fast sequence of CCs with a pedal move), it will switch right into “fast fade” mode, so it will catch on very quickly when you need it to. But no ugly jumps…
Give it a try!
Play with the “instant window” for responsiveness and use the the “fast fade window” to adjust the time it takes the for the script to go back to “slow fade”
midi_CC_autosmoother.zip (1.8 KB)