(dx.)env
Volume Envelope in the DX7, based on Dexed/MSFA code.
The output is a Q24 number, so you may want to use q24_to_linear
to get a number in [0,1]
Usage
env(rates, levels, outlevel, rate_scaling, gate) : q24_to_linear
Where:
rates: 4 channels of rates between 0-99levels: 4 channels of levels between 0-99outlevel: the output level in Dexed's scale:scaleoutlevel(level) << 5for a level in 0-99, to whichoperatoradds the level scaling and the velocity. A level in 0-99 passed as is puts every target below the floor of the envelope, which then stays at 6.4e-5rate_scaling: added to each rate (0 to 27, fromScaleRate(midinote, sensitivity)); the rates saturate at 63, so a large value makes every segment instantaneousgate: trigger
Test
env = library("env.lib");
env_test = env.env((60,61,62,63), (99,90,70,0), env.scaleoutlevel(80) << 5, 0, button("gate")) : env.q24_to_linear;
env_slider_test = env.env((hslider("env:R1", 60, 0, 99, 1), hslider("env:R2", 61, 0, 99, 1), hslider("env:R3", 62, 0, 99, 1), hslider("env:R4", 63, 0, 99, 1)), (hslider("env:L1", 99, 0, 99, 1), hslider("env:L2", 90, 0, 99, 1), hslider("env:L3", 70, 0, 99, 1), hslider("env:L4", 0, 0, 99, 1)), int(env.scaleoutlevel(hslider("env:outlevel", 80, 0, 99, 1))) << 5, hslider("env:rate_scaling", 0, 0, 27, 1), button("gate")) : env.q24_to_linear;