[LAD] Click-free fade-in algorithm for synths?

Johannes Lorenz j.spam at lorenz-ho.me
Tue Sep 24 20:38:19 CEST 2019


A note-on event can lead to clicks in synths, which is often fixed by a 
fade-in algorithm.

If the attack rate for a synth's signal is 0, the synth shall not click, 
and still fade in as fast as possible. What is the best algorithm for 
fading in a signal, that scales also with small buffersizes, like 32 
samples per buffer (at 44100 samples/s)?

For example, in zynaddsubfx, we count the ascending zero crossings and 
calculate the fade-in length upon it [1]. Then, an S-curve of that 
length is multiplied with the signal. Counting zero crossings prevents 
clicking on lower notes, and it makes higher notes more punchy. That 
algorithm works very well for a buffersize of 256 samples (at 44100 
samples/s), but it fails at 32 samples (since the zero crossings of 32 
samples are often not representive).

Any papers, or experience with other synths? We currently need a good 
solution for (at least) zynaddsubfx and the triple oscillator in LMMS.


Links:
[1] 
https://github.com/zynaddsubfx/zynaddsubfx/blob/4e36e765f677dbc689461889e502d015c22966a5/src/Synth/ADnote.cpp#L1202-L1222


More information about the Linux-audio-dev mailing list