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.
Yes and no… With the set of properties I defined all points would be of the same type. Only this leaves to configuration user to define the different types by setting the properties correctly. The types I defined would take that away from the user but would of courxe make code logic more complicated. That´s an option, not a must.
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).
This would be the set of properties I defined. If you look at the type definitions then for the Default type all properties are enabled. So any other type is just a subset of these properties and could thus be configured setting the correct values.
(Don´t get me wrong, I do not consider my document to be the final solution!)
The biggest problem is how to apply bounds to where the point can movee, the X/Y axis lock is the obvious one.
I am not so sure about that. The Y axis of points can never overlap. The sole dependency lies between the X coords of the points. Each point can have a maximum bounds width of maxValueX*factorX. The bounds X origin is always previous point positionX. Still the only property to set is the maxValue and whenever these properties of a point change then the factors and poisitions have to be recalculated.
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).
I would say yes and no again here. The sustain is the point to the right of the line. I think it is a matter of comfort that in most implementations you can alter the sustain level with the decay point. The sustain point as well as the line that is drawn to the decay point is a visual aspect. Decay is a time parameter only. So it is actually incorrect to call the decay point decay if it can also alter a level. The decay point in envelope controls is always a control for decay and sustain at the same time. And this is the reason why I think that an envelope control must be aware of the type quality of a point. But only for the visual aspects so to say…
There are also weird multi point envelopes like the Casio CZ series has with a level,rate parameter for each point
Yes, I also pointed that out at the end and left the solution to this open..
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 sounds a bit like nothing I said made any sense..?