i'm currently designing my synth's GUI, and have some UI design questions.
my synth will be (as noted in previous emails) capable of doing
FM-synthesis with an arbitrary high number of oscillators (limited by
your CPU power); the FM-effect of each osc on each osc can be controlled
individually. each oscillator has its own amplification (may be zero)
for outputting, each oscillator has one envelope, and a waveform.
furthermore, you can apply a tremolo and a vibrato LFO, and a pitch
my envelope are classical ADSR-envelopes, with a "hold" function (that
is, you can select if it stays at decay while holding the key, or if it
enters release regardless of holding the key or not). they support KSR
and KSL (the envelope decays faster / is quieter as the pitch increases)
available waveforms are sine, abs-sine, some more, and then triangle and
PWM. these two are special, because they allow you to (almost)
arbitrarily select the "Ratio": this is the rising:falling-edge ratio
for triangles and the high:low ratio for PWM.
It also supports custom waves.
each oscillator can be set on an individual pitch (relative to the
note's pitch): i'm specifying this pitch in half-tone steps (which are
doubles, not ints)
now my questions:
1. is it okay for the GUI to occupy almost 1024x768 pixels (or even
more if you feel like it)? i think, setting up your voice is a
main task, not some "background task" for which you have the
window flying around when you need it; thus i think a large
resolution (which is almost fullscreen here) is okay.
2. are there any conventions for knobs and sliders? i'll probably
handle it as follows:
* pitch and waveform-related things (detune and the mentioned
PWM-ratio for example) are represented by knobs (QDial)
* signal strength relates things (output volume, FM strength,
envelope influence etc) are represented by sliders
* there is always a pair of knob and spinbox or slider and spinbox
* the stuff is arranged horizontally ("from-left-to-right"). i
considered making them vertical, but this wastes too much
space, and seems somewhat unintuitive/strange to me. does it
to you, too?
* envelopes are edited in envelope editors similar to the
deicsonze synth. these are always visible (although taking
pretty much space; but i think its better to use that space
than having to show/hide them all the time)
3. are there any conventions for such GUIs? for example, do
FM-oscillators usually contain a list of oscillators _which get
modulated by that one_, or contain a list of oscillators _which
modulate that one_?
4. currently, my UI has two columns: one containing "waveform",
"pitch", "output"; "fm", "tremolo/vibrato", and the other
containing the envelope and the freq-envelope (taking up much
space). do you think this is okay?
* advantage: the envelopes don't "litter" the other GUI and
the envelopes don't get too big (they would if they'd go
over the whole window width)
* disadvantage: the envelopes are away from their related
settings ("envelope" is related to "output volume and fm
strength", "freq-envelope" is related to "pitch")
5. everything is in a tab widget, containing general settings
(oscillator-sync, lowpass-filter, number of oscs) and one page per
do you think this design is okay?
or do you have improvements?
i'll soon upload a proof-of-concept of that GUI (without any
functionality, of course) if you want