Skip to content

EXS24: convert envelope times with the hardware fourth-power curve#172

Merged
git-moss merged 1 commit into
git-moss:mainfrom
douglas-carmichael:exs24-envelope-attack-scaling
Jul 8, 2026
Merged

EXS24: convert envelope times with the hardware fourth-power curve#172
git-moss merged 1 commit into
git-moss:mainfrom
douglas-carmichael:exs24-envelope-attack-scaling

Conversation

@douglas-carmichael

@douglas-carmichael douglas-carmichael commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Problem

Each EXS24 envelope time is a 0..127 parameter (max 10 s), but the detector read it linearly, and the attack stage skipped even that scaling - it used the raw parameter directly as seconds.

Cause

The device applies a fourth-power curve, not linear. Reading linearly overstates short times badly; the raw-attack made it ~12.7× worse again.

Calibration

Reference EXS24 instruments saved in Logic at known envelope times:

parameter 19 27 53 71 94 127
seconds 0.005 0.020 0.303 0.977 3.001 10.0

fit seconds = 10 * (parameter / 127)^4 to within 1 %.

Effect

A 7.5 ms attack (parameter 21) was read as 1.65 s, so plucked/struck instruments faded in too slowly to be heard and appeared silent. Found converting the DSF Planet Earth library to Waldorf QPAT; hardware-verified on an Iridium.

Fix

Convert all envelope stages with the calibrated curve in the detector, and invert it in the creator so the EXS24→EXS24 round-trip stays consistent. (Supersedes the earlier interim commit on this branch, which only made the attack consistent with the other, still-linear stages.)

Each EXS24 envelope time is a 0..127 parameter mapping to a maximum of 10
seconds. It was read linearly (parameter / 127 * 10), but the device applies a
fourth-power curve, so short times were greatly overstated - and the attack
stage skipped even the linear scaling, using the raw parameter as seconds
(~12.7x too long on top of that).

Calibrated against Logic reference instruments saved at known envelope times:

    parameter :   19     27     53     71     94    127
    seconds   : 0.005  0.020  0.303  0.977  3.001  10.0

which fit seconds = 10 * (parameter / 127)^4 to within 1%. A 7.5 ms attack
(parameter 21) was read as 1.65 seconds, so plucked/struck instruments faded in
too slowly to be heard (found converting the DSF Planet Earth library to Waldorf
QPAT; hardware-verified). Convert all stages with the curve in the detector and
invert it in the creator so the round-trip stays consistent.
@douglas-carmichael douglas-carmichael changed the title EXS24: scale the envelope attack time like the other stages EXS24: convert envelope times with the hardware fourth-power curve Jul 7, 2026
@douglas-carmichael douglas-carmichael force-pushed the exs24-envelope-attack-scaling branch from 32c03bb to 7af311f Compare July 7, 2026 21:00
@git-moss git-moss merged commit ebb82c8 into git-moss:main Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants