Open unfa opened 7 years ago
i was thinking about implementing this using cubic beziers. as default the control points sit on the straight line. Question is how to make the port interface for the control points. x-array + y-array? or are tuple-arrays possible?
simpler idea. just one control point that sits in the middle of each line. one par to shift it on y axis while x position is fixed middle between neighboring points.
If it's bezier curves the UI/UX I'm most familiar with is the one for defining paths in gimp/inkscape. I think blender might use the same UX as well, but my experience there varies over their various UI overhauls. Per the OSC API, it should be easy enough to hack in a way to set the whole array at once (it's blitting a few floats after all). You can also go the route of ctrl#num (float val, float ctrl_left, ctrl_right, ...) and let each of those be a setter for a tuple. There's not a lot of logic for returning fully typed tuples of information, but float vectors are handled in osc-bridge reasonably well.
first shot on gui (WIP): https://imgur.com/a/ADH310k
I have no idea how hard this would be to implement but could probably add a ton of flexibility to the current envelope system and allow making some special sounds much more easily.
What I lack in Zyn's envelopes is the snappiness that for example TAL Noizemak3r has. To some degree LMMS's Kicker also can produce similarly snappy envelopes (allowing to bend the AD envelope's shape). I guess it's the fact that the envelope is curved going much faster in the beginning, then slowing down gradually:
So the general idea is to allow envelope line segments to be curved, possibly something like a bezier curve with two control points. I've also seen approaches with 1 control point (Fruity Loops automation uses that IIRC and LMMS's Kicker also goes this route)
For drum sounds the envelope's shape makes a drastic difference to the sound - especially for the pitch of the main drum tone (kicks, snares and toms).
I was thinking about this for years now, but only after filing this issue: #77 I thought that it's time to say this idea out loud . The Macros could also use the curved envelope system for defining parameter functions. In the future there could possibly also be stuff like unison index mapping for ADDsynth (with graphs using the curves or some other parameter mapping using graphs like Image-Line Sytrus or Harmor are doing (which seems to be really cools stuff).
* I think I might have made a feature request in the Sourceforge some time ago, but it's old stuff.