I'm building my first electronic instrument.
With a piano keyboard (made of plywood), 61 keys, 12 tone polyphony (even number bigger than the number of fingers).
The controlling electronic is done, now will be time for the user interface. The device will allow for some parametrisation. It will be possible to define the tuning frequency. It will be possible to define the waveform (256 8-bit samples) It will be possible to define the envelope ADSR parameters.
In the user interface I have to make a possibility to define the ADSR parameters.
I have now a question because I don't have such experience with sound synthesis.
How are the ADR (S is simple) parameters well represented in user interfaces? and in what units?
Do we describe them in units of speed (minimal value is slow rise/fall, maximal value is fast rise/fall) or in units of time (minimal value is fast rise/fall, maximal value is slow rise/fall)?
What actual units are used to measure/define the parameters? just (milli-)seconds? Or some special units? Or relative (to what?)?
What are good limits, good choices for minimal and maximal values? What scales are used for the selection? linear? logarithmic? exponential? something else?
Internally, the device is keeping the parameters as 32-bit numbers which represent a value added to / subtracted from an accumulator in each iteration which is exactly what the generator needs but not convenient for a user.
And the 32-bit value combined with a 44.44...kHz sampling frequency allows for rise times ranging from instant to as long as 26 hours which is much more than needed.
I have noticed that on some devices/softwares the selecting rotary dials are not labelled with actual values which is not helpful.
I'm asking for some information in this topic because I would like to make a parameter selection which works well and feels good. Of course I can later adjust based on actual usage of the device but it's nice to have a starting point.
I'm planning to reuse a UI board from a washing machine, with a 512x38 pixel screen, 8 buttons, and a rotary selector. I'd imagine using buttons to select which parameter I'm altering, to save/load presets, and using the rotary selector to adjust the actual value of the parameter. On the (long) screen I'd provide a preview of the envelope shape.