[yoshimi] Re: ADSR envelope shaping is a bit of a pain

  • From: Will Godfrey <willgodfrey@xxxxxxxxxxxxxxx>
  • To: yoshimi@xxxxxxxxxxxxx
  • Date: Sat, 24 Mar 2018 00:48:19 +0000

On Thu, 22 Mar 2018 20:57:06 +0100
lechp <lechp@xxxxxxx> wrote:

I was delighted when I first saw the change from the 4 rotary knobs, but there 
are some things I'd like to see fixed...

To reproduce the problem:
1) go to the amplitude envelope window and enable free mode.
2) disable sustain (move to position 0)
3) keep deleting unwanted node points until there are only 3 left: start, 
middle, end.
4) move the end point up.

How is it possible that the END point can be moved up? For instance to -20dB? 
How do I control the REAL release rate after it goes off the edge of the graph?

The envelope structure is one that is common to all of Amplitude, Filter,
Frequency, Bandwidth and for all of these an *increase* in control level
is quite reasonable.

The start of the release phase is the yellow line and you can move this between
all of the points except the first and the last, so you can have a very complex
release behaviour. This is the actual end of control point, and for Amplitude
it defines the *start* of the note-off sequence.

Once past the release point, Yoshimi loses control of the note, and it will
carry on through whatever release terms and timings that have been set. While
this can have some very interesting results, it's an important consideration. It
means you can easily start a bunch of notes at the same pitch and soak up
processor time without being aware of it.

I've attached a fun example to this post where Amplitude, Filter and Frequecy
all have different free mode timings and actions. In this example the
Amplitude attack time is zero, the decay phase is flat, and post release it
first increases in amplitude then fades. The Filter and Frequency behaviour is
quite different :)

You can prove the point about the note-off with this example by moving the last
point to the right, you will see and hear the release time increase.

I understand that it might be a tricky issue and playing around with it and it 
could introduce some nasty bugs. E.g.: each note might have endless ringing 
that hogs CPU power, etc. 
But could we at least pin-point the relevant MIDI events? "Note On" is easy 
enough, it's always at the far left. But for the life of me, somebody, PLEASE 
add a "Note Off" section, so it's plain as day: "Jump to this part of the 
envelope when a Note Off event is received". It could be a separate tab, or a 
different coloured dot...

Note-off is a completely separate event where some entirely different sounds 
could be played. For instance: a harpsichord or some other keyboard that goes 
"click" when you raise your finger off the key.

You could possibly get something like a key-click, by having a relatively low
general amplitude in the graph with a very short release phase at maximum
amplitude, then apply 100% wet distortion to that part, with the level set just
above the general level.

A separate event would no longer be a note-off, but a respawning to a different
structure. That might be interesting, but it would be extremely complex to
implement. You might do better with some external automation structure that
recognises an incoming note-off and spawns a new short note on a different part
from that.

Besides that, there's no option for the decay to keep going on and on and on. 
What we really have is the ability to draw a sophisticated "attack" rate. We 
can make it act like a decay by gradually declining for 100 seconds or more, 
but once it reaches the far right side of the graph, we can't tell yoshimi 
"and from this point on, decay at a rate of 10dB/s forever or until the key is 
released. When the key is released, do THIS forever." -60dB is also a limiting 
factor here.

Yes you can. Add another point to the left of the release point (yellow line)
then move the release point way to the right.

-60dB is a practical limit (it used to be 40dB). If there is anything else going
on it is inaudible. If you really want it lower you can edit CMakeLists.txt ->
MIN_ENVELOPE_DB and recompile, but I don't recommend it.

Will J Godfrey
Say you have a poem and I have a tune.
Exchange them and we can both have a poem, a tune, and a song.

Attachment: WTF?.xiz
Description: Binary data

Other related posts: