Stream Deck Project

Custom-built touchscreen Stream Deck paired with a physical audio mixer. It uses a repurposed rooted Samsung Galaxy S3 as the touchscreen interface, while the physical hardware mixer runs on the deej software using an Arduino Nano with four potentiometers.
Custom Stream Deck & Hardware Mixer
Custom-built touchscreen “Stream Deck” paired with a physical audio mixer. It uses a repurposed rooted Samsung Galaxy S3 as the touchscreen interface, while the physical hardware mixer runs on the deej software using an Arduino Nano with four potentiometers.
Features
-
App-Specific Volume Mixing: Four physical knobs let you independently control the volume of specific applications (like Discord, Firefox, and Spotify).
-
Visual Mixer Display: The Galaxy S3 screen shows which app is mapped to which knob, featuring live volume sliders and percentages.
-
Spotify Dashboard: A dedicated media screen pulls live data from Spotify, displaying the track name, artist, album art, and a live progress bar.
-
Touchscreen Controls: On-screen buttons allow you to quickly manage media (Play/Pause, Rewind, Skip) or execute quick actions like deafening Discord or switching audio outputs.
How It Works
-
At bootup the
MixerApp.exelaunches in the background. Background threads start and monitor the PC’s active applications, volume levels, and Spotify status. -
Once the Galaxy S3 is plugged in via USB, the bundled Android Debug Bridge (
adb.exe) detects it. -
The script uses ADB to automatically set up port forwarding or USB tethering, creating a private network bridge between the PC and the phone.
-
After the bridge is established, the Flask app starts hosting the local web app.
The Display
-
The S3’s web browser navigates to the local IP address where Flask serves up the HTML, CSS, and JavaScript interface.
-
The host PC provides the data in JSON format, where the phone reads it to make changes like move the volume sliders, update the song title, or change the album art.
Actions
-
For media and especially Spotify data, Windows’ media session API is used to pull the info. This info is then cached in
audio_manager.pyto avoid unnecessary requests. -
Audio actions are handled using
nircmd.exeto talk to the Windows Control Panel. -
Other actions like Discord are handled using keyboard shortcuts.
Showcase
The physical mixer and the smartphone are fitted into a cardboard box that’s painted black :D. A 3D printed case would be the next addition to have a more finalized look. Other future additions would include a simple function to easily add/remove buttons and actions into the mixer.
