fix(studio): make the volume fader tell the truth about the gain it writes - #3305
Draft
miguel-heygen wants to merge 1 commit into
Draft
fix(studio): make the volume fader tell the truth about the gain it writes#3305miguel-heygen wants to merge 1 commit into
miguel-heygen wants to merge 1 commit into
Conversation
miguel-heygen
force-pushed
the
studio-volume-fader-precision
branch
from
August 17, 2026 20:56
bf1de5e to
4696d6c
Compare
…rites The fader travels in dB, so its stops are irrational values; serializing them through the generic two-decimal numeric formatter collapsed the bottom quarter of its travel onto "0" — a hard mute — and made the knob jump on release everywhere below unity. Both panels now use the exact serializer, which round-trips every integer stop back to itself. Raise the volume automation lane to the same ceiling the fader reaches. Clamping the lane at unity meant automating a boosted clip silently discarded the boost, and the panel disables the fader while a lane owns the level, so there was no way back. This rescales the lane's vertical axis: unity now sits a quarter of the way up rather than at the top. Add audio_volume_tween_overrides_gain. Tween values on `volume` are absolute — they replace the authored gain rather than scaling it — so a clip carrying both plays at whatever the tween names, and the fader gives no sign of it. The rule reuses the tween detector the sibling lane/tween rule already has.
miguel-heygen
force-pushed
the
studio-volume-fader-precision
branch
from
August 17, 2026 20:57
4696d6c to
f0504eb
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.
The volume fader travels in dB, so its stops are irrational values. Serializing them through the generic two-decimal numeric formatter collapsed the bottom quarter of its travel onto
"0"— a hard mute — and made the knob jump on release everywhere below unity. Both property panels now use an exact serializer that round-trips every integer fader stop back to itself.The automation lane reaches the same ceiling
Clamping the volume lane at unity meant automating a boosted clip silently discarded the boost, and the panel disables the fader while a lane owns the level — so there was no way back short of deleting the lane.
This rescales the lane's vertical axis: unity now sits about a quarter of the way up rather than at the top, because the axis covers the same range the fader does. Worth knowing before you open a lane.
New lint rule
audio_volume_tween_overrides_gain. Tween values onvolumeare absolute — they replace the authored gain rather than scaling it — so a clip carrying both plays at whatever the tween names, and the fader gives no sign of it. The rule reuses the tween detector the sibling lane/tween rule already has, and reports the authored gain in dB.Verifying
The fader's precision is pinned by a test that walks all 201 stops and asserts none of the audible ones serialize to silence and each round-trips to the same stop.
bun run linton a composition withdata-volume="1.949845"and avolumetween emits exactly one warning naming the element and5.8 dB.Stack
Based on
u1-audio-gain-core, which introduces the shared gain module. Retarget tomainbefore merging.