Tobias, and anyone else who cares to weigh in on this:

As you may know, I'm working on porting the LMMS instruments to LV2 for use in other hosts (https://github.com/pgiblox/lmms-lv2).  I have some time to finish this project over the next few weeks as I just completed my course work for school. I break compatibility where needed in order to gain better quality (antialiased oscillators, etc.) Anyway, I'm at the point where I need to either maintain or reject compatibility on a few fronts.  The latest issue is envelope modulation.

The current behavior surprises me, even after reading the source code. For example, here is a graph from Audacity when playing the same triple oscillator preset with the Volume Envelope Amount = {1.0, 0.5, -0.5, and -1.0} in that order:

  http://www.pgiblock.net/lmms/env_1_0.5_-0.5_-1.png

Source file:

  http://www.pgiblock.net/lmms/env_1_0.5_-0.5_-1.mmpz

The first curve (amt=1.0) is as I would expect. The LMMS source code seems to state that the volume envelope (as opposed to cut or reso envelopes) works as a "mix". That is, the volume is always 100% if the envelope is disabled, or the envelope has full-effect if the amount is 1.0. Thus, I would expect, at 0.5, that the volume starts at 0.5, ramps up to 1.0 during attack, then releases to 0.5.  However, we see that the volume starts at less than 0.5, and is over 1.0 during the hold. Then the exciting part: The volume instantly decreases from the sustain level to a much smaller level at the beginning of the release. The negative modulations are strange too: what is going on with the release? I'd expect the volume to increase. There is the discontinuity between sustain and release here too.

So, my question to LMMS users: Does this behavior seem intuitive? I don't believe it is. What behavior would YOU expect? Finally, Toby: does this experiment properly illustrate the intended effect?

Much thanks,
Paul


P.S: now that most of the scaffolding is done for this project, I will quickly add other plugins. Please watch the github site for updates if you are interested in this, as I could use some beta testers.