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
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
https://lists.linuxaudio.org/listinfo/linux-audio-dev

Reply via email to