feat(windows): add managed VB-CABLE virtual microphone - #26
Conversation
on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
2133479 to
843db0e
Compare
on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
Treat an exact new package as successful even when the vendor setup returns a nonzero code, fall back to the signed device description when SetupAPI omits FriendlyName, and keep raw helper exit codes out of user-facing errors. on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
Expose Virtual microphone beside output nodes, detect its status on intent, show setup or restart guidance only when needed, and remove the Windows management page and manual refresh workflow. on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
Add the approved node-first concept and a screenshot captured from the locally installed release build for PR validation. on-behalf-of: @RedRatInHat <alexpacuk@redratinhat.com>
|
Hi, I'm really glad you decided to contribute to this repository, but there are quite a few things I don't understand and that need to change.
Honestly, I’m going to close this PR, because the amount of AI is fairly high and the feature in its current state doesn't work even on a clean Windows 11, and without meaningful diagnostics. That said, I understand this is a lot of work, but in its current form I'm not ready to accept the PR: too much code I can't confidently support or understand and most importantly the feature doesn't work. But if you'd like to take the idea to a working state, I'm open to you reopening the PR — but not before you address and respond to every point above. I'm happy to help with a step-by-step review once you've worked through them. Thanks for your time and for the attempt - it's valuable even if the result isn't there yet. *I liked this idea, so if you don’t want to carry on with it, or if you never manage to sort it all out, I might implement this feature myself in due course, taking into account all the issues I’ve mentioned |
|
Hi, I see how this happened. The feature grew beyond its original scope while I was iterating on the installation flow and UX. The installation, detection, and routing logic worked on my machine, so I treated the flow as validated. That machine had accumulated VB-CABLE state during development, which made the result less representative than I expected. I’ll work through the review comments and test the complete flow on a dedicated clean Windows 11 VM before publishing another revision or reopening the PR. Thanks for testing it on a clean system - that exposed the gap in my validation. Если будет удобно, - можем дальше перейти в переписке на какой-нибудь славянский язык, но можем продолжить и на английском. |
|
You can message me on Discord (horuse) to discuss whatever you like |
|
Hi @Horuse, reopen, please! Here is the status of each point:
The clean VM test exposed a PowerShell policy problem in the signature verification helper and an unstable package identity after reboot. Both have been fixed. I tested the packaged flow on Windows 11 Enterprise LTSC, build 26100: installation, endpoint detection, reboot, routing through Local Windows cable tests pass 24/24, Linux and macOS were not manually tested. Their virtual device backends and real-time audio paths were not changed. GitHub is not giving me a Reopen button for this PR, so I cannot reopen it from the fork side. Could you reopen it when you have a moment? The branch is updated and ready for the PR checks. |
|
Hello, thank you for your work! Judging by the screenshots, everything looks good and blends in well with the overall interface. I’ll be taking a closer look at the changes you’ve made shortly and testing your pull request on Windows, macOS and Linux to avoid any potential issues! This may take some time |
|
Hi, I’ve checked it and everything’s working, but there are these two issues: the first one really needs to be fixed, whilst the second is a last resort.
|
What this adds
This PR adds Windows virtual microphone support through VB-Audio VB-CABLE.
The audio route is:
This makes processed Splitwave audio available to Discord, OBS, browsers, games, and conference applications. Windows uses the existing Speaker node and WASAPI output path. There is no separate virtual microphone node or audio engine.
User flow
CABLE Inputin a Speaker node.CABLE Outputas the microphone in the target app.Splitwave checks the installation when the page opens and after the app regains focus.
Screenshots
Before installation
Installing
Ready
Speaker node using CABLE Input
These screenshots were captured from the packaged application on the clean Windows 11 test VM.
Driver handling
Splitwave downloads VB-CABLE from the official VB-Audio host and verifies the archive hash and installer signature before running it.
Existing VB-CABLE installations remain external and are never claimed or removed by Splitwave.
If Splitwave installed the package, the interactive app uninstaller can offer to remove it. Keeping the driver is the default. Updates and silent uninstall preserve it. Removal is limited to the exact managed driver package.
Installation failures now include a structured error code, message, and vendor exit code where available. The UI shows a useful message while full details remain in the application log.
Validation
The complete flow was tested using the packaged NSIS build on a clean Windows 11 Enterprise LTSC VM, build 26100:
CABLE InputandCABLE Output;CABLE Input;Automated checks:
cargo checkpassed;bun run checkcompleted with 0 errors;GitHub Actions validation:
Both runs passed, including the Windows application and NSIS builds.
Developed and manually tested on Windows 11. Linux and macOS were not manually tested. Their virtual device backends and real-time audio paths were not changed.