Repository navigation
fix(soundboard): keep idle pad presses out of clips - #819
Conversation
A buffer-only Clips session attached the soundboard with on_air: false, so sounds.press answered false and Studio said only you hear them, but the voices still mixed into the ring. Skip session_started on replay-only so idle presses stay monitor-only. Record and Go Live still attach on air. Co-authored-by: OrcDev <orc@orcdev.com>
|
Caution Review failedThe pull request is closed. No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Attachment policy and comments crates/videorc-backend/src/recording.rs, crates/videorc-backend/src/sound_player.rs, apps/desktop/src/renderer/src/components/studio/soundboard-section.tsx |
Recording setup calls Soundboard::session_started only when replay_only is false, and passes true. Comments describe buffer-only Clips presses as staying off the ring. |
Press behavior test crates/videorc-backend/src/session_audio.rs, crates/videorc-backend/src/sound_player.rs |
A test-only bus helper counts start commands and acknowledges them as on-air. The test checks that a press before attachment is off-air and sends no start, while a press after live bus attachment is on-air. |
Priority:
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Bug fix
Possibly related PRs
- TheOrcDev/videorc#752: Adds the soundboard session-bus path that this change adjusts for replay-only sessions.
- TheOrcDev/videorc#743: Introduces the soundboard mixer, session bus, playback state, and recording integration modified by this change.
- TheOrcDev/videorc#694: Introduces buffer-only Clips sessions and the
replayOnlystate used by this change.
Merge Risk: 
Minimal · up to cb659
-
The attachment change has no established blocking defect. Saved-clip behavior still warrants validation on a machine that can run the audio checks.
Pre-merge checks: 
4 · 
1
-
Failed checks: 1 inconclusive Passed checks: 4 passedFull details: Docstring Coverage
-
Explanation
Docstring coverage is 60.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 3 files. (1 skipped: 1 too large.)
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
-
Finishing Touches
-
📝 Generate docstrings
-
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Verified on real Linux hardware (ogre, Intel VAAPI, Clips on)Build: local integration of this branch + #817 + #818 on
CI fix pushed (cb65966)Linux gate clippy failed on |
…t-of-clips-5180 Co-authored-by: OrcDev <orc@orcdev.com>
Symptom
With Clips on and nothing recording or live, Studio → Soundboard says "Only you hear sounds until you record or go live." and
sounds.pressanswersonAir: false. The press still lands in the Clips ring, so the next saved clip contains it at full bus gain. A streamer previewing pads between streams then posts a clip that has them.Found on packaged 0.9.148 (Linux, VAAPI, Clips on). Not Linux-specific in the code.
Fix
Verified in code:
start_sessionattached the soundboard withsession_started(..., !replay_only). A buffer-only session still has a real audio bus, so voices mixed into the ring;on_air: falseonly hid that fromsounds.pressand the monitor copy.Option A (matches the copy and
docs/soundboard.md): skipsession_startedonreplay_only. Idle presses stay monitor-only. Record and Go Live still attach withon_air: trueand mix as before.Tests
a_replay_only_session_does_not_mix_idle_presses_into_the_bus— a press with nosession_startedisonAir: falseand the session bus gets noStart;session_started(..., true)mixes once.cargo check -p videorc-backend --testspassed here. Linking the full backend test binary OOMs on this VM; CI should runcargo test -p videorc-backend sound_player.sessionOwnsTransport === false(areplayOnlysession). They passed.Not verified here (needs a real app + audio)
runs/c2).pnpm smoke:soundboard/pnpm smoke:soundboard-fixtureon a machine with capture).Summary by CodeRabbit