My question to the community, how difficult would it be to add controls for Attack, Decay, Sustain and Release for using synths like Linux Sampler? Is this even possible?
I’d certainly be willing to help with the coding and testing.
Zynthian uses (mostly) unmodified versions of upstream audio and MIDI engines, e.g. Linux Sampler is maintained by someone else and we use their version. There are a few modules that we modify to fix bugs or conflicting behaviour but this is avoided where possible and fed back upstream to allow the source module to be improved.
If a module would benefit from an improvement I would suggest making a feature request to the upstream project. (It would be excessive work to put the feature request through a downstream project like Zynthian who would need to raise and chase the upstream request.)
Having explained all that, looking at the specific engine you mention, Linux Sampler’s website feature list does seem to include envelopes for amplitude, filter and oscillator so a feature request to implement this in Zynthian seems a reasonable thing to submit.
I would like to remember that we already implemented a similar feature for SF2 soundfonts in fluidsynth. For this to work, the soundfont must support this feature.
You can test it on fluidsynth with the “ModSynth R1” soundfont.
It looks like the features I was looking for do exist in this patch.
I was specifically looking for things like Decay and Release, and found them under the “Extended” parameters. I looked in a few other Fluidsynth patches, and noticed the same extended controls were not present. Is that a limitation of Fluidsynth? That seems to be the case with most of the LV2 plugins. Even so, most of them sound really good.
I also did some testing with Helm, and found that it did have good ADSR control already implemented. I’m going to continue with some experiments in Helm, and eventually build a few patches.
Fluidsynth is an engine that plays audio from soundfonts. A soundfont is a set of audio samples and configuration data that informs of its playback methods. If a soundfont has been configured to support controls such as ADSR, filter cutoff, etc. then these parameters can be adjusted. Some soundfonts are simple samples that have none of these parameters configured hence will not be presented in Zynthian.
Zynthian supports many different synth engines. Each has its own set of parameters, e.g. Helm is a complex synthesiser with lots of controls whereas DX10 is a very simple synth with just 16 parameters. Zynthian does not add extra controls beyond what is provided by the upstream synth engine.