Quick comment on why it’s not straightforward to add ADSR controls… Our sound engine, which happens to be called Toad, has a modular architecture. This means we can add any number of envelopes and route them to any parameter in the app. For some sounds, it would be straightforward to hook up dials to control the parameters in the “amp envelope”, i.e. an envelope that controls the output signal from the oscillators. However, in most cases, there’s a more “advanced” setup, where for instance, we use envelope to shape the filter section, which is also semi-modular, or we use different envelopes for different oscillators.
Our solution has therefore been to add a shape macro, since then we can setup a macro controller and specify exactly how it should affect the different envelopes. The problem with this is that we only have one dial, and sometimes it affects the (perceived) attack of the sound, sometimes how the sound is sustained over time, and sometimes the release.
So the best solution would not be adding ADSR controls for the “amp envelope” but potentially we could split the shape macro up into several dials and tune each one to affect the (perceived) attack, sustain and release. I think this is what would solve your “problem”.