Panoply ·
If you ever used the De Haupt envelope segment generator in SE, then you'll know what these are - but I've added a few improvements.
If you didn't, then yes, they are a bit tricky to get your head around, but they are incredibly flexible, and allow you to easily create any envelope that you might wish in next to no time at all.
I've tried to make the .osm as clear as possible, but it would be fair to say that clarity of .osm is not my strong point.
So here is a short verbal explanation.
The typical ADSR can be broken down into the A, the D, the S and the R. These units compromise one of these stages each - NB the code for the sustain and release segments differ from purely time dependent stages such as A and D - Each unit plays for its time duration, and then triggers the next unit, which then plays for its time duration and then triggers the next one, and so on. The only time this varies is if the note being played is released - at which point the segment 'jumps' into the release stage.
So, you need to set it up so that the boolean outputs from one stage trigger the next stage, and the release stage - you also need to make sure that the next stage, whether it be the release stage or the next stage knows the value of the current stage at the point where it triggers either the next stage or the release - these pins are clearly labelled in the .osm.
I built these for an application that demanded sample accuracy, so they are deliberately inneficient - a few hop and /16 commands shouldn't be to hard to figure out though 😉 - In addition to that, there is no fast retrig either, as this is behaviour that I also explicitly did not want 🙂 I still haven't figured out how to stop the value of the knobs being read when the envelope is running either, which is a major annoyance 🙂
Hope these are of some use to someone! 🙂