[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [fluid-dev] synth.audio-groups and LADSPA effects
From: |
Tom M. |
Subject: |
Re: [fluid-dev] synth.audio-groups and LADSPA effects |
Date: |
Sat, 08 Aug 2020 12:01:31 +0200 |
Sorry for the delay.
Marcus said:
> FluidSynth does not seem to mix the internal group channels back into
> the main output if you are using audio-groups=2 and audio-channels=1.
> Not sure if this is a feature or a bug... Tom, do you know anything
> about the design decisions here?
I'd say it's a feature of the respective audio rendering interface. The ALSA
driver uses fluid_synth_write_float() or write_s16(). These functions are
"single-stereo-channel-functions" and therefore only read from rvoice_mixer
stereo buffer 1 (for performance reasons).
This "issue" has been addressed by the fluid_synth_process() function, which
always mixes all internal stereo buffers, into the user provided ones. The e.g.
JACK driver uses this interface if you specify audio-channels=2.
So, it's more like a limitation of the audio driver in use.
JJC said:
> 2)synth.audio-groups is only used by LADSP.
Sry, that's not quite correct. audio-groups is always used for buffer mapping
of every voice:
https://github.com/FluidSynth/fluidsynth/blob/31c4e12ac9f2f4eadfb6f034845e51bff7faf223/src/synth/fluid_voice.c#L360
..so if we replace "nbr_outputs" by "nbr_groups" in your explanations, you are
correct.
JJC said:
> However, if "synth.effects-groups" is set to 2, two distinct internal
> instances pair (reverb + chorus) should be available on each distinct audio
> output (0 et 1).
> @Tom, please could you confirm the "synth.effects-groups" setting behaviour
> as described by the Wiki ?
Your explanation is correct. And yes, as Marcus said, behaviour depends on the
audio driver.
Marcus said:
> for all other drivers (including alsa), the reverb and chorus signals are
> always rendered to the first (and only) stereo output, regardless of the
> setting of synth.effects-channels.
Correct, because of rvoice_mixer::mix_fx_to_out
https://github.com/FluidSynth/fluidsynth/blob/31c4e12ac9f2f4eadfb6f034845e51bff7faf223/src/rvoice/fluid_rvoice_mixer.c#L174-L175
Tom