Repository navigation
Conversation
When an input line has a negative weight the stick is reversed, but its trim was still applied in the original direction at the mix stage, so stick and trim worked against each other. Record whether the active input line reverses the input, and flip the trim accordingly for mixes, logical switches and instant trim. Fixes #2322 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An input can also be reversed by its custom curve, either with an inverted curve reference (!CVn) or with a curve whose points decrease. Treat a custom curve whose output at full positive stick is lower than at full negative stick as reversing, combined with the weight sign so that both together cancel out. Symmetric curves (e.g. V or U shaped) have no single direction, so the trim is left unchanged for them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pfeerick
force-pushed
the
pfeerick/fix-input-trim-reverse
branch
from
October 25, 2026 02:59
2249327 to
62028d6
Compare
This branch has not been deployed
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.
Fixes #2322
Summary
An input line can reverse its stick, either with a negative weight or with a custom curve. However, the trim was still applied in the original direction at the mix stage, so the stick and trim worked against each other: e.g. moving the stick right moved the channel negative, while trimming right moved it positive.
The trim value is added in the mix stage, after the input weight and curve have already been applied, and nothing recorded that the input was reversed. With this change, the trim's direction matches the physical stick: trimming right has the same effect as nudging the stick right. The trim's size is unchanged, so it still doesn't scale with input weight or expo.
An input is treated as reversed when exactly one of these is true:
!CVn) and a curve with decreasing points.A negative weight together with a reversing curve cancel out. Symmetric (V or U shaped) curves have no single direction, so the trim is left as before for them. Expo, diff and function curves never reverse the stick.
Changes:
applyExpos()records per input whether the active input line reverses it.getSourceTrimValue()negates the trim for such inputs. It also negates the stick value passed for the throttle idle-trim scaling, so idle-only trim still applies at the correct end of the stick travel. The existing inverted mix source handling still applies on top.getValueForLogicalSwitch()applies the same reversal, so logical switches on an input match the mix output.instantTrim()negates the measured offset for reversed inputs. Otherwise it would double the offset instead of cancelling it.moveTrimsToOffsets()works on the final mixer output, so it needed no change. Reversals after the Inputs stage (negative mix weight,!Inputmix source, mix curves, output reverse) already applied to stick and trim alike.Models that reverse a stick in Inputs (with a negative weight,
!CVn, or a decreasing custom curve) and had their trims set with the old behaviour will see those trims act in the opposite direction after updating. Those trims would need to be re-centred or re-set.Testing
TrimsTest.ReversedInputTrimTrimsTest.ReversedInputCurveTrimTrimsTest.InstantTrimReversedInputgetSwitch.inputWithTrimtools/commit-tests.shpasses for tx16s, x9dp2019, mt12 (surface), and pl18 and h17 (stick dead zone).🤖 Generated with Claude Code