Technical notes
Input filtering
applyMovingAverage() and applyLowPassFilter() condition input data using different forms of smoothing.
Smoothing and response
Smoothing and response must be considered together. A value that barely moves may look stable but feel slow, while an unfiltered input may send unwanted changes.
MIDI event generation
Conditioned input values are converted to MIDI events, with input processing kept separate from event generation.
