RoarAudio/Vortrag/Erster Vortrag
- Ziel
- ein Vortrag über RoarAudio und die realtime Audio mixing Problematik vor einem Unixpublikum mit keinen oder kaum Vorwissen zum Thema.
Der Autor
Philipp ph3-der-loewe Schafft, Software Entwickler und Projekt Urheber.
Vortrag
Was ist RoarAudio?
RoarAudio ist ein Soundserver.
Was ist ein Soundserver
Ein Soundserver ist eine Programm das im Hintergrund Audio Daten mischt und das Ergebnis weiter leidet, meist an eine Soundcard.
Soundserver werden benötigt wenn wenn das unterliegende Audio Ausgabe-Gerät nur einen Datenstrom zu einer zeit verarbeiten kann (Single Stream Soundcards). Sie Stellen eine Art virtuelle Soundcard da zu der Programme wie Player ihre Daten schicken können um eine Simultane Ausgabe mit zum Beispiel Notify-Sounds von Chat Clients oder ähnlichem zu ermöglichen.
Sie bieten meist weitere Funktionen wie das Mischen unter berücksichtigung von verschiedenen Pegeln. Einige Soundserver ermöglichen auch die Benutzung von Netzwerken zur Übertragung von Audio Daten zur Wiedergabe auf einer anderen Maschine. Dies Beides kann auch RoarAudio.
Projekt Ziele
Das Projekt verfolgt im Prinzip das Ziel eine leistungsfähige Mischsoftware für den Studio Betrieb zur Verfügung zu stellen aber dennoch ein Produkt zu liefen das auch für den Heim-Anwender angemessen ist.
für Heim-Anwender
Heim-Anwender Teilen sich in zwei Gruppen auf: Die größere Menge interessiert es nicht wieso Musik aus den Lautsprechern kommt, Hauptsache sie tut es. Für diese Gruppe muss RoarAudio einfach out of the box funktionieren. Die Andere Gruppe sind Anwender die mehr machen wollen. Hier soll RoarAudio ein leistungsstarkes Backend sein das möglichst Ressourcen schonend alle gewünschten Funktionen anbietet.
Im Studio Betrieb
Wie Oben schon angedeutet ist RoarAudio aber im Studio Einsatz wesentlich interessanter: In einem klassisches Studio steht meist ein großes analoges Mischpult. Dies ist eine Wundervolle Sache solange man primär Analoge Eingänge braucht: Beispielsweise von einer Band. In Heutigen Radio- und Fernsehstudios kommen aber die meisten Kanäle aus dem Rechner oder anderen Digitalen Geräten wie CD Spielern.
Ein Analoges Mischen hat hier nun mehre Nachteile, die wichtigsten sind wohl:
- Analoges Rauchen
- Verzerrungen im Frequenzgang
- Klirren
- Quantisierungsrauchen
- Effekte durch Asynchrone Abtastung
Eine Alternative wäre in einigen Fällen sicherlich ein Digital-Mischpult. Diese sind aber Meist sehr teuer.
RoarAudio kommt hier als erst einmal rein Software basierende Lösung. Natürlich ist es möglich über die Steuerschnittstellen auch Externe Hardware an zu schließen. Hier gibt es auch Planungen ein Hardware Frontend zu entwerfen das dann Kostengünstig zu haben ist.
Exkurs: Codecs und Container
Ein Codec ist eine Spezifikation (meist werden auch die Implementierungen Codec genannt) wie Rohdaten, im Falle von Audio meist PCM Daten, Als Datenstrom oder -block repräsentiert werden. Hierzu Zählt meist als primäres Kriterium die Kompression. Weitere Informationen wie Synchronisationsdaten können ebenfalls durch den Codec Spezifiziert sein werden aber meist im Container abgelegt.
Ein Container ist im Gegensatz zu einem Codec eine Spezifikation wie Daten die mittels Codecs codiert wurden in eine Datei oder einen Stream verpackt werden. Hierzu Zählen Dinge wie globale File-Magic, Angabe des Codecs, Meta Daten, Angaben über rate/bps/channels und Ähnliches.
Verschiedene Arten von Codecs
- Verlustfreie
- Verlustbehaftete
- Musik Codecs
- Sprach Codecs
- Niederlatenz Codecs
Was hebt RoarAudio hervor?
Hier Sollen einige der Besonderen Fähigkeiten von RoarAudio Erläutert werden.
Codecs
RoarAudio zeichnet sich dadurch aus das er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile:
- Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio im Als Background Stream ab zu spielen.
- Es ist dem Server möglich direkt Streaming-Server wie icecast zu Bedinen. Es ist keine weitere lange pipe nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz da pipe-Puffer entfallen.
- Auch ist nur mit stark komprimierenden Codecs es möglich über dem Heim-Anwender zur Verfügung stehenden Schmalband Anschlüssen Audio entweder von Client zu Server oder zwischen zwei Servern aus zu tauchen. Auch eine Kopplung über ISDN Kanäle ist so möglich.
Netzwerk-Transparenz
RoarAudio ist Netzwerk transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer Lokalen Instanz oder einer auf einem anderen Rechner.
Zu diesem Zweck werden mehre Protokolle Unterstützt: UNIX Domain Sockets für Lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen.
Background Streams
Background Streams sind Streams die vom Server selbst bearbeitet werden und keinen Player benötigen um abgespielt zu werden. Dies kann zum Beispiel genutzt werden um Hintergrundmusik ein zu spielen wie Beispielsweise in einem Kaufhaus. Auch Webradio Streams werden hier unterstützt.
Virtual IO
...
Kompatibilitäts Bibliotheken
Viele Programme haben keine Unterstützung für RoarAudio, was nun?
Um dieses Problem zu lösen gibt es diverse Kompatibilitäts Bibliotheken. Diese Stellen Bibliotheken da welche binär kompatibel andere Audio Systeme emulieren. Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und Leiten dann alle anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechen Bibliothek.
Die mit Abstand wohl wichtigste ist libroaresd welche das EsounD Interface Emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998.
Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den Existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab.
Probleme des Realtime Audio Mischens
- Resampling
- Frame Akkuratität
- Rechenungenauigkeiten und Quantisierungsfehler, Noise-to-Signal-Radio
- Clipping
Problem: Lokale Syncronität
Die wichtigsten Störfaktoren sind:
- Delay in in der Hartware
- Delay im Kernel und Treibern
- Delay in APIs
- Multitasking
- Unsyncrnes clocking
Problem: Netzwerk Syncronität
- lag
- jitter
- Netzwerk Implementierungen
- QoS
Querverweise
...
Vorführung
- Allgemeiner Betrieb
- Background Streams
- Kompatibilitäts Bibliotheken
Fragen
- immer gerne