FluidSynth version
2.2.x, probably older versions too.
Describe the bug
When using large audio buffers, the start time of many notes is quantized. This affects severely to the musical rhythm, and it can be perceived as degraded quality. This has been observed with several audio drivers, but PulseAudio is specially impacted because it often requires larger buffers.
Expected behavior
When using large buffers big latency is expected, but quantization should not happen.
Steps to reproduce
Start fluidsynth on a Linux terminal, using large buffers (>4K):
fluidsynth -p fluid -m alsa_seq -a pulseaudio -z 4800 ~/.local/share/soundfonts/GeneralUser.sf2
From another terminal instance, use aplaymidi to play MIDI files via the ALSA Sequencer:
aplaymidi -p fluid schubert_avemaria.mid TwistAndShout.mid
Additional context
This is somewhat related to the ticket #1 but instead of duration, the starting time is impacted when using large audio buffers.
Sometimes large buffers are wanted in despite of the latency, probably because latency doesn't matter on every situation. Or perhaps can't be avoided, like when using PulseAudio in many scenarios. And in this case, the PulseAudio driver may be easily worked around to avoid this issue. See: pedrolcl/fluidsynth@adffd1c
The number 128 is arbitrary. The minimum buffer for the synthesizer is 64 frames, and I am not advocating for using it as a fixed constant.
The PulseAudio driver is a particular case where the problem can be easily solved because PulseAudio supports it out of the box, but other drivers may be harder to fix (and I've not tried any other).
Here are two MIDI files where the rhythm is negatively impacted by this issue:
TwistAndShout.mid from this page.
https://github.com/pedrolcl/dmidiplayer/raw/master/examples/schubert_avemaria.mid
FluidSynth version
2.2.x, probably older versions too.
Describe the bug
When using large audio buffers, the start time of many notes is quantized. This affects severely to the musical rhythm, and it can be perceived as degraded quality. This has been observed with several audio drivers, but PulseAudio is specially impacted because it often requires larger buffers.
Expected behavior
When using large buffers big latency is expected, but quantization should not happen.
Steps to reproduce
Start fluidsynth on a Linux terminal, using large buffers (>4K):
From another terminal instance, use aplaymidi to play MIDI files via the ALSA Sequencer:
Additional context
This is somewhat related to the ticket #1 but instead of duration, the starting time is impacted when using large audio buffers.
Sometimes large buffers are wanted in despite of the latency, probably because latency doesn't matter on every situation. Or perhaps can't be avoided, like when using PulseAudio in many scenarios. And in this case, the PulseAudio driver may be easily worked around to avoid this issue. See: pedrolcl/fluidsynth@adffd1c
The number 128 is arbitrary. The minimum buffer for the synthesizer is 64 frames, and I am not advocating for using it as a fixed constant.
The PulseAudio driver is a particular case where the problem can be easily solved because PulseAudio supports it out of the box, but other drivers may be harder to fix (and I've not tried any other).
Here are two MIDI files where the rhythm is negatively impacted by this issue:
TwistAndShout.mid from this page.
https://github.com/pedrolcl/dmidiplayer/raw/master/examples/schubert_avemaria.mid