Skip to content

feat(mixer): add AFL on every aux master and group bus#594

Open
srperens wants to merge 1 commit into
mainfrom
feat/mixer-bus-afl
Open

feat(mixer): add AFL on every aux master and group bus#594
srperens wants to merge 1 commit into
mainfrom
feat/mixer-bus-afl

Conversation

@srperens
Copy link
Copy Markdown
Collaborator

Summary

  • Adds per-bus AFL (After-Fader Listen) on every aux master and group, sharing the existing channel PFL/AFL solo bus and monitor-source gating
  • Backend taps aux{N}_out_tee / group{K}_out_tee post-master, post-mute through a volume gate + queue into solo_mixer; new auxN_afl / groupN_afl Bool properties are live: true, persist: Some(false) and use the existing bool_to_volume transform
  • is_solo_property_name (renamed from parse_solo_property_name) now matches aux/group AFL so the state layer's solo-intent cache and monitor-gate refresh handle bus AFL with the same single-batch atomicity as channel solos
  • Frontend adds an AFL button under Mute on each aux/group strip, hydrates/saves/resets the new state, and extends the Clear-all batched PATCH to release bus AFLs in the same call so the monitor gates ramp back to Main exactly once
  • PFL on buses is intentionally not exposed (bus faders are essentially always up); the *_afl namespace leaves room for *_pfl later without a breaking change

Test plan

  • cargo check clean on workspace
  • cargo test --lib mixer — 88 passed (including updated test_mixer_pfl_afl_are_transient covering the new aux/group AFL props and rewritten test_is_solo_property_name_matches_pfl_and_afl)
  • cargo fmt --all + clippy clean (pre-commit hook)
  • Manually verify in running mixer: toggle aux AFL → bus appears on Monitor; toggle group AFL → same; Clear-all releases all channel + aux + group solos in one ramp
  • Confirm monitor strip MAIN/SOLO indicator flips when only a bus AFL is engaged (no channel solo)

🤖 Generated with Claude Code

Per-bus AFL taps post-master, post-mute from each aux/group output tee
into the existing solo_mixer, sharing the same monitor-source gating as
channel PFL/AFL. The state layer treats auxN_afl / groupN_afl writes as
solo-affecting so the monitor gates refresh once per batch alongside the
existing chN_pfl / chN_afl path. Frontend adds an AFL button under Mute
on each aux/group strip and extends the Clear-all batch to release bus
AFLs in the same PATCH. PFL is intentionally not exposed on buses (bus
faders are essentially always up); the auxN_afl / groupN_afl namespace
leaves room for *_pfl later without a breaking change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant