deej is an open-source hardware volume mixer for Windows and Linux PCs. It lets you use real-life sliders (like a DJ!) to seamlessly control the volumes of different apps (such as your music player, the game you're playing and your voice chat session) without having to stop what you're doing.
Join the deej Discord server if you need help or have any questions!
deej consists of a lightweight desktop client written in Go, and an Arduino-based hardware setup that's simple and cheap to build. Check out some versions built by members of our community!
Download the latest release | Video demonstration | Build video by Tech Always

deej is written in Go and distributed as a portable (no installer needed) executable.
Looking for the older Python version? It's no longer maintained, but you can always find it in the
legacy-pythonbranch.

cmd/main.go in the background. This client reads the serial stream and adjusts app volumes according to the given configuration filedeej uses a simple YAML-formatted configuration file named config.yaml, placed alongside the deej executable.
The config file determines which applications (and devices) are mapped to which sliders, and which parameters to use for the connection to the Arduino board, as well as other user preferences.
This file auto-reloads when its contents are changed, so you can change application mappings on-the-fly without restarting deej.
It looks like this:
slider_mapping:
0: master
1: chrome.exe
2: spotify.exe
3:
- pathofexile_x64.exe
- rocketleague.exe
4: discord.exe
# set this to true if you want the controls inverted (i.e. top is 0%, bottom is 100%)
invert_sliders: false
# settings for connecting to the arduino board
com_port: COM4
baud_rate: 9600
# adjust the amount of signal noise reduction depending on your hardware quality
# supported values are "low" (excellent hardware), "default" (regular hardware) or "high" (bad, noisy hardware)
noise_reduction: default
master is a special option to control the master volume of the system (uses the default playback device)mic is a special option to control your microphone's input level (uses the default recording device)deej.unmapped is a special option to control all apps that aren't bound to any slider ("everything else") (experimental)deej.current is a special option to control whichever app is currently in focus (experimental)Speakers (Realtek High Definition Audio), to bind that device's level to a slider. This doesn't conflict with the default master and mic options, and works for both input and output devices.system is a special option on Windows to control the "System sounds" volume in the Windows mixerchrome.exe and CHROME.exe will workBuilding deej is very simple. You only need a few relatively cheap parts - it's an excellent starter project (and my first Arduino project, personally). Remember that if you need any help or have a question that's not answered here, you can always join the deej Discord server.
Build deej for yourself, or as an awesome gift for your gaming buddies!
In case you prefer watching to reading, Charles from the Tech Always YouTube channel has made a fantastic video that covers the basics of building deej for yourself, including parts, costs, assembly and software. I highly recommend checking it out!
With many different 3D-printed designs being added to our community showcase, it felt right to gather all of them in a Thingiverse collection for you to browse. If you have access to a 3D printer, feel free to use one of the designs in your build.
Visit our community-created design collection on Thingiverse!
You can also submit your own design to be added to the collection. Regardless, if you do upload your design to Thingiverse, please add a
deejtag to it so that others can find it more easily.
arduino\deej-5-sliders-vanilla|) character, e.g. 0|240|1023|0|483deej executable!libgtk-3-dev, libappindicator3-dev and libwebkit2gtk-4.0-dev for system tray supportdeej.exe and config.yaml)deej.exe and copy it to %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup to have deej run on bootIf you'd rather not download a compiled executable, or want to extend deej or modify it to your needs, feel free to clone the repository and build it yourself. All you need is a Go 1.14 (or above) environment on your machine. If you go this route, make sure to check out the developer scripts.
Like other Go packages, you can also use the go get tool: go get -u github.com/omriharel/deej.
If you need any help with this, please join our Discord server.
While deej is still a very new project, a vibrant community has already started to grow around it. Come hang out with us in the deej Discord server, or check out awesome builds made by our members in the community showcase.
The server is also a great place to ask questions, suggest features or report bugs (but of course, feel free to use GitHub if you prefer).
If you love deej and want to show your support for this project, you can do so using the link below. Please don't feel obligated to donate - building the project and telling your friends about it goes a very long way! Thank you very much.
deej is released under the MIT license.