0. linear, from 0 to 1
f(x)=x
with x=(CCval/127)
1. bipolar, from -1 to 1 (useful for things such as tuning and panning, used by CC10 panning by default)
f(x)=2*x-1
with x=(CCval/127)
2. linear inverted, from 1 to 0
f(x)=1-x
with x=(CCval/127)
3. bipolar inverted, from 1 to -1
f(x)=1-2*x
with x=(CCval/127)
4. concave (used for CC7 volume tracking and amp_veltrack)
f(x)=x*x
with x=(CCval/127)
5. Xfin power curve
Crossfading formula. It's like a typical pan formula for the right channel.
ARIA's exact formula is f(x)=pow(x, 0.5)
with x=(CCval/127)
Another candidate will be sin(0.5*pi*x)
, for the pan formula already existing in Sfizz.
6. Xfout power curve
It's the opposite of Xfin power curve.
f(x)=pow(1-x, 0.5)
, with x=(CCval/127)
Alternative cos(0.5*pi*x)
When a <curve>
element without an explicit curve_index
is met, it takes the next available index starting from 1.
Most times, software will reserve 6 slots for predefined curves. This will make the first user curve be 7, and it's a good idea to follow this as a convention.
Example
<curve> v000=0 v64=0.1 v127=1.0 // the curve at index 7
<curve> v000=0 v64=0.1 v127=0.2 // the curve at index 8
ARIA opcode curve_index
permits to specify the explicit index.
It can't seem to mix curves which are explicitly indexed and those which aren't.
Explicitly-indexed curves after implicitly-indexed ones seem to be discarded by the loader, and vice-versa.
Both software are using linear interpolation to evaluate between the defined values. (verified)
- In ARIA, the curve values are not bounded.
- In Cakewalk, the curve values are clamped in the domain [-1:+1].