Audiomixer mit Deej

Wenn man streamt stolpert man irgendwann ĂŒber das BedĂŒrfnis einzelne Programme mit unterschiedlichen LautstĂ€rken zu haben. Entweder regelt man diese in OBS oder ĂŒber den seit Windows 10 vorhandenen LautstĂ€rkemixer des Systems. Beide Varianten sind aber nicht gerade zugĂ€nglich.

Mal zu laut, mal zu leise

Ich war mal wieder am Streamen, gemĂŒtlich redete ich vor mich hin und im Hintergrund lief der Ton des Spiels sowie Musik. Irgendwann hat sich dann ein Zuschauer zu mir in den Stream verirrt und hat mir freundlich mitgeteilt, dass meine Musik zu laut und das Spiel zu leise ist. Bei mir in den Kopfhörern war es eher umgekehrt, aber passte fĂŒr mich. Also durfte ich OBS öffnen und dort bei den einzelnen Quellen rumspielen. Nach ein paar Versuchen war die LautstĂ€rke im Stream dann richtig gemischt.

Auf meiner Seite war das Spiel auf voller LautstĂ€rke, die Musik im Musikprogramm auf 10% gestellt und die LautstĂ€rke der Kopfhörer auf 15%. In OBS war mein Mikrofon auf 100%, das Spiel auf 80% und die Musik auf 70% gestellt. Immerhin im Windows LautstĂ€rkemixer war alles auf 100%. Aber es wird vermutlich schnell ersichtlich, dass es viele Orte gibt, um die LautstĂ€rke von Programmen einzustellen und eine Änderung an einer Stelle zu ungewĂŒnschten Effekten an anderer Stelle fĂŒhrt. Und hören dann alle noch das Selbe?

LautstÀrke zentral regeln

Das Dilemma hat wohl irgendwann auch Microsoft erkannt und mit Windows 10 einen LautstÀrkemixer im System implementiert. Damit lÀsst sich nicht nur die LautstÀrke der Eingabe- und AusgabegerÀte steuern, sondern auch die LautstÀrke aller Programme. Eigentlich eine gute Idee. Nur eines ist nicht gut gelöst: Die ZugÀnglichkeit.

Bei Windows 11 gibt es zwei LautstĂ€rkemixer, die auf unterschiedlichem Weg erreichbar sind. Ich kann auf den Lautsprecher im Systemtray neben der Uhr klicken, dann neben dem LautstĂ€rkenregler auf das LautstĂ€rkemixersymbol und dann scrolle ich nach unten. Oben stehen erstmal alle AudiogerĂ€te, bei mir sechs an der Zahl. Dann kommt die Einstellung fĂŒr den Raumklang und erst dann folgen die Programme.
Die zweite Option ist ein Rechtsklick auf den Lautsprecher und dort auf LautstĂ€rkemixer öffnen. Dann öffnet sich der LautstĂ€rkemixer in dem Systemeinstellungen. Deutlich ĂŒbersichtlicher, aber wieder ein neues Fenster und nicht gerade eine Schnelleinstellung.

Hier sollte sich Microsoft auf jeden Fall Gedanken zur ZugÀnglichkeit machen. Ich fÀnde es gut, wenn bei einem Linksklick auf den Lautsprecher nicht nur die GesamtlautstÀrke einstellbar wÀre, sondern auch alle Programme sichtbar wÀren, die aktuell eine Audioausgabe aktiv haben. Oder wenigstens das aktuell fokussierte Programm. Ist aber leider nicht so. Trotzdem finde ich die Idee gut, die LautstÀrke aller Programme zentral zu steuern.

LautstÀrkemixer mit Hardware steuern

Windows hat also die FĂ€higkeit die LautstĂ€rke jedes Programms einzeln zu steuern. Und wie ich spĂ€testens mit der Tidal Anwendung schmerzhaft lernen musste können Programme diese Einstellung auch verwenden und anpassen. Auch mein Stream Deck\ könnte das. Ich habe aber noch die erste Version ohne Drehregler. Die LautstĂ€rke von Programmen ĂŒber Tasten zu steuern, gerade die eher schwammigen Tasten des Stream Decks, macht wenig Spaß. Ich hatte es zwar eingerichtet, aber dann doch nie verwendet.

Beim Stöbern durch Printables, eine Seite mit 3D Druck Vorlagen, bin ich dann ĂŒber einen Hardware LautstĂ€rkemixer gestolpert. Zumindest das GehĂ€use dafĂŒr und den Verweis auf ein Projekt namens Deej. Deej besteht sowohl aus einer Software fĂŒr Windows als auch einer Firmware fĂŒr Arduino Boards. Als Heimwerkerprofi (hust hust) war ich sofort Feuer und Flamme. Von Projekt werden Schieberegler vorgeschlagen. Das ist mir zu klobig, weshalb ich Drehknöpfe bevorzugte.

Schnell auf Amazon geschaut und gemerkt, so teuer sind die Teile gar nicht. Ein 5er Paket Arduino Nano\ liegt bei um die 20 Euro, und auch 10er Pakete Drehpotentiometer\ werden einem fĂŒr 10 Euro hinterhergeworfen. Ich brauchte aber nur einen Arduino Nano und 5 Drehpotentiometer und habe mir die passende Anzahl, und noch fĂŒnf Meter Verbindungskabel, fĂŒr unter 6 Euro bei AliExpress bestellt. Im Nachhinein hĂ€tte ich aber auch bei Amazon zuschlagen können. Ich habe das GefĂŒhl ich werde noch hĂ€ufiger was basteln.

Deej aufbauen und einrichten

Erstaunlich schnell waren die Teile versandkostenfrei aus China geliefert. Ich hab meinen billigen Lötkolben ausgepackt und einfach drauf los gelötet. Am Ende ist die Verkabelung nicht so schwer, da die Drehpotentiometer nur drei AnschlĂŒsse haben. GND, 5V und das eigentliche Signal. Die GND kommen zusammen an den GND Pin des Arduino, bei 5V alle an den 5V Pin. Nur die Signale werden getrennt an die Analogpins angelötet. Ich hab das mit dem "alle an den Pin löten" sehr wörtlich genommen und vermutlich erzeugt mein Endergebnis bei manchen jetzt Zuckungen.

Aber was solls, es funktioniert. Gut, ich muss sicherstellen, dass die AnschlĂŒsse sich nicht berĂŒhren. Das durfte ich zumindest feststellen, als die Konstruktion wild auf dem Tisch lag, ich sie angeschlossen habe und plötzlich etwas Rauch aufgestiegen ist. Zum GlĂŒck fließt bei einem Arduino nicht wirklich viel Strom.

Aber Hardware ohne Software ist wenig nĂŒtzlich. Ich habe die Arduino IDE runtergeladen, den Arduino eingerichtet und den Code von der Projektseite auf diesen geladen. Kurz die Konfiguration anpassen und die Software starten, schon kann es los gehen. Gespannt habe ich an den Reglern gedreht und es passierte... nichts. Los ging die Fehlersuche. Die Debug Software, die das Projekt auch anbietet, zeigte keine Reaktion. In der Arduino Software habe ich dann den Datenstrom beobachtet. Dieser ergab aber gar keinen Sinn und reagierte nicht auf das Drehen an den Potentiometern.

NĂ€chste Vermutung: Ich war doch zu doof zum Löten. Also habe ich in der Kiste gekramt und den Multimeter rausgekramt. Schnell alle Leitungen durchgemessen. Sieht gut aus. Überall ist Kontakt und die Kabel sind auch richtig angeschlossen. Was ist es dann? Dann fiel mein Blick zurĂŒck auf die Arduino IDE. Dort wurde weiterhin ein aktiver Datenstrom angezeigt, obwohl der Arduino gar nicht angeschlossen war. Langsam wanderte mein Blick zum [MyGamepad]({{< ref "20240815_mygamepad-first-impression-assembly.md" >}}). Display aus, keine Reaktion auf Eingaben, tot...

Tja, die IDE hat wohl beide angeschlossenen Arduinos erkannt. Den ESP32 auf COMM5 vom MyGamepad und den Nano 328P vom Audiomixer auf COMM4. NatĂŒrlich hatte ich den ESP32 ausgewĂ€hlt und den Code auf das MyGamepad statt den Audiomixer gespielt. Also erstmal wieder den richtigen Code mit den DFÜ Tools auf den ESP32 spielen, dann den Deejcode auf den Nano und siehe da. Die Deej Software reagiert auf das Drehen der Potentiometer und der Datenstrom sieht gut aus. Einzig die Richtung passt noch nicht und leiser/lauter sind vertauscht. Das lĂ€sst sich aber einfach in der Deej Konfiguration anpassen.

Fazit zum Deej Audiomixer

Inzwischen klebt der Audiomixer von unten an meiner Schreibtischkante und ist damit schnell erreichbar. Auch wenn das Projekt elektrotechnisch eher einfach ist habe ich dabei einiges gelernt. Ich bin manchmal doch etwas vorschnell und unkonzentriert. ZukĂŒnftig sollte ich mir vorab Gedanken machen, was ich tun will und wĂ€hrend des Tuns bewusster vorgehen. Die ersten beiden Tage war ich etwas enttĂ€uscht, weil der Audiomixer sehr grob reagierte und nur schwer fein einstellbar war. Dann ist mir eingefallen: Ich habe die Abfragerate wĂ€hrend der Fehlersuche auf eine Abfrage pro Sekunde reduziert und das nie rĂŒckgĂ€ngig gemacht. Entsprechend trĂ€ge war der Audiomixer dann auch. Das war schnell behoben, aber zeigt wieder mal wie organisiert ich vorgehe.

Aber jetzt lĂ€uft der Audiomixer wie gewĂŒnscht und ich bin in der Lage fĂŒnf Audiospuren getrennt zu regeln. Ich habe den Audiomixer aktuell so belegt: GesamtlautstĂ€rke, Musik, Spiele, aktive Anwendung, alle nicht zugewiesenen Programme. Dank einfacher Konfiguration ĂŒber eine YAML Datei kann ich das jederzeit und schnell anpassen. Ich habe jetzt fĂŒnf Potentiometer angeschlosse und festgestellt, dass der Arduino acht analoge AnschlĂŒsse bietet. Eigentlich wĂ€re damit noch Platz fĂŒr drei weitere Potentiometer...