We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Das eigene digitale "Mischpult"

00:00

Formale Metadaten

Titel
Das eigene digitale "Mischpult"
Untertitel
Wie man aus billiger Audio-Hardware ein eigenes "Mischpult" baut
Serientitel
Anzahl der Teile
94
Autor
Lizenz
CC-Namensnennung 4.0 International:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
Ich habe mehrere Systeme an denen ich Mikrofone und Lautsprecher anschliessen möchte, das ständige umstecken nervte mich mit der Zeit, also habe ich eine günstige Lösung gesucht wie ich die Audio-Signale verteilen kann. In erster Linie geht es um billige (gebrauchte) USB-Audio-Interfaces die an einem kleinen Rechner mittels Jackd und einiges an weiterer Software miteinander verbunden wurden, dabei entstand für mich der Bedarf an Software die eine einfache Verwaltung von Audio-Pegeln und teilweise auch -Verbindungen erlaubte. Da die meiste Software eher für den professionellen bereich designed wurde und sich nicht ganz so bequem bedienen lässt habe ich mich daran gemacht eigene (relativ) nutzer-freundliche Software zu bauen. Natürlich entstehen dabei auch Ideen für ein Hardware-Interface, evtl. gibt es bis zum Vortrag auch erste Prototypen ;) Das Konzept und die Software soll in diesem Talk vorgestellt werden.
HTTPXMLComputeranimation
HardwareClientInternetBetafunktionApple <Marke>HardwareInformatikstudentInternetSoftware
Notebook-ComputerDatenverarbeitungssystemSwitch <Kommunikationstechnik>NintendoSwitch <Kommunikationstechnik>Notebook-ComputerSmartphoneXMLComputeranimation
SmartphoneNotebook-ComputerSwitch <Kommunikationstechnik>XML
Datenverarbeitungssystem
Lösung <Mathematik>ÄhnlichkeitsgeometrieXMLFlussdiagramm
HardwareUSB <Schnittstelle>BefehlsprozessorPOWER <Computerarchitektur>RoutingComputeranimation
SoftwareComputeranimation
OperatorEigenwertproblemComputeranimation
SchwingungInstanz <Informatik>Instanz <Informatik>SchwingungThreadKanal <Bildverarbeitung>SchwimmkörperSoftwareRichtungEin-AusgabeCodeComputeranimation
KonfigurationsraumEin-AusgabeProgramm/Quellcode
DatenbankSchwingungNetzadresseSchwingungComputeranimation
Array <Informatik>SoftwareEin-AusgabeDiagramm
Computeranimation
USB <Schnittstelle>Hypermedia
ReiheComputeranimation
EckeComputeranimation
DatenverarbeitungssystemComputeranimation
Twitter <Softwareplattform>RichtungComputeranimation
WEBCodeWorkstation <Musikinstrument>DisplayVorlesung/Konferenz
SoftwareDebuggingProgramm/Quellcode
openSUSEComputeranimation
Transkript: Deutsch(automatisch erzeugt)
Hallo, heute erzähle ich euch was über ein kleines Basel-Projekt von mir, das eigene digitale Mischpult. Diese Anführungsstriche werden später noch klar.
Erstmal zu mir, ich bin Lukas Schauer, ich studiere hier, 25 Jahre alt, Informatikstudent halt und mache halt in meiner Freizeit viele Dinge mit Software und Hardware. Dazu gehört unter anderem, dass der Let's Encrypt Client Dehydrated, das Internet of Bats Projekte, über das ich vor, ich glaube, zwei Jahren erzählt habe und viele kleine
Bastelprojekte. Und dazu gehört auch dieser Vortrag bzw. das Projekt dahinter, das eigene Mischpult. Außerdem mache ich noch so ein bisschen Security-Zeug, aber das ist alles hobbymäßig. Ja, dann beschreibe ich doch erstmal mein Problemszenario, wie es überhaupt zu diesem
Projekt gekommen ist. Und zwar habe ich auf meinem Schreibtisch viele verschiedene Dinge stehen. Das fängt mit meinem Laptop an, ein paar Lautsprecher dazu, soweit ist ja noch eigentlich ganz einfach. Dann kommt noch so ein Gaming-Rechner dazu, weil so ein Notebook und vor allem Linux, das ist für Gaming nicht so gut, kam letztendlich irgendwann so ein Nintendo
Switch dazu, manchmal liegt das Smartphone noch auf dem Tisch und dann ist es irgendwie schon so ein bisschen schwieriger, vernünftig Audio hinzubekommen. Da kann man sich jetzt überlegen, es gibt halt super günstige Analog-Mixer, die
gibt es irgendwie für unter 100 Euro mit X-Inputs und die taugen eigentlich auch halbwegs vernünftig für so ein bisschen privates Audio. Aber ich habe da noch so ein paar spezielle eigene Probleme gehabt und zwar habe ich auf dem Schreibtisch auch ein Mikrofon stehen. Dieses Mikrofon benutze ich für Sprachkommunikation, für die Arbeit, aber auch
teilweise halt beim Gaming. Jetzt ist es so ein bisschen schwieriger. Wie kriege ich halt das Audio von diesem Mikrofon auf den Rechner und das Audio vom Rechner irgendwie auf meine Lautsprecher, auf meinen Kopfhörer oder sonst was? Genau, und der Kopfhörer dazu. Und dann gibt es noch so ein paar Sachen, wie zum Beispiel wenn ich
eine Pausenmusik in eine Konferenz einspielen möchte oder sowas. Das sind halt so Spässe. Es muss eine bessere Lösung her. Dann habe ich mich erst mal umgeguckt und dann bin ich auf Digitalmixer gestoßen. Also wir benutzen hier zum Beispiel für unsere Videoaufzeichnung auf der Froskon die QSC Touchmixer.
Das sind halt so Digitalmixer, die haben einen Haufen Inputs, einen Haufen Outputs und man kann damit so ziemlich machen, was man möchte. Das Problem dahinter ist, das, was da rot eingerahmt ist, der Preis. 830 Euro für mehr oder weniger ein Spielzeug ist dann halt doch irgendwie
ein bisschen teuer. Ähnliche Lösungen kosten halt das Ähnliche. Von daher bringen da auch andere Firmen nicht viel. Es muss also eine eigene Lösung her. Dazu habe ich mir so ein bisschen Gedanken gemacht und zwar gibt es relativ günstige Linux-Systeme.
Hier abgebildet ist zum Beispiel das PC Engine's APU 2 Board, aber zum Beispiel auch so ein Raspberry Pi oder sowas, was glaube ich gerade 30 Euro kostet oder so. Das hat einigermaßen CPU Power und sollte eigentlich in der Lage sein, so ein bisschen Audio hin und her zu bespaßen. Dazu gibt es halt super günstige USB Audio Interfaces,
links oben abgebildet ist zum Beispiel ein UCA 222 von Behringer. Das hat einen Stereo Input, einen Stereo Output, irgendwie noch Kopfhörer Preview und sonst was und das kostet halt irgendwie unter 20 Euro.
Dazu kann man halt irgendwie noch so ein teures Interface nehmen, das hatte ich vorher schon rumliegen für mein Mikrofon und für meinen Kopfhörer, kommt halt noch dazu. Das ist so die Hardware, von der ich irgendwie gedacht habe, damit könnte man doch super irgendwie sich so ein bisschen Audio Routing basteln. Ja, dann habe ich irgendwie rumgeguckt, so was gibt es eigentlich softwaremäßig?
Dann bin ich zum Beispiel auf die Non-Audio Suite gefunden, gestoßen und da gibt es den Non-Mixer. Das ist eine große Software, die irgendwie mit dem Jack-Audio-Demo zusammenspielt und ja, letztendlich ein großer Mixer ist, den man frei konfigurieren kann mit
Effekten und sonst was, alles Mögliche dabei. Aber, das ist mir zu clicky bundy. Das ist nicht irgendwie darauf ausgelegt, dass ich das als dediziertes Gerät irgendwo hin packe und das läuft und es kann auch mal ausgehen und angehen, sondern es ist irgendwie mehr darauf ausgelegt.
Da sitzt ein Operator davor, der dieses Ding bedient. Das Gefühl hat man auch, wenn man sich die Apis von dem Ding anguckt, das spricht zwar Open Sound Control, das tut es aber irgendwie auch nur auf der Input-Seite und irgendwie nicht auf der Output-Seite. Dann habe ich mir gedacht, dann baue ich halt was Eigenes.
Codename Jackie, weil Jack-D der Audio-Demo ist und zwar ist das eine Sammlung von Python-Modulen, die letztendlich andere Software verwaltet. Da fange ich an, letztendlich mit Audio-In und Outputs, dafür gibt es die CITA-Programme.
Die können von ALSA zu Jack und von Netzwerk zu Jack und in viele andere Richtung Audio halt routen. Und die sorgen letztendlich dafür, dass meine Inputs und Outputs, die ich da dran hängen habe, überhaupt erst mal zur Verfügung stehen. Dann brauchte ich noch ein bisschen Kram für Lautstärke-Steuerung da drin.
Da werde ich gleich noch genauer drauf eingehen. Einen Connection-Manager, der dafür sorgt, dass alle In- und Outputs an den richtigen Stellen auch angeschlossen werden und noch einen Volume-Manager, was letztendlich so die User-Facing-Seite ist, auf der ich dann selber meine Einstellungen vornehmen kann.
So, mein Aufbau ist letztendlich, dass ich dem Jack-Audio-Demo, der normalerweise darauf ausgelegt ist, volle Kontrolle über das Audio-Interface zu haben, überhaupt kein Interface gebe, sondern da ein Dummy-Interface mit null Out- und Inputs gebe und alles, was sonst dazu kommt, wird über Zita gemanagt oder über
andere Wege. Dabei habe ich theoretisch ein Problem, dass der Takt von den Audio-Interfaces auseinander läuft. Das hat aber in meinem privaten Umfeld überhaupt keine Probleme bereitet. Deshalb stört mich das überhaupt nicht, dass das
letztendlich mehr oder weniger gegen den ersten Satz, in der Jack-D-Dokumentation stößt, wo erwähnt wird, man soll es doch bitte nur mit einem Interface nutzen. Ja, für die Lautstärke-Steuerung. Wie man vorhin schon bei dem Non-Mixer gesehen hat, irgendwie, man muss halt so ein paar Fader haben oder sonst was.
Bei mir ist das jetzt rein im Backend so ein bisschen Software. Ich habe da mit Jack-Mini-Mix angefangen. Das ist ein Jack-Audio-Mixer, der sich komplett über OSC steuern lässt. Und der lässt sich auch wirklich komplett steuern, nicht nur an manchen Aspekten. Das war mir aber ein bisschen zu viel Code, vor allem, weil ich in meinem Setup sehr viele
Instanzen davon gestartet habe, damit das ein bisschen dynamischer wird. Und deshalb habe ich das ganze Ding abgespeckt. Das heißt jetzt Jack-Nano-Mix. Ich habe den kompletten OSC-Code rausgeworfen und das Ding nimmt seine Lautstärke-Einstellung jetzt über einen Standard-Input an. Da gibt man einfach einen Float ein und dann
war es das. Das sind dann zwei Kanäle pro Mixer-Instanz, damit es Stereo ist, und die alle werden halt von meinem Pfeifenhaufen da gesteuert. Dann gibt es den Connection-Manager. Das ist letztendlich so ein bisschen Code, wo ich halt sage, was ich an In- und Outputs habe.
Das sind dann halt im Backend die Zita-Prozesse, die da laufen. Und dann sage ich, okay, ich hätte jetzt gerne alle Inputs auf allen Outputs. Das ist momentan meine super simple Konfiguration. Also man kann da erkennen, gerade Inputs MIG 1, MIG 2 und Line in 1.
Und die Outputs sind der Main-Mix und Line Out 1. Und darunter ist ein Stück Code, was die einfach nur alle miteinander verbindet. Die eigentliche Arbeit, wie dann Kram zu hören ist, macht dann der Volume-Manager. Der redet nämlich mit diesen Mixer-Instanzen,
die vorher gestartet wurden, speichert Lautstärken in der SQLite-Datenbank und bietet mir ein zentrales OSC-Interface an, in dem ich alle diese Mixerelemente steuern kann und das auch, ja, ein bisschen dynamischer halt einfach ist.
Ich kann neue Sachen dazuwerfen, Sachen entfernen und trotzdem funktioniert halt dieses Interface immer noch und alle Namen sind statisch. Ich habe da keine Probleme, dass sich irgendwie eine Adresse ändert oder so. Und als Spaß habe ich da auch noch eingebaut, dass der tatsächlich Motor-Fader ansteuern kann. Da werde ich gleich noch was zu zeigen.
Ja, zu dem OSC, da gibt es so eine schöne App, die heißt Touch-OSC. Das ist so mein Hauptinterface letztendlich für diesen Mixer. Ich habe mir in meinen Mixer eine Software noch eingebaut, die mir dieses Layout generieren kann mit den unterschiedlichen Tabs für die Outputs und den Feldern
für die Inputs. Darunter sind Mute-Buttons und so weiter. Und ich kann das jederzeit einfach updaten und habe dann das aktuelle Layout auf dem Handy und kann von da aus meine Lautstärken steuern, egal wo ich in meiner Wohnung bin. Tatsächlich sogar egal, wo in der Welt ich gerade bin. Ja, zu Fader-Spaß
habe ich ein paar Videos vorbereitet. Gucken wir mal, ob das geht. So, ich habe mir ein gebrauchtes Behringer BCF2000 gekauft und das ist ein Motor-Fader-Gerät,
was sich über USB und über Media ansteuern lässt. Das Protokoll habe ich reverse inginiert und dann habe ich erst mal so ein bisschen rumgetestet. Also das ist jetzt einfach nur random Werte. Man kann sehen, dass oben die Encoder auch irgendwie Sachen anzeigen und so weiter.
Ja, nachdem ich damit halt durch war, habe ich dann tatsächlich mal sinnvoll Sachen damit gemacht. Man kann das so ein bisschen schwer lesen, aber in der oberen Reihe stehen tatsächlich meine Input-Namen, meine Output-Namen und in der unteren Reihe stehen
meine Input-Namen. Die oberen Button sind die Selection für den Kanal, den Output-Kanal und die unteren sind die Mute-Buttons. Und dann kann ich halt diese Output-Kanäle durchgehen und da, wo Audio ist, sehe ich dann entsprechend die Pegel.
Jetzt ein bisschen leise, aber man kann auch hören, dass sich tatsächlich das Audio-Signal da verändert, wenn man rumregelt. Ja, also das sind nur die Experimente, die ich damit gemacht habe. Das Ding habe ich aber am Ende tatsächlich weiterverkauft, weil ich dafür einfach nicht
genug Platz hatte und das immer in der Ecke stand und es irgendwie schneller war, das Telefon kurz rauszuholen oder es lag eh schon auf dem Tisch, als irgendwie da hinterzugreifen. Dazu kommt noch ein Haufen Kleinkram und zwar habe ich dazu noch einige System-D-Units, die den ganzen Kram starten, wenn der Rechner bootet.
Ich habe Udof-Config gebaut, damit meine Audio-Interfaces, wovon ich drei identische habe, von diesen kleinen Ein-Input, Ein-Output-Teilen, damit die alle startische Namen haben und nicht irgendwie random durchnummeriert werden. Ein bisschen Debuss-Kram für Permissions und noch ein
bisschen anderer Kram. Ja, und da dieses Projekt noch nicht fertig ist, ist das jetzt auch leider quasi schon das Ende von meinem Vortrag. Das war jetzt eigentlich nur mal so eine Auflistung von dem, was ich gemacht habe und eigentlich wollte ich auch mal
so nachfragen. Vielleicht sind hier Leute, die irgendwie so ein bisschen Ahnung davon haben und vielleicht noch Vorschläge haben, in welche Richtung man sich mal umgucken könnte, wenn man da noch ein bisschen mehr bauen möchte. Oder falls jemand Fragen hat, ist das natürlich auch okay. Warte mal, du kriegst ein Frage-Mikrofon.
Ich habe das jetzt gelesen, dass ein Blender-Musiker dieses Hardware-Mischpult da nutzt, dieses Behringer BCF. Okay, ja.
Um damit Audio-Software fernsteuern zu können, die sonst halt nur häufig mit der Maus bedienbar ist. Und so habe ich, kann ich dann immer die Schalter-Stellung gleich ertasten. Ja, genau. Dafür ist so ein Interface halt praktisch für Leute, die halt irgendwie entweder nicht aufs Display gucken können
oder wenn man auch einfach schnell irgendwelche Sachen umschalten möchte, weil so ein Hardware-Interface ist halt schon wesentlich angenehmer, vor allem wenn man mehrere, wenn man wesentlich mehr Sachen steuern möchte, als ich da jetzt habe. Und das ist halt darauf ausgelegt, normalerweise auch so diese Audio Workstations zu steuern. Ich habe jetzt natürlich hier
komplett Custom Code halt dafür, weil ich mich so ein bisschen entfernt habe von den professionellen Sachen. Ja.
Eine kurze Frage. Du hast Code gezeigt, wo du sagst irgendwie, wie du die verdrahtest, da hast du irgendwie alle Eingänge auf alle Ausgänge. Wenn du das jetzt ändern willst, hast du für alle deine Setups irgendwie dann Code, die das neu viert? Die Sache ist aktuell, ist das halt noch so ein Prototyp.
Die Idee, die ich am Ende habe, ist tatsächlich, einen Web-Interface zu haben, bei dem man sich ohne große Schwierigkeiten halt neue Verbindungen dazu ziehen kann und auch sagen kann, ich habe hier ein neues Audio-Interface. Das hat den Namen. Bitte lad das mit dazu. Und die Software hat theoretisch auch schon Support dafür. Also ich kann mich da auch mit einem Debugger dranhängen und Interfaces rauslöschen
und die werden automatisch entfernt, neu hinzufügen und die werden automatisch richtig verbunden. Also das funktioniert schon. Aber das Interface fehlt halt noch. Sonst keine Fragen, Anregungen mehr? Gut, dann würde ich hier
auch schon aufhören und danke euch für eure Aufmerksamkeit.