On 08.07.2025 09:25, Will Godfrey wrote:
On Thu, 3 Jul 2025 09:37:49 +0200
Kristian Amlie <krist...@amlie.name> wrote:

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!

Sorry for the late reply - I've had a great couple of weeks and am just getting
sorted after the New Forest Folk Festival. LAC virtually back-to-back with this
is a bit bit exhausting!


OK, This seems fine.

Incidentally, there is a little lee-way with the text. Where names have changed
in the past, the text2data code looks through several names to find a match.

Indeed, I see that now.

AFAIK, there won't be any compatibility problem, since the string in question has never been saved in the MIDI Learn data before (since it wasn't learnable). So this particular control will just have the one string, which I'm now changing slightly.

I have now created the pull request: https://github.com/Yoshimi/yoshimi/pull/231

Will, could you perhaps do a little bit of freemode point editing in the CLI interface, and make sure I didn't break anything? I think I only changed informational messages, but doesn't hurt to be sure. The GUI seems to work pretty well now.

--
Kristian


_______________________________________________
Yoshimi-devel mailing list
Yoshimi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel

Reply via email to