Default engine parameters

When an engine is instantiated it has default values for each of its parameters, e.g. Reverb=64. Some of these values may be irrelevant (inherited from the base class) or inappropriate, e.g. Chorus=2. This thread requests your opinion on what the default values should be. Let’s start with the base class that is inherited by all engines.

Controller Default MIDI controller Default My opinion
volume 7 96 About 100 sound right
modulation 1 0 OK
pan 10 64 OK
expression 11 127 OK
sustain 64 off OK
resonance 71 64 Remove from base class
cutoff 74 64 Remove from base class
reverb 91 64 Default 0
chorus 93 2 Default 0
portamento on/off 65 off Remove from base class
portamento time 5 64 Remove from base class

zynthian-ui Issue #88 requests a change for this. Please give feedback here so that we can provide some consensus on preference. Once we have the base class agreed we may move on to each engine.

1 Like

For me everything is fine as it is apart from the reverb and chorus which should default at 0. The volume is likely a little low to allow headroom for layers.

I suspect these were derived from fluidsynth and as one gets to other engines they become a little more complicated.
I really like keeping the overall volume on encoder one. it just seems logical but several engines use others ( I think it might be helm that has volume as 0-> 1.0 on page 20 or so, so perhaps we might want to standardize that aspect as much as possible.

The volume level has already come under discussion elsewhere but it depends a lot on usage. If one is only playing pianoteq then 96 is probably about right ( my audio technologist side likes a bit of headroom) whilst multiple engines is probably going to need laborious turning down and snapshotting to produce a suitable level.
There is an outstanding ticket for adding -10dB & +10dB pads and I think this should be implemented as altrations to the actual engine ( by altering the default 96 level rather than trying to produce sub processors down the line .That way we keep the engines as generic as possible and also conciously map the volume control.
Quite how it develops as engines become more and more imaginative we will address as it arises.

I think a little bit of reverb & chorus ‘helps’ the default for the disinterested user coming to the machine for the first time, but as with a lot of technical solutions how the device should be set for the first encounter and how it should be set up for someone who is an experienced users are two different things… ( Think zynaddsfx display modes simple & advanced…)

Portamento is something that (IMHO) should be off by default. I’ve fought polyphonic portamento before ( try getting to recordings to match :frowning: ) and it can be a pain, that should only be enabled by someone that specificlly wants it. :smiley:

If we were to have defaults I would suggest ADSR characteristics might well be something that would help the early adopter but perhaps the fluidsynth origins of the system indicate the possible issues with envelopes…

Good feedback @wyleu. I should have been more clear (especially as I started my post with this detail and deleted it…). This is the default values for parameters, not necessarily what gets displayed and mapped to which encoders which is a different configuration. One would expect the defaults in the base class to be the ones that (almost) every engine uses, e.g. Volume on MIDI ctl 7. Perhaps we should just have the standard MIDI controllers:

MIDI CC Description Default
1 Modulation 0
5 Portamento time 0
7 Volume 96
8 Balance 64
10 Pan 64
11 Expression 127
64 Damper / sustain 0
65 Portamento 0
66 Sostenuto 0
67 Soft 0
68 Legato 0
69 Hold 0

Maybe there could / should be a default of zero for anything that is not overridden so the global default is zero, the base class implements volume, pan, etc. then actual engines define anything else and override defaults as appropriate.

Regarding positioning in the UI, I agree with @wyleu that we should aim for consistency. This should be possible with most engines as each has its own configuration which zynthian uses to map controllers. So one might expect the first page to have volume and pan (or balance if more appropriate for the instrument). I think the sustain control is odd in a UI. It is occasionally useful for engineering investigation but I would prefer it be removed and always mapped to the sustain pedal (MIDI controller 64). (Maybe there is a need for an extra layer of configuration to allow mapping of controllers that we don’t want to see in the main UI - but that is the subject of a future discussion :slight_smile: .)

I hope you don’t mean “disinterested”! How about having a default layer configured out-of-the-box to demonstrate the awesomeness of Zynthian with as much reverb, phase, echo, delay and fireworks as you like? I found the noob experience a littel daunting because you are presented with something that does nothing, compared with most other instruments where you start playing and exploring sounds straight away.

Disinterested user, to me, means someone coming to the device ( with a keyboard half decent attached).
What would they expect it to do?

My context would be a piano sound.

Now for ‘most’ audio performances the dear old western ear appreciates, generally comes with a dose of ambience.Be it real a concert hall recording or the current favuourite reverb unit…

try playing outside to really appreciate it . . .

So I would suggest a little reverb.But as @riban implied there is a whole required level of config to prune and render the gui screen data. Having 40 pages of encoder maps is a little intimidating but conceptually required.
The creation of instrument definitions might well also play at this level, as the ability to map a Motor61 against and AKAI MPK suggests a large context to the GUI. For instance the mapping of drawbars on Aelous or souper looper control keys for the AKAI…

I have the advantage that my default zynth is a hifiberry+ so I get to see some absolute comparisons rather than compensating on a mixer or such. Some of the synths are loud !!

The good thing is I don’t transport a mixer if we get it right. :smiley:

The disinterested user, that I am, also likes to get the whole lot in a rucksack on a bike !

So to me the default sound should be a good piano. Probably out of fluidsynth as it was probably the first.
Now would you pop up in layer list or encoder page1?

My SC-155’s internal battery went flat so each time I powered it up it reverted to factory defaults which had a good lashing of reverb enabled. I had to pull it down every session which soon became frustrating (to the extent that after a few years I got my screwdriver out to replace the battery :slight_smile: ). I think that a user’s first experience should not be their ongoing experience. Maybe Zynthian learns what your preferred defaults are (like the old SC-155 kinda did) or you can set the default or it remembers the last settings you used. All options, hence the RFC.

That is another discussion, maybe best had over a tea and biscuits :wink:. I think the UX and workflows a bit confusing which may be the subject of my next post… But back to the topic. @everyone please consider what you think the defaults should be (and whether those are derived from a static default set, a user configurable default set, the user’s last create layer settings, whatever…).

D’oh . . .

Is probably a good moderate user compromise.

Headroom for layers? Admitted, I’ve played way to little with layered sounds and effects, so the answer might be obvious to some, but in the interest of following along. Are the layers adding up, so there’s a risk of peaking or is it just to be able to make a bunch of layers and then make the primary sound stand out by increasing that specific volume?

1 Like

That is the most useful way when doing layered sounds. Headroom is always an issue in digital systems. If you have a good midi controller having a volume per layer would be the ideal solution.

We did a fair bit of work on levels when @riban put together the status meters.

Trying to establish a ‘standard’ level seems to be fairly usage dependant, and proper implementation of Volume and Expression to incoming MIDI streams needs to be taken into account as, sadly, we aren’t dealing with the gentle analogue over modding but the cruel vicious digital world.

On the zynth we have established an effective patchable jack environment and with any such environment, the first issue is the context. Do we allow effects to assume that downstream input is of a correct level? certainly for devices that exist outside our inputs like Audio Input we would be foolish to not honour any standards that exist in those worlds.

Perhaps what you are describing might be met by an effects mapping applied as MIDI data? The ability to transfer system contexts via the zynth’s inter-control network would seem to be useful but, it’s turtles all the way down (and should be a snapshot). You still need to define a basic zynth reference tone, and from the audio in/zynth record/audio out mucking around I’ve done with an active guitar I have to say the level implementation is usefully good.

At the end of a day we put a wrapper round an engine and hope it plays nicely. It will be truly wonderful when all engines put Odb in the ‘right’ place whatever that is :smiley:

We’ve gained a lot of functionality with effects and it seems to be working and ultimately you trust your producing engine. If -10dBFS sits at green then I think the zynth’s work is done Zynth Peak Meter :smiley:

1 Like

Hi, as for me the the volumes quickly result in clipping. Often already at 2 layers.

When it comes to parameters ( hope this ain’t ot); What I REALLY miss are envelope parameters. Namely attack and release. These are for me the 2nd most important after cutoff, reso and volume.
Apart from that I think the whole machine could benefit from a master volume.

I personally wouldn’t mind the chorus and reverb staying as it is.

1 Like

There is a ticket in for a - 10db pad

There was some discussion recently about adding an audio insert point at the output, i.e. between the engine outputs and the main output. Into this one could add plugins including level control, limiter, etc. The internal JACK audio is floating point so won’t distort hence we could just turn down the master volume if required. I would love to work on this output bus insert point but I think @jofemodo may have plans.

But back on topic, if a single engine clips when first added then it’s defaults are likely to be wrong. We should provide sensible defaults so that a user has to try hard to drive the synth to distort. The dynamic range / resolution of a MIDI volume control is poor and it soon becomes irksome to adjust levels in this way. Having an internal mixer stage (see previous post for how that might fit) with better resolution may prove advantageous. Sorry, drifting off topic again but the default may be significantly influenced by such a feature.