Knob as per-strip volume trim / headroom for its fader #14
Labels
No labels
Agent
Ignore
Agent
In Progress
Agent
Planned
Agent
Planning
Agent
Ready
Agent
Triage
Compat
Breaking
Kind
Bug
Kind
Documentation
Kind
Enhancement
Kind
Feature
Kind
Security
Kind
Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
lucas/nanoKontroller2#14
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Each channel strip has both a fader and a knob, but a node only needs one volume control. The fader is the natural volume control, which leaves the knob unused.
Applications have wildly different output levels: one app is barely audible at fader top, another is painfully loud at a quarter travel. Today the only fix is a per-action
powcurve in the config, which has to be guessed, edited, and reloaded.Giving the knob the role of trim turns that into a physical, per-strip calibration: set the knob once so the fader's full travel covers the useful range for that app, then forget about it. The strip still has exactly one volume control — the fader — and the knob becomes calibration, not a second thing to keep in sync.
Scope
A continuous action where the knob above a strip scales the range its fader maps onto, for the same target node.
Two candidate semantics, to be decided:
0 .. knobinstead of0 .. 1.The offset variant has the advantage of a well-defined neutral resting position, which matters because the knobs are absolute pots with no LED: a centered pointer visibly means "untrimmed". The headroom variant is simpler to reason about and cannot boost beyond unity.
Surface area
A new or extended continuous action type, plus its config parameters (trim range / curve).
The main obstacle: actions are currently independent. Each is constructed from its own config entry, keyed by a single
NanoKontrol2::Control, and the only input it receives ison_midi(int value)(includes/Actions/IAction.h). There is no mechanism for the knob's action to influence the fader's action on the same strip.Possible directions:
Volume is written via
AudioService::SetVolume(name, float), which should be sufficient; no new audio API is expected to be needed. Whichever control moves, the resulting volume must be recomputed from both values and pushed, so the trim takes effect immediately rather than on the next fader move.Open questions
powcurve, or replace it?volumetoday must keep working.Acceptance
Out of scope