M10 Docs   Curves
Curves are used at many places:
A curve basically is a shape that defines how an input value between 0 to 100% is mapped to an output value between 0% and 100%.
The most simple curve is a linear curve, a straight line from 0% to 100% where the output simply equals the input.
But it's very interesting, for all kinds of effects, to change this curve.
 
There are several curve types, but the main one is the Bezier curve.

The Bezier curve can be tweaked by 3 parameters:

  • Curving = How much convex or concave the curve must be.
  • Asymmetry = The asymmetry of the curve. Note that the closer the Curving parameter is to 100% the lesser this has effect.
  • Edging = The lower the value the smoother the curve, the higher this value the more edgy the curve.
The Mirror option which will make the curve mirrored at 50%.

The X axis range is used when splitting curves, but you can also use it creatively.

When drawing envelopes or wave shapes:

  • Left-click-drag the curve between 2 envelope points to change its first parameter.
    Bezier curves: If the Bezier curve matches an exponential curve then dragging it continues to change like an exponential curve, which is a combi of the 3 parameters.
    Else the first parameter (Curving) is dragged, like with other curve types.
  • Alt + left-click-drag a curve to change its 2nd parameter.
  • Shift + Alt + left-click-drag a curve to change its 3rd parameter.
  • Doubleclick a curve to open the curve editor (cfr image above) for detailed curve parameter tweaking, or to set the curve to a Sine Q1 or Q4 to assemble a sine waveform.

 
More Details:
  • About curve rendering:
    Whenever possible curves are rendered as linear segments as this is the most CPU efficient.
    Target modules then get a block of audio data with N samples with curve info saying: Parameter X is linearly going from value A at the start of this block to value B at the end of this block.
    Then this module itself can calculate the parameter value for each of the N audio samples in the audio block, which is faster than having to deliver a block of memory with N parameter values for each sample.
    But as soon as MuLab's curve rendering engine notices that it takes too many linear rendering lines to accurately render the curve, it switches to audio rate rendering as not only that's probably more cpu-efficient in that case, but also guarantees perfect accuracy.
    So this switching between linear rendering and audio rate rendering is fully automatic.
    And it's very possible that within a single curve some segments of it (the ones that can be easily simulated by straight lines) are done linearly, while more edgy segments or high frequency segments are rendered at audio rate.
  • All the time top priority is near perfect curve accuracy!
    Accomplished with cpu efficient linear data if that doesn't really compromise accuracy, accomplished at audio rate when necessary.
    All this results in a crisp sound 🧡