Filter-chain bypass action: route a node through a processing chain or past it #15
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#15
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
A processing chain inserted into a signal path — noise suppression and EQ on a microphone being the canonical case — is something you want to engage and disengage frequently and without leaving what you are doing. Doing that by hand means rewiring links in a patchbay, which is exactly the kind of graph surgery this daemon already automates.
A button that flips a node between "through the chain" and "straight past it" turns that into one press, with the LED showing which path is live.
This is kept deliberately generic: the action should express "insert this processing stage into the path, or bypass it", independent of what the chain actually does. Concrete requirements will be added later.
Scope
A new toggle action, assignable to an LED-capable button, that switches a node's signal path between two routings:
The LED reflects which routing is currently live, derived from the actual link state rather than from a remembered decision, so that a change made outside the daemon is still shown correctly.
Surface area
This is close to the existing
connectionaction and should reuse its machinery rather than grow a parallel implementation:AudioService::SetConnectionState/GetConnectionStatealready create and destroy links between matched nodes (includes/AudioService.h).Action_Connectionalready tracks link state throughon_link_created/on_link_removed, enforces a desired state when nodes appear, and drives the LED from the observed state (src/Actions/Action_Connection.cpp).NodeMatcherlets every endpoint be a pattern list, so the chain's own nodes can be matched even if their names are not fully stable.The difference from
connectionis that this is not one link toggling on and off: it is a choice between two routings, where engaging one implies tearing down the other. Doing it as two independentconnectionactions would leave a window with both paths live (doubled signal) or neither (silence), so the swap needs to be a single operation.Open questions
connectionalready has viadefault-state.Acceptance
Out of scope