Introduction: Deej - a Physical Volume Mixer
Meet deej!
deej is a physical voulume mixer. Just like the volume mixer built into windows, just physical! This means that you can change the volume of an application without closing your important game. You can turn the game volume down and Discord volume up, when someone joins the call, and turn the Spotify volume up when your beat comes on. Since it sits right beside your keyboard you can quickly change volume, for example if a game has a loud intro music (looking at you Civ 6).
Let's get started!
UPDATE: You can now get all the electronics in a kit! Click here to see
Step 1: Watch the Video!
I made a video showing the build process, give it a watch!
Step 2: Ordering Parts
You can get the full kit from my site, Ananords.com!
The parts I used are linked below:
Slide Potentiometers: (AliExpress or Amazon)
Knobs: (AliExpress or Amazon)
Arduino Nano: (AliExpress or Amazon)
Male header pins 2.54mm : (AliExpress or Amazon)
M3 x 5mm Round Head (AliExpress or Amazon)
M2 x 4mm Countersunk (AliExpress or Amazon)
Custom PCB (see next step or order above)
Step 3: PCB - Schematic
I used EASYEDA to design the PCB's.
You can get the EASYEDA file to the PCB V2 here
I ordered my PCB's from JLCPCB. You can get 5 pcs for only 2$!
You can also try to make one with protoboards. You might have to change the CAD model a bit though...
Step 4: Start Printing!
The "first" step is to print the base and plate.
I printed the base and top plate in white PLA, and for the blue icons, I used Blitz Sapphire by AddNorth.
Both are printed with .15 layer height, and 20% infill.
Link to the 3D files:
STL:
FUSION 360:
Step 5: Solder the Arduino Board
While printing, you can start assembling and soldering the electronics!
You first need to solder pins to the Arduino, if yours doesn't already have them.
Then, you can break off the middle piece of the PCB (the Arduino daughter board). To do this, simply press in the middle PCB until the mouse bites breaks, and the PCB becomes loose.
Now you can solder the Arduino to that board.
The Arduino PCB also needs some pins to connect to the potentiometer board. You can use some wires, or a 6 pin 2.54 mm male header.
Do not solder the Arduino PCB to the Potentiometer board, or the potentiometers yet!
Step 6: Assembling the PCB's
If the 3D prints are not done yet, you can do steps 8 and 10 before this:)
You first need to insert the Arduino board into the base.
Then, carefully insert the potentiometer PCB into the base, and carefully line up the pins from the Arduino PCB with the holes on the potentiometer PCB. Make sure it is fully mounted.
Now, solder the pins to connect both boards together. When you have done that, you can slowly remove both cards from the base.
Cut the pins of the "bridge" between the Arduino PCB and the Slider PCB as short as possible!
Use a piece of tape over the pins, to remove the risk of the slider shorting the pins.
Step 7: Solder the Potentiometers
ONLY FOR V2:
In the V2 I have added 2 more screws to better secure the Arduino PCB to the case.
Insert all the potentiometers into the PCB, and solder them.
Update: Use the 3D printed spacers to lift the potentiometers away from the board, to remove the risk of the potentiometers accidentally shorting the pins of the bridge between the Arduino PCB and the Slider PCB.
Use two spacers per Slider, one on each side. Place them beside the "Large" pins. (See picture)
Make sure that all the potentiometer pins are going through the correct holes, and that they are fully inserted before soldering!
You can now insert the two PCBs back into the base.
I found that using a screwdriver to push the Arduino PCB in place helped a bit.
Use the four M3 screws to secure the Potentiometer PCB.
Step 8: Upload the Code
Start by making sure you have Arduino IDE installed. (If not, you can download it here)
Then, go to the official deej GitHub page and download the latest Arduino code:
Then, choose Arduino Nano as your board, and upload the code to the Arduino. (for more details)
PS: I had problems with my Arduino Nano, try to use "328p Old Bootloader" if you have problems uploading too.
You can now open the Serial Monitor, and you should be able to read the values from all the potentiometers! The value should be between 0 and 1023.
Step 9: Final Assembly
Now that you know everything works, you can assemble it together!
Take the top plate, and place it on top.
Then, take your four M2 screws and screw them in to mount the top plate.
The knobs should be easy to install, by just pressing them onto the sliders.
I also recommend gluing some rubber feet underneath to stop it from sliding.
Step 10: Software
LINUX:
Install libgtk-3-dev, libappindicator3-dev and libwebkit2gtk-4.0-dev for system tray support
Pre-built Linux binaries aren't currently released, so you'll need to build from source.
WINDOWS:
First, head over to the releases page on the GitHub site to download the latest version of the executable and configuration file. (deej.exe and config.yaml)
After downloading, place both files in the same folder in a directory anywhere on your machine (For example, Documents)
To make it run on boot, create a shortcut of deej.exe, and copy it to " %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup "
Configuration
Now that you have downloaded the software, you have to edit the config file to choose what programs to control, and to set the correct COM port, so it can connect to the Arduino.
To do this, you can right-click the config.yaml file, click "open with" and choose notepad (or better, Visual Studio Code or notepad++ if you have that)
You can also just launch the program and right-click the icon in the system tray, then choose edit configuration.
Here you can set up your programs, and choose COM port. The COM port should be the same as the one you programmed your Arduino with.
For more information on what you can change in configuration, check out the GitHub!
Step 11: Done!
You have now created your own physical volume slider!
Hope you like the tutorial:)
Any questions?
Ask in the Discord Channel, or send me a message:)
Follow me on Instagram for updates on upcoming projects:)
Instagram: https://www.instagram.com/ananordss/
Join my Discord channel: https://discord.gg/2ESzkpG4ES
Contact me: Andreas@ananords.com
••• Support me •••
Patreon: https://www.patreon.com/ananords
Donations: https://ananords.com/products/donation/
Buy me a coffee: https://ananords.com/products/donation/

Runner Up in the
Arduino Contest
16 Comments
7 months ago
i have followed your instructions, ordered pcb's using your link, put everything together. slider 1,4,5 work perfectly, slider 2 controllers 2 and3, and slider 3 dose nothing at all, i have checked for shorts, pins not soldered fully, i can't seem to find a problem with the hardware., im using the serial monitor in Arduino ide for testing and looking at the raw output from the sliders themself, have you seen this issue before?
Reply 7 months ago
Sounds like a dead arduino nano then... Try setting the 5v directly to the pins corresponding to those sliders and see if you get 1023 as output. Then do the same but with gnd and see if you get 0
11 months ago
Thank you so much for such a great project. I have followed the tutorial instructions to complete the installation, and the program is installed, but I found that the volume is reversed, the volume is reduced when sliding the slider to the top, and the volume is increased when sliding the slider to the bottom. How should I set it up to fix this? Please point out.
Reply 11 months ago
Hi, there is a variable called invert-sliders in config.yaml you need to set to true.
https://github.com/omriharel/deej/blob/master/config.yaml
1 year ago
I have created the same
1 year ago on Step 11
Hello! I like this project, is amazing!
Can be configured for OBS Studio?
2 years ago
A schematic or at least a block diagram would be very helpful...
Reply 2 years ago
Updated the instructables and added a schematic:)
Reply 2 years ago
Thanks! I know (from experience) that it's a time consuming pain to make the schematic. I have to ask though - I don't see any inputs or outputs on the schematic; only the connections to the pots are shown. Is there something missing? Or is my brain just missing (again)? :-)
Reply 2 years ago
I just uploaded the schematic I used to make the PCB, so the connections for the potentiometer goes through the pin headers, and to the analog input of the Arduino. This is because I have the Arduino mounted on another PCB.
2 years ago
This is very handy!
I can imagine a light version with only one slider and a combo button/display to change the app you want to control. The display can be one of those ultra small (and cheap) OLED screen.
Thanks for the instructable, I may give it a shot.
Reply 2 years ago
this is exactly what I did ;D if you need there is a instructables on my page :D
Reply 2 years ago
Yeah that's what I'm talking about!
C'est exactement ce que j'avais en tete mdr.
2 years ago
could you share the schematics?
2 years ago
Really smart looking. Well done :)
Reply 2 years ago
Thanks!