GameChatBalancer is a Windows desktop tool that lets you control the game/chat volume balance with a physical Arduino-compatible knob or slider.
Instead of opening the Windows mixer mid-game, you can instantly shift volume between voice chat and game audio with dedicated hardware input. GCB maps selected processes to Game and Chat groups and applies volume changes in real time.
- Reads input from Arduino-compatible hardware over serial.
- Converts the hardware position to a Game/Chat balance value.
- Applies the balance to configured Windows audio sessions.
- Provides a systray-first UX with optional full WPF window.
- Persists user settings and restores them automatically on startup.
The app remains event-driven (USB/connectivity state, UI state, audio updates), avoiding unnecessary polling where event-based flows are possible.
Compared to the initial public version, GCB now includes major improvements in reliability, UX, and architecture:
- Modern WPF UI direction with Fluent-inspired styling.
- Improved systray workflow and clearer connected/disconnected states.
- Software Control fallback when no Arduino is connected.
- Event-based reconnect behavior for hardware attach/detach.
- More robust icon pipeline (app icon, systray icon, in-app assets).
- Single-file publish compatibility improvements (including tray icon fallback to embedded EXE icon).
- Refactored host architecture to decouple legacy form dependencies.
- Autostart state consistency fixes between UI toggle, settings persistence, and Run registry key.
The sections below are intentionally prepared as placeholders. Replace paths once screenshots are available.
- Serial values are sent only when the knob/slider value changes (no continuous data spam).
- Runtime noise-reduction levels for analog input stability:
Off,Low,Medium,High.
- Drag-and-drop app assignment into Game and Chat groups.
- Multiple processes per group.
- Auto-detect serial device and reconnect on device changes.
- Automatic settings persistence.
- Optional invert control for hardware wiring direction.
- Start-with-Windows support.
dotnet publish "AudioControl/AudioControl.csproj" -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true /p:PublishTrimmed=falseOutput:
AudioControl/bin/Release/net10.0-windows/win-x64/publish/AudioControl.exe
- User settings are saved by .NET user-scoped settings under
%LOCALAPPDATA%(user.config, framework-managed path). - App assignment path cache:
%LOCALAPPDATA%/GameChatBalancer/app-paths.json
If you want to build your own physical controller, see:
- Manual
- Schematic and hardware assets in
/assets
Quick note: use a linear potentiometer (not logarithmic).
- Support additional physical controls.
- Extend flexible multi-channel assignment scenarios.
- Continue modernization toward the current .NET desktop stack.
Icon attributions and license details are retained from the original project and should stay in this repository.
If you add or replace assets, update the attribution section accordingly.
Issues, bug reports, and focused PRs are welcome. Please include:
- Reproduction steps
- Expected vs actual behavior
- Hardware details (board, potentiometer type, USB adapter)




