This is why it’s so complicated. I wanted to simplify this and just add a canvas with points, the only “limits” would be an axis lock (x,y) on a point and the fact that one point can’t go beyond other points or the envelope bounds.
But that is not enough, and that’s how the uiEnvelope component evolved to what it is now.
Your document assumes a sequence of messages (a fact that one type of point can’t occur before/after a different point), i think that’s a no go. All points should be of the same type, the set of properties should define each point and make it behave in a certain way.
I can imagine point templates, like your types, that is all points are “default” but you can apply a set of properties from a template to make it behave like one of the types (just thinking out loud).
The biggest problem is how to apply bounds to where the point can movee, the X/Y axis lock is the obvious one. There is stuff like the SUSTAIN parameter, that defines the level and not the time, with that parameter the Y values of decay needs to move to represent how the envelope really looks like (sustain is more the line that connect release and decay and not a point).
There are also weird multi point envelopes like the Casio CZ series has with a level,rate parameter for each point
It’s complicated, i’d like the thread to become more of a discussion i can use as a way to get this right. So if anyone has any ideas, or maybe can show me how it’s done somewhere else (and that is a good implementation) i could have a look. Anything that will help.
- This reply was modified 3 years, 9 months ago by atom.