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,!

Get the Electronics kit here!

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:






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

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:


Direct download

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.

Thanks to Omri Harel for making this Open Source!

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


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.


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 "


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:)


Join my Discord channel:

Contact me:

••• Support me •••



Buy me a coffee:

Arduino Contest

Runner Up in the
Arduino Contest