On 01.07.2025 13:36, Will Godfrey wrote:
On Thu, 26 Jun 2025 14:17:23 +0200
Kristian Amlie <krist...@amlie.name> wrote:
This is something I've been wanting for a while: The ability to modify
free envelope points using MIDI Learn instead of just the ADSR parameters.
This actually turned out to be pretty easy to implement, and I already
have a prototype locally which works. Each axis of each point is
independent, and you can learn both axes, or only one, it's up to you. I
just haven't done the UI part yet, so my prototype depends on saving a
MIDI Learn file and then making manual changes before loading it again.
But I do have some questions:
- Question 1: What is the meaning of the word "increment" when it comes
to envelopes? This is mainly used by the CLI currently, but it will also
show up in the MIDI Learn list. Typically it's referred to as "X
increment", which in actuality refers to the Time taken for the curve to
progress to that point. I don't see how the word "increment" is related
though...
It's been a while now... but if I remember right, I did that to make it clear
it's not a simple value but a delta i.e. an offset from the previous point.
Ok. Right now the word "Time" is not even mentioned though, so it's a
bit hard to understand "increment" in that context. Any objections if I
change it to "Time"?
This is important, because currently MIDI Learn data is saved by string
value, not index, so the name is set in stone once we pick it.
- Question 2: When Ctrl-Shift-clicking on a point, you will learn that
specific point, obviously, but there are two axes you could learn. My
suggestion for how to present this in the UI is simply:
Ummm. Ctrl + Right mouse button click.
1. Pops up "Learning Env Freemode Point 2 X (Time)"
2. It also contains the string "To learn the other axis, click Cancel".
3. If it is learned, it disappears and only that axis is learned.
4. If you click cancel, it pops up "Learning Env Freemode Point 2 Y
(Amplitude)", and now it will learn that axis instead.
Does that sound reasonable?
In most places I think we use the Shift or sometimes Alt key for a variation.
Possibly a more user friendly answer might be when initiating a learn, for a
single incoming controller to generate a pair of learn lines with slightly
different text lines. e.g.
Part 1 Kit 1 AddSynth Amp Env Point 4 amp
Part 1 Kit 1 AddSynth Amp Env Point 4 time
That sort of wording would ensure they stay together, and the user can later
independently alter the min/max amounts.
Good idea, I like this suggestion. It's both simple and intuitive, best
of both worlds.
Just before reaching the Min.Max controls all incoming values will have been
converted to 0-127 floats and after these are currently then expanded to the
actual required range.
Time is a difficult one. We'd need some form of ranging adjustment as it could
be mS or Seconds. Possibly, Min and Max could be redefined as multiplier and
value.
This is just translated directly to the 0-127 range, which is
logarithmic; small steps at first, then big steps. It has the same
response as when you drag the points with the mouse. I don't think we
need to do anything else here, do we?
Whatever the choice the wording has to be user friendly - start using words
like 'delta' and we'll lose many of them.
Exactly! I think "time" is a good candidate, and it's what's being used
for the knobs (when Free Mode is off).
P.S.
You definitely don't pick the easy ones do you :)
Haha, no, I suppose not! But you'll see: the patch is not that big!