GameChatBalancer is an opensource hardware audio balancer for Windows PCs. The functionality is inspired by the Chatmix / Gamevoice mix function of some available headsets.
GameChatBalancer lets you use an Arduino (or compatible) based knob or slider to balance the volume of chat-software and games so that you can easily tune the audio volume while playing without any interruption by just turning a knob or moving a slider.
The project consists of two components. A small systray application for your PC and an Arduino based cheap to build hardware.
- Features
- Build Hardware
- Make your own GameChatBalancer
- Licences
- Roadmap
- Special Thanks
- Help & Feedback
-
Hardware
- Only sends data via the serial port if the chose volume level changed -> no permanent datastream
- Noise reduction in case you are using cheap components - especially the potentiometer
- Levels: Off, Low, Medium, High (default)
- Adjustable at runtime via Systray Application
-
Systray Application
- Easy configuration via GUI - Assign applications via drag and drop
- Assign multiple applications to the "Game" and "Chat" category
- Auto-detect the Arduino based hardware
- The application detects when the hardware is removed and will automatically reconnect when plugged in again (USB event based)
- User settings are stored automatically and restored during application startup
- Invert the values received by the hardware in case your wiring is mixed up
See the application in action:
GCBalancer.mp4
This is how it look like in the Windows Audio mixer:
Audiomixer.mp4
Everything you need to build your own GameChatBalancer ist listed in the Pricing indication.
- The potentiometer is connected to an analog pin of your Arduino (or compatible) board. It is powered from the board's 5V (or 3.3V for a Seeed board) output (see schematic)
- GND = black
- 5V / 3.3V = red
- Signal = green
- The board is conected via an USB cable to the PC. Make sure to check what kind of USB cable is needed for your board.
- As listed in the Pricing indication I used a Seeed Xiao SAMD21 Cortex M0+ instead of an Arduino. It comes cheap (5,60€), has a lot of analog connectors and a very small footprint (20mm x 17,5mm x 3,5mm) so that it fits into a small housing. Last but not least it has a USB-C connector.
In the schematic below, you can find two options:
- Left is the setup with the Seeed Xiao SAMD21 Cortex M0+. Ensure to connect the potentiometer to the 3.3V output of the board as the 5V will probably kill the board's microcontroller.
- Right is the setup with an Arduino.
Please keep in mind that a cheap potentiometer can cause noise, so that noise reduction needs to be switched on in the Systray application. I use a ~ 3€ poti with a low tolerance of +-5% in my device and noise reduction switched off. Cheap potentiometers usually have a tolerance of +-20%.
Important: make sure to buy a linear potentiometer, not a logarithmic one!
Item | Price (€) | Link |
---|---|---|
Microcontroller: Seeed Xiao SAMD21 Cortex M0+ | 5,60 | https://www.berrybase.de/en/seeeduino-xiao-arduino-microcontroller-samd21-cortex-m0 |
Potentiometer Noname 10k (tolerance: +-20%) | 0,45 | https://www.berrybase.de/en/drehpotentiometer-10k-937-liegend-mono-6mm-loetoesen?c=164 |
Optional: Potentiometer Alpha RV16AF20KB10KM (tolerance: +-5%) | 2,99 | https://www.conrad.de/de/p/alpha-rv16af20kb10km-dreh-potentiometer-mono-200-mw-10-k-1-st-1694304.html#productDownloads |
Knob | 0,65 | https://www.berrybase.de/en/drehknopf-fuer-geraendelte-6-0mm-achse-mit-anzeige-16x16mm-schwarz/grau?c=164 |
Copper wire isolated | 1,50 | https://www.berrybase.de/en/kupferschaltdraht-isoliert-oe0-5mm-10m |
Total | 8,20 - 10,74 |
If you use the listed microcontroller you will additionally need a USB-C cable.
You can use anything as a housing for your GameChatBalancer - even a matchbox if you do not have a 3D-Printer.
I decided to design and 3D-print one by myself. If you like the "design" you can download either the STL files or GCODE files here.
If you want to build your own GameChatBalancer or get details on how to handle the systray application. Please have a look at the dedicated manual.
Icons used under Creativecommons Attribution 4.0 from https://icon-icons.com:
Depending on my free time I would like to make the complete setup flexible so that additional potentiometers are supported. Those could be used to (e.g.):
- Control the master volume of your PC
- Assign single or multiple applications to a potentiometer
I am currently thinking of how the Systray UI and configuration of the Arduino can be done flexible so that no new sketch needs to be uploaded if the overall configuration changes.
I would like to thank @sverrirs for his Gist AudioManager.cs which accelerated the development and for sure saved me from some pain during the development. I used and modified AudioManager.cs to my needs so that GameChatBalancer is able to adjust the volume of more than one application by application name in one single call.
I created a first issue where help would be very welcome. Maybe it is not an easy one, but if somebody has a good idea or would like to contribute to it, this would be very welcome. This is my first (public) repo, so please be patient with me.
Feedback is also more than welcome. Please let me know if you (dis-) LIKE something or if you see issues in the code have good hints how to improve.