LAHA und die Latenzfalle

Kleines Update zu LAHA, dem Multiroom Sound und PulseAudio.

Stand der Dinge

Wie man es drehen und wenden will, die fertigen Tools zum Abspielen von PCM Sound haben alle irgendeine Macke.

PAPLAY benutzt PulseAudio. Das ist praktisch ein Todesurteil für eine stabile Latenz.
APLAY   benutzt Alsa, das defaultmäßig … PulseAudio benutzt. Siehe erstens 🙂
*JACK*  nun Jack möchte gern alleine tätig sein, ohne Konkurrenz. Fällt auch aus.

Da APLAY und PAPLAY per Default einen PA Stream zum Abspielen benutzen, haben beide in der Form das gleiche Problem: Die Audiolatenz des Playstreams steigt mit der Zeit an. d.b. alle anderen Geräte müßten mitwandern. Blöd nur, das Androids gar keine Latenzwanderung haben und selbst wenn Sie es hätten, wäre das eine blödsinnige Lösung. Jetzt fragt Ihr Euch natürlich: was labbert der da? Da muß man jetzt weiiiiiit ausholen.

Also, wenn man mit PAPLAY Sound ausgibt, geht PAPLAY zum PAServer und sagt dem, das DER eine Latenz wählen soll. Das macht der dann auch, nachdem die ersten Daten geflossen sind und die pegelt sich mit 16Bit Stereo und 48000″hz“ bei rund 1,9s ein. Richtig gelesen 1,9 Sekunden. Nach 40 Minuten sind wir bei knappen 5 Sekunden, wenns dumm läuft. Wenns gut läuft bei 2,4s . Das entscheidet PA selbst, ich nehme an, nach internen Fehlberechnungen aller gestarteten, gestoppten, bewegten etc. Streams die auf dem System drauf sind. Ich hab es noch nicht im Source gefunden. Es ist eigentlich das Ziel eines Audioservers die Latenz niedrig zu halten, aus irgendeinem Grund, ist dem PA-Latenzalgorithmus das egal.

Wenn man jetzt denkt, daß der Befehl ja eine OPTION für die gewünschte Latenz hat und sich schon freut, daß die dann ja als Ziel eingehalten wird .. ähm ja, also wie soll ich das Schreiben ohne verklagt zu werden??? Lieber nicht, hier ein Beispiel: 500ms angegeben, Latenz beginnt bei 320ms und wandert pö-â-pö so Richtung 500ms, durchbricht den Median, und verschwindet alsbald jenseits von Gut und Böse im Sekundenbereich.

Wenn man auf die glorreiche Idee kommt, da das anzugeben, was der Algo vorher selbst ausgerechnet hat, dann bekommt man nicht 1,9s , nö, mehr so 1s+- und dann kommt das gleiche Spiel wie vorher bei 500ms.
Ja, man könnte jetzt die PAPLAY-Routine kapern, den anderen Geräten die Latenzen mitteilen und denen somit zu einem Sync verhelfen. ABER.. die Latenz wird ja immer größer, was bedeutet, daß bei jedem neuen Sync mehr Zeit vergeht, bis man was hört. Also auch mal 5 Sekunden schwarzes nichts. Das ist hochgradig Inakzeptabel.

Bugreports sind raus, werden nicht helfen, weil (C) endet 2006 . Sieht nicht so aus, als wenn da wer dran arbeitet.

Kommen wir zu ALSA

APLAY kann ALSA-Devices direkt ansprechen. Warum nutzen wir dann nicht APLAY, statt PAPLAY ? Gesagt, getan. Versuchts mal, viel Glück dabei. Das geht mit etwas Glück genau einmal und auch nur auf einem Device, aus das PA grade nichts ausgibt. Ist auch klar, weil PA ja ALSA als Unterbau hat. Wir erinnern uns, daß PAPLAY 1,9s Latenz hatte. APLAY, wenn man ein Device findet, das geht, hat 0ms und das Startdelay ist nicht ganz so funktional, wie sich APLAY das wünscht aka. auch buggy. ABER, 0ms sind cool, weil Android auch 0ms haben kann, ohne dabei drauf zu gehen. Der Lesezugriff für Netzwerkdaten für „16 Bit Stereo 48k“ auf einem Android liegt bei 1ms. d.b. nimmt man ALSA als Player und bekommt das Device frei, hat man eine echt geile Latenz von 1-2ms und das hört man nicht!

Der Resync

Jetzt gibt es allerlei Hürden, die man umschiffen muß. Androids fliegt das eigene Multitasking um die Ohren, da fängt der Ton dann an zu stottern. Vorwarnung : keine. Gegenmaßnahmen: derzeit unbekannt.Das funktioniert auf dem Desktop etwas besser.

Bei 0ms Latenz ist der Resync instant, da könnte man versucht sein, einfach pauschal alle paar Sekunden mal helfend durch einen Socket.close();Socket.connect() einzugreifen. Könnte klappen, muß nicht.Ist aber eine Option, wenn der Wiedergabetask das nicht merkt. Geheimtip: Vorsicht vor doppelten Daten im AudioBuffer. Vergleicht mal, ob Ihr nach dem connect()+read() einen Teil davon schon habt und schmeißt den raus.

LAHA

Unser ControllCenter steuert jetzt bereits beliebig viele Devices, kann Audiostreams von laufenden Apps kapern, z.b. MPV, FireFox etc. , hat diverse Backends zum Abspielen auf dem Desktop, könnte verschiedene Musikplayer als Quelle nutzen und damit auch Last.FM, Spotify etc. realisieren. Er verschiebt Metadaten, findet neue Geräte im Netz, erlaubt Endgeräten mit Screen ihn fernzusteuern und hat bereits erfolgreich ein Handy als Drahtloskopfhörer für Videos laufen gehabt. Dank MPVs negativer Latenz und der frei einstellbaren Endgeräte Latenz, kann man alles perfekt ausrichten 🙂

Wir sind also auf dem richtigen Weg. Ob das allerdings vor Weihnachten 100% zuverlässig läuft, kann ich nicht garantieren. Trotz des ganzen Frustes mit den Bugs der Anderen, hat das Projekt endlich mal wieder Spaß beim Programmieren beschert. Und das ist doch, weswegen man es tut, oder nicht 😀

Linux – Pulseaudio HDMI Sink umbenennen

Im deutschen Fußballspiel bei der WM in Russland ist einiges im Argen, so auch in Pulseaudio 🙂 Seit meinem Upgrade auf Fedora 27 haben meine Pulseaudio Sinks andere Namen bekommen und die sind zum Teil echte Monster 🙂

Sinks auflisten

Schauen wir uns erstmal den Ist-Zustand an :

[marius@eve ~]$ pacmd list-sinks|grep -E „(name:|description)“
name: <alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1>
device.profile.description = „Digital Stereo (HDMI 2)“
device.description = „GP107GL High Definition Audio Controller Digital Stereo (HDMI 2)

Wenn man jetzt in der PA Lautstärkenkontrolle die Selectboxen mit den verfügbaren Audioausgängen anklickt, springt einem so ein Name natürlich ins Auge. Viel zu lang 🙂

Das können wir ändern

Dafür gibt es den Befehl „pacmd“ . Der kann einiges mit PA anstellen, aber da wir nur den Namen updaten wollen, ist es eigentlich recht simple:  pacmd befehl option1 option2 …

Wir brauchen als Befehl update-sink-proplist und dazu das Audiodevice das wir ändern möchten und natürlich das Feld, welches wir anpassen müssen.

Beispiel:

pacmd update-sink-proplist alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1 device.description=“HDMI2-(Stereo)“

Wenn man jetzt ein Leerzeichen im Namen haben will, wie das ja wohl möglich sein muß, weil es ja vorher auch drin war, dann hat man ein kleines Problem, denn der Kommandozeilenparser von pacmd hat einen Bug: Er kann keine Leerzeichen verarbeiten 😉

Wenn man das braucht, muß man den Interaktiven Modus wählen:

$ pacmd
Welcome to PulseAudio 11.1-rebootstrapped! Use „help“ for usage information.
>>> update-sink-proplist alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1 device.description=HDMI2 (Stereo)
>>>

Wenn man jetzt in dem Modus „exit“ zum Verlassen der Konsole  eintippt, dann passiert nicht was man erwarten würde, denn „exit“ steht für Pulseaudio-Exit und beendet den Server 😉 Wer da raus will muß mit CTRL+C arbeiten… allgemeines Kopfschütteln ..

Anmerkung:

Das ist leider keine permanente Einstellung, daß muß man nach jedem Start machen.

Pulseaudio, Mumble und der Korken

Wenn man auf einem modernen Audiosystem wie unter Linux, verschiedene Sounds gleichzeitig abspielen will, kann es Konflikte geben, was man definitiv hören will und was nicht. Einige Entwickler haben daher Prioritätsklassen für bestimmte Soundapps implementiert.  Da wären „Games“,“Phones“,“Musik“,“Apps“ und alle anderen 🙂

Den Korken benutzen

Wenn man als VOIP Anwendung z.b. ein Klingel abspielt, dann sollte das Priorität vor der Musik haben, so daß man das auch hören kann, genau wie das resultieren Gespräch. Gleiches kann auch für Gruppenchats wie Teamspeak oder Mumble gelten. Damit das klappt, gibt es das „module-role-cork“ von PulseAudio. Ist das in der /ect/default.pa aktiviert, funktionieren diese Sachen, weil jede Anwendung Ihrem Soundstream die Role mitgibt, die ihm zu kommen sollte.

Wenn man das Module deaktiviert, sind alle Sounds wieder gleichrangig.

… oder doch nicht ?

Mumble, eins der Backbones der modernen Spielewelt, zusammen mit Teamspeak vermutlich das meistbenutzte VOIP Gruppenchattool, hat sich gedacht: Hey, wieso darauf verlassen ? Machen wir doch einfach eine Funktion, die alle anderen Anwendung leiser macht, während jemand redet!

Das kann man in den Mumble Einstellungen einstellen und das sollte aus sein, bis… ja bis ein Update die Konfig schrottet und man plötzlich denkt, daß PulseAudio durchdreht, weil module-role-cork aus ist, es aber doch stattfindet 😀

Wie man es abschaltet

In den erweiterten Einstellungen  -> Audioausgabe die beiden Boxen „Während andere Benutzer sprechen“ und „Während Sie sprechen“ abschalten. Fall gelöst :

Mumble Audioprefs

JackD – Der Störenfried

Völlig überraschend kam heute für mich ein Ausfall des Hauptaudiodevices im Pulseaudio, nämlich das Interne Audio Device vom Mainboard. Das Mainboard ging aber noch und ansonsten gab es auch kaum interessantes zu melden, außer, daß die Programme die Audio benutzen wollten alle im Mixer festhingen.

Was konnte also die Ursache sein ?

In solchen Fällen wird es hilfreich sein,  also-info.sh zu starten und mal einen Blick in die Ausgabe zu werfen. Gedacht, getan:

!!Sound Servers on this system
!!----------------------------

Pulseaudio:
      Installed - Yes (/usr/bin/pulseaudio)
      Running - Yes

Jack:
      Installed - Yes (/usr/bin/jackd)
      Running - Yes

Was zum Geier ist Jack ?

Der Gedanke kam mir zwar nicht, aber wer es nicht weiß, unter Linux Audiosystemen gibt es die großen drei Alsa, Jack und Pulseaudio. Auf Fedorasystemen ist die Kombination aus Alsa und Pulseaudio im Desktopbereich normal. Jack führt eher so ein Nischendasein, was aber einige Tools nicht davon abhält auf Jackkomponenten zuzugreifen z.B. Calf , weswegen es auf einem Desktop durchaus vorhanden ist.

Ok, es war da, aber was hat das mit dem Ausfall zu tun ?

Wie wir oben sehen können, liefen zwei SoundServer und das kann nicht klappen, wenn man nicht jedem der Server sagt, für welches Device er zuständig sein soll. Könnte ja sein, daß man eine SpezialSoundkarte im Einsatz hat mit der man professionell Musik machen will, da könnte das schon Sinn machen, diese von Jack verwalten zu lassen, besonders da Calf auf Jack aufbaut.

Durch ein ungünstiges Zusammenwirken vom „Dicken-Finger-Syndrom“, „Hast“, „Tippfehler“ und „Cinnamon“ wurde versehenlich Calf gestartet, was ich noch nie gesehen hatte und auch nie wieder sehen will, denn es hat einen lausigen ersten Eindruck gemacht 😉 Der Start von Calf führte zum Start von Jack und da Jack dumm wie Stroh zu sein scheint, griff sich der Soundserver die Interne Soundkarte von Mainboard und mein Sound war weg.

Abhilfe schafft …

einfach mit „killall jackd“ als Root töten und danach Calf und Flowblade deinstallieren. Problem solved 😉

PulseAudio 9.0 erschienen

PulseAudio 9 ist da und lang ersehnte Änderungen wurden umgesetzt.

Sampleraten bis zu 384 kHz möglich

Bislang hat PulseAudio die Sampleraten auf 192kHz begrenzt, was ok ist, wenn man Hifi als Standard nimmt. Mit 384 kHz kann man endlich richtig gute FLAC Aufnahmen wiedergeben, wenn die Audiohardware mitmacht. ALSA, die Advanced Linux Sound Architecture, und Grundlage für Audio auf so fast jeder Linux Distro, braucht die 384 KHz, wenn es Mehrkanaldatenströme abspielen will. Die Macher von PulseAudio weisen darauf hin, daß diese MehrKanaldatenströme noch nicht unterstützt werden, die 384 kHz aber die Voraussetzung sind, es später zu tun. Hoffen wir auf das baldige erscheinen.

Vorgehensweise für Auto-Detection verbessert

PA9 verbessert das logische Verhalten vom Mixxer, wenn Wiedergabegeräte im laufenden Betrieb verschwinden, z.b. weil jemand den Kopfhörer rauszieht, den HDMI Monitor ausschaltet usw.
Kommt so ein Device wieder zurück, ohne das der Benutzer in der Zwischenzeit am Mixxer etwas anderes eingestellt hatte, merkt sich PA9 die alten Einstellungen und stellt Sie wieder her, was meint, daß z,B. besagter Kopfhörer wieder reingesteckt wird und die Wiedergabe sofort dahin umgeleitet wird, weil es vorher auch schon so war.

Beamforming

Was ist Beamforming ? 😀 Ok, wenn man ein ganzes Rudel von Mikros hat, kann man die nun auf einen Punkt ausrichten und das, was alle Mikros laut aufnehmen, wird noch lauter, und alles andere wird leiser. Damit kann man z.b. unerwünschte Nebengeräusche dämpfen und die Sprecher auf einem Podium hervorheben. Das fällt wohl unter Studiotechnik und wird ganz sicher hier im Blog nochmal vorgestellt. Ganz sicher 🙂

Corking

PA9 verbessert den Umgang mit Datenströmen die spezielle Rollen haben. Ein Datenstrom von Skype z.b. ist als „Voice“ getaggt und dementsprechend hat er Vorrang z.b. vor Musik, eine lästige Voreinstellung der man üblicherweise den gar ausmacht, sobald man das mal gefunden hat 😉 Jedenfalls kann man mit PA9 auch Ströme ohne besondere Rolle in seine Konfiguration mit einbeziehen.
Jemand der hier Änderungen vornimmt, hat schon sehr spezielle Vorstellungen von seinem Audiosystem.

LFE remixing wieder abgeschaltet

LFE, das sind besonders tiefe Frequenzen für Subwoofer, und da der LFE Filter nicht richtig funktioniert, ist er defaultmäßig in PA9 abgeschaltet, was Euren Subwooferausgang stumm schaltet. Also nicht vergessen: nach dem Update wieder einschalten.

Es gibt noch mehr Änderungen, aber die sind sehr spezielle und für „Benutzer“ wohl eher uninteressant. Wer es nachlesen will, hier ist der Link.

Wann PulseAudio 9 in Fedora einziehen wird, werden wir sehen.

Pulseaudio – 15 Multiband Equalizer

Wollt Ihr es so richtig krachen lassen !? WOLLT IHR DAS !?!

Dann ist das hier Euer neues Spielzeug, der 15 Band Equalizer für Pulseaudio als Fedora Build 🙂

Pulseaudio-EqualizerDa es sich im ein Plugin für Pulseaudio handelt, profitieren sofort ALLE Anwendungen davon. Natürlich nur wenn man das will, schliesslich kann man alle Ausgaben der Programme auch wieder direkt an das „ungepimpte“ Ausgabedevice senden.

Kleiner Schönheitsfehler: Wenn man Buttons wie „Apply Settings“ benutzt ruckts kurz im Playback. Das ist unschön.

Dafür hat das Plugin eine Mörderverstärkung auf Lager die den QMMP Equalizer ganz bequem in den Schatten stellt. Beim ersten unbedarften Ausprobieren der Regler wären meinem Kopfhörer fast die Membranen gerissen ( Nein, ich übertreibe nicht, ich meins ernst. ) . „Mörderverstärkung“ trifft es sehr gut.

Wo bekommt man das Plugin her ?

Entweder aus dem Systemrepository von Fedora oder aus dem Koji Buildsystem. Ich habe Euch die Koji Links rausgesucht :

Download Section:

Koji Link für Fedora 23 32/64 : pulseaudio-equalizer-2.7-16.fc23( RPM )

Koji Link für Fedora 24 32/64 : pulseaudio-equalizer-2.7-17.fc24( RPM )

Koji Link Fedora : für alle verfügbaren Builds

… und jetzt freu ich mich auf Mombasa vom Inception Soundtrack played by 2Cellos, das wird knallen!

Linux, Android und die PA

Nein, die PA ist keine unbekannte Regulierungsbehörde für Linuxe aller Art 😀 Eine PA meint die Beschallungsanlage auf Veranstaltungen deren Zielgruppe das Publikum ist.

Aber was hat das mit Linux zu tun ?

Wer mein Blog beobachtet hat, wird wissen, daß ich eine ganze Reihe von Beiträgen zum Thema Audiodatenströme im Netz veröffentlicht habe. Wir können von Linux an Linux senden, von Linux an Android und von Android zu Linux , aber eins hatten wir bislang nie: Livestreaming.

Ok, so ganz stimmt es nicht, weil Pulseaudio jede angeschlossene Tonquelle umrouten kann, und damit auch Liveton, aber von Android hatten wir das bislang nicht. Das wird sich jetzt ändern.

Wir brauchen :

Android: AirAudio
Linux: Rygel ( oder Kodi )

Ein Wort zu Kodi.. vieles von dem, was ich hier schon vorgestellt habe, geht auch mit Kodi als Empfänger und das sogar einfacher, weil Kodi ein echt gutes Produkt ist. Allerdings hat Kodi den Nachteil, daß es recht groß ist, weswegen kleinere Lösung preferiert werden. Leider hat es auch eine 6 Sekunden Verzögerung mit dem was wir heute machen wollen und das geht gar nicht 🙂

Erstmal Rygel starten

Zunächst mal starten wir Rygel in der Konfiguration vom letzten mal. Kleines Update dazu: man benötigt GStreamer für Rygel und da das MP3 Decoder Plugin sonst geht es nicht. Ich selbst hatte auch Probleme Rygel auf meinem Laptop zum Laufen zu bringen, wenn es nicht will  -> Kodi nehmen.

AirAudio starten

Groß konfigurieren muß man AirAudio nicht, aber ein paar Anmerkungen sind angebracht. Das Programm kann an fast alle gänigen ( und ein paar mir völlig unbekannte Produkte ) Daten senden. Wenn man AirAudio das erste mal startet, streamt es das ins Handy eingebaute Mikrofon ins Netz, es kann aber auch die Ausgaben von fast jedem installierten Programm als Quelle benutzen, weil es die Lautsprecher anzapft 🙂 Wir brauchen das Mikro.

In den Einstellungen tragen wir für AirPlay eine Verzögerung von 0 Sekunden ein, 0,5 Sekunden wäre wohl auch noch möglich, aber man sollte immer bedenken, das die PA auch noch eine Verzögerung hat und nichts ist schlimmer, als wenn der Sprecher schon irgendwas macht, aber aus der PA noch Texte von vor 10 Sekunden kommen 😉  Ist das Netz stabil, sind 0,0 Sekunden vollkommen ok.

Screenshot_2016-05-14-18-38-00

Android – AirAudio

Wenn man schon beim Konfigurieren ist, kann man gleich noch bei DLNA MP3 einstellen. Das hat zwar heute keine Auswirkungen, aber wenn man z.b. mal seine Familie beim Smartfernsehen beglücken will … 😀 Mit diesen Apps läßt sich soooooviel Spaß haben .. Totenkopf oder bei Internetaffineren Anonymous Logo aufm TV, oder man steht vor der Tür und „klopft digital an“.. Möglichkeiten ohne Ende 😉

Wenn wir mit Konfigurieren fertig sind, aber meisten schon beim Einschalten der App, finden wir eine Liste mit „Listenern“ zu denen wir Senden können. Es ist kein Multicast im Spiel, also sendet man i.d.R. nur an einen Empfänger. Man kann in der Liste aber auch mehr als einen anschalten. Wo ich grade so drüber nachdenken, macht das auf verteilten Veranstaltungen Sinn, wenn verschiedene Räume mit mehreren PA genutzt werden. Bei wichtigen Durchsagen, z.B. wenn es brennt oder etwas andere wichtiges passiert ist, könnte man sich bequem überall draufschalten.

Wenn es dann geht …

sieht und hört man das im Pulseaudio Mixer :

Rygel - Audiostream in PulseaudioJetzt wo es im Pulseaudio ist, könnte man es natürlich gleich wieder auf den Multicast schicken und … aber ab hier übernimmt die eigene Verstellungskraft 😉

Wozu das ganze, es gibt doch Funkmikros ?!

Stimmt, es gibt Bluetooth Mikros, Funkmikros und alles mögliche. Warum also so etwas nehmen? Natürlich a) weils geht und b) weil die meisten ein Handy haben, und damit zusätzliche Ausrüstung unnötig wird. je weniger man mit sich rumschleppen muß, desto besser 🙂 Peinlich wird es nur, wenn während des Vortrags die Mama anruft 😀 Um das zu verhindern, einfach das Handy auf Stumm stellen. Das Mikro geht trotzdem.

Followup: Fedora: Audio auf Android streamen

Im Beitrag Fedora: Audio auf Android streamen wurde eine Methode vorgestellt, wie man den Desktopton schlank zum Android bekommt. Dazu war ein eigener kleiner Streamserver nötig.

Hier nun eine Methode die mit PulseAudio und einem APK auf dem Android auskommt.

Auf Linux starten wir als User erstmal das Streammodul für PulseAudio:

pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2  record=true port=8000

Dann installieren wir auf dem Android dieses APK: PulseDroid

Wir starten den PulseDroid auf dem Androidgerät und tragen die LAN IP des Linuxrechners mit dem Port 8000 ein. Auf Start klicken und schon rauscht es. Das liegt daran, daß jetzt der „Default“ Ton des Linuxrechners übertragen wird, was das Mikro sein dürfte. Im PulseaudioMixer stellt man jetzt einfach die Quelle des Tons so ein, wie man das braucht und schon hört man es auf dem Android.

Wer direkt etwas anderes streamen will, der kann auch direkt die Quelle angeben:

pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2  record=true port=8000 source=pa quell device>

Audiostreaming im Linuxnetzwerk

oh Ja, heute gibt es wieder was auf die Ohren 😉 Wir verteilen Audiodatenströme im Netzwerk per Multicast an alle angeschlossenen Stationen.

Wir brauchen : Pulseaudio und PAPrefs

Alles was wir tun müssen ist PAPrefs zu starten und im Multicast/RTP Menü den Empfang und das Senden von Multicaststreams zu aktivieren :

Bildschirmfoto von »2016-05-10 11-17-00«

Man sieht ja jetzt drei Auswahlmöglichkeiten. Ich empfehle ein eigenes Device zunehmen, denn das kann man dann im Mixer für die einzelnen Programme auswählen und so ganz gezielt sagen, welcher Ton zuhören sein soll.

Wenn man sich das sparen will, kann man auch einfach sagen, daß alles was die Lautsprecher erreicht umgeleitet werden soll. Das gleiche gilt für den Mikrofoneingang.

Jetzt braucht man nur noch ein anderes Linuxgerät im Netzwerk auch so konfigurieren.

Natürlich stellt man nur Sender oder Empfänger ein, jenachdem was man will. Man kann sich z.b. ein kleines Kommunikationsnetzwerk für verschiedene Zimmer aufbauen, Netzwerklautsprecher realiseren ( muß ja kein Laptop dranhängen, ein Rasperi tut es ja auch ) oder einfach mehrere Lautsprecheranlagen zusammenschalten. Ich kann mir gut vorstellen, daß auf Konferenzen ein Multicast läuft, auf dem die ganzen Ansagen durchkommen. Ist nur blöd, daß jeder auch Sender sein kann, was natürlich auf einem Geektreffen todsicher ins Auge gehen wird 😉

Pulseaudio – All Device Wiedergabe

Schon einmal das Bedürfnis gehabt, daß der Sound nicht nur auf dem Lautsprecher herauskommen soll, sondern auf allen angeschlossenen (und nicht angeschlossenen) Geräten ausgegeben werden soll?

Ja, geschafft ? Nein ? Aber da gibt es natürlich eine Pulseaudio Lösung und die hat es echt in sich 🙂

Pulseaudio ist ja auf den meisten Linuxrechnern der Defaultsoundmixer, auch wenn es noch Jack und GStreamer gibt. Leider gibt es nicht nur das eine Configtool für Pulseaudio, sondern eine ganze Reihe. Das was bei Fedora nicht installiert ist, ist paprefs . Das muß man sich erst mal mit dnf installieren : „dnf install -y paprefs“ Je nach Stand der Fedorainstallation kommen da nur 3, oder auch mal 30 Pakete mit.Bildschirmfoto von »2016-04-09 12-10-13«

Wir brauchen die Funktion „Simultane Ausgabe“ . Da gibt es nur einen Haken, der klicken wir an. Nun haben wir im Lautstärkenmanager ein virtuelles Device in dem alle anderen Devices zusammen gefaßt sind. Das geht natürlich nur, wenn man auch mehrere Ausgabegeräte anschlossen hat. Zu dem oben erwähnten nicht angeschlossenen Fall kommen wir später 😀 .  Das kann sein, die auf dem Mainboard verbaute Audiohardware, eine Soundkarte, Kopfhörer oder auch der HDMI Monitor mit Ton.

Wer es noch nicht aktiviert hat, unten im Mixer ist eine Auswahl was man sehen will, dort einfach „All Streams“ auswählen, daß könnte dann so aussehen :

Bildschirmfoto von »2016-04-09 12-19-33«

Man hat nun also nicht nur die ganzen Programme die man regeln kann, sondern auch jedes Ausgabegerät kann einzeln angesteuert werden. Das ist wichtig, weil zum Einen müssen Geräte die weiter weg sind lauter sein, zum Anderen heißt 100% für jedes Gerät was anderes. Im „Ausgabegeräte“ Tab kann man jede Hardware einzeln ansteuern und, ganz wichtig, man kann die Latenz einstellen. Damit kann man Echos verhindern, weil man ausgleichen kann, daß die Lautsprecherboxen über lange Leitungen angeschlossen sind.  Ganz wichtig, wenn man eine ganze Halle ansteuern will, schliesslich will man kein Echo haben.

Wer jetzt keine Veranstaltung plant oder auf einer sportlichen Großveranstaltung den Stadionsprecher machen will, der kann auch ganz praktisch etwas damit anfangen: volleren Sound.

Jeder Lautsprecher hat seine eigene Übertragungskurve, meint, Höhen und Bässe werden auf jedem Gerät anders wiedergegeben und das können Sie jetzt ausnutzen. Haben Sie z.B. zwei paar Lautsprecher, einen Mittelton betonten und einen für Bass und Höhen, können Sie diese nun über den virtuelle Stream zusammenführen.

Das was ich gemacht habe, meinen HDMI Lautsprechermonitor in die gemeinsame Klangausgabe eingebunden, so daß die Lautsprecher links und rechts neben dem Monitor nun von vorne kommen und damit ein viel besseres Klangbild mit Surroundsound möglich ist. Da man jetzt mehrere Lautsprecher hat, kann man natürlich auch Mehrkanalton abspielen, wenn die restliche Software da mitspielt.

Im nächsten Teil des Artikels befassen wir uns mit Netzwerkplayback ! Haltet Eure Handies bereit 😀