Repository navigation
A velocity curve in dB, switched on the velocity row - #112
Merged
benjamindehli merged 1 commit intoNov 3, 2026
Merged
benjamindehli merged 1 commit into
benjamindehli merged 1 commit into
Conversation
benjamindehli
deleted the
feature/105-a-velocity-curve-in-db-switched-on-the-velocity-row
branch
November 3, 2026 21:06
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.
When I made presets I ended up setting the VELOCITY row to 0 or to somewhere between 90% and 100%, because the values in between hardly did anything. The row took
amount × (1 - velocity)off the fader, which is linear in amplitude. Even at 100% a medium note was only 6 dB below a full one, at 50% it was 2.5 dB, and most of the change fell on the softest notes.The row can now work in decibels. The loss is
amount × (1 - velocity) × 40 dB, so every step of the knob and every step of velocity is the same number of dB. At 100% a medium note is 20 dB down and the softest note 40 dB down, and 50% is half of each. A negative amount mirrors it as before, and STRIKE is unchanged.The switch
A dB switch sits in the gutter left of the "velocity" caption, the same kind of switch as L and T on glide. Lit is dB, dark is the old curve, now called Classic. It reaches every channel and the noise channel, and it is a parameter, "Velocity Curve", saved with presets and sessions and visible to the host.
Clicking it converts every channel's amount so a medium note keeps its level, and only the soft and loud ends move. Classic 100% becomes about 30% on dB and 70% about 19%. Going back is the inverse, held at 100%. The switch and the 33 amounts are one step in the undo history.
Old patches stay on Classic
params::valueInOlderFilesholds that rule, and bothsetStateInformationandpresets::restoreuse it. For the session it is read beforereplaceState, which adds the missing entries to the same tree.What changes for users
How it was checked
DSP suite, a new test:
The existing velocity tests now ask for Classic, the curve they were written against.
Runtime suite, a new test:
I made the older-files rule return nothing to see the session and preset checks fail, and both did. The runtime suite passes with 1536 checks and the DSP suite with 1404, both with no failures, and the DSP core builds on its own with
-Werror. clang-format, prettier,build_site.py --check, the counts and structured data checks and the lambda scan pass too.Closes #105