EXS24: convert envelope times with the hardware fourth-power curve#172
Merged
git-moss merged 1 commit intoJul 8, 2026
Merged
Conversation
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.
32c03bb to
7af311f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
fit
seconds = 10 * (parameter / 127)^4to 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.)