On 13.1.2025 09:33+1 Kristian Amlie <krist...@amlie.name> wrote:
It's somewhat related to my own desire to one day make LFOs and
envelopes much more general. Something like: You make an envelope, and
then "attach it" to controls, possibly even multiple controls.
On 13/01/2025 10:26, Will Godfrey wrote:
I remember this briefly being discussed. I would be disinclined to have such
floating LFOs (or envelopes) *replace* existing ones. This would be a major
disruption of all of the code, the GUI and the CLI, and would break
compatibility with existing files!
On 15.01.25 08:08, Lorenzo Sutton wrote:
Yoshimi's strong attention to retro-compatibility of even entire state file is
really important and makes it a valuable musical instrument, at least IMHO - but
I think many users would agree.
Hello Lorenzo,
nice to see you here, participating in discussions ;-)
First off, I want to resonate your feelings regarding compatibility.
In fact, this was was made me choose Yoshimi for my work several years ago.
As Will put it succinctly, "You can not change the sound of a tin whistle"
Meanwhile, we have even an ongoing effort to build a "sound test suite"
for Yoshimi, to ensure that the produced sound is not affected unintentionally
by ongoing development changes. Keeping this up is not as simple as it may
sound, since sometimes we have slight numeric differences creeping in, and
sometimes we indeed must reorder some internal stuff -- but most of the time
we managed to keep the sound perceptionally equivalent.
To conclude, if we want to keep that promise up, it is often not possible
to change matters the way we want, even if the improvement seems worth it,
because it would break existing patches and projects in a way that can
not be reasonably managed.
Changing the fundamental wiring of the parts and how sound is routed
and combined into the final result would be an example for a change, which
can not easily be implemented without breaking existing artistic work.
However, I'd like to add that I can understand what Kristian proposed.
Actually, I often found myself in the position to want something similar.
The reason is that we know from research, that it is actually a common
sonic envelope (both in spectrum and in time) that makes a bunch of sounds
"fuse" into an entity for the human listener. Thus, if you want to make
a bunch of sound generators be perceived as an unity, "one instrument",
the key trick is to give them a common envelope, which means similar
transients and this kind of overarching slower patterns, that can
be created with the use of LFOs.
When building presets and patches, in practice you'll often be forced
to replicate similar settings over various components, and any tuning
and tweaking of the behaviour after that point becomes quite tedious.
Thus, the only way I see to get such a feature would be to create a
new control structure that can be attached to various points in the
engine, without changing the existing LFOs and Envelopers. It must
be rather kind of "overlaid" on top of existing elements.
One possibility to achieve this would be to allow the LFOs (or the
envelopes for that) to be driven by some central common "source".
Somewhat similar to the way that in AddSynth, one oscil can be set
to draw from the oscil of a previous layer.
Obviously, while such a scheme seems possible, implementing it would
be a rather challenging project in itself, involving lots of subtle
questions regarding performance and internal organisation.
IIRC on the one hand all parameters (including the envelope knobs) are under the
hood mapped to 0-127 values so in theory all 'compatible'? On the the other hand
I see for instance that the Filter LFO depth is a 0-4096 cent range while the
frequency LFO is 0-2048, so not sure what should happen in these case where
ranges are different in different LFOs (maybe just map to 0-127)
To explain that a bit: what is in the range 0-127 are the MIDI parameters.
However, this imposes quite a drastic limitation to fine tuning of parameters,
and thus since several years we are gradually upgrading Yoshimi to allow
finer grained settings than those 128 values for many parameters. We keep
the same value range, but we allow (and store) values like 64.234 or 126.8
internally.
For actual processing, each such parameter is mapped internally into
some adequate other scale. For example, a frequency setting is mapped
onto the frequency scale (measured in Hertz), and the translation is
not linear, but rather in accordance to the musical octaves.
This drives then the internal definition of the LFO, which in fact is
a mathematical function, and produces values between -1.0 ... +1.0
These are then scaled and mapped in accordance to the desired output.
So what we can copy/paste is always the internal definition of the
configuration of an LFO. Right now we distinguish between Amplitude LFO,
Frequency LFO and Filter LFO. And we allow only copy/paste within a single
category of settings. But you are correct to point out that all three kinds
of LFOs (and similar for envelopes) actually share most of their parameters,
and thus it seems feasible to define a mapping, so that one kind of preset
could be pasted into the other kind of component. It's just that such a thing
need to be programmed explicitly, and requires to define some concept up-front
how to deal with those settings that can not be easily transferend.
-- Hermann
_______________________________________________
Yoshimi-devel mailing list
Yoshimi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel