![]() |
|
Einfacher RapsberryPi Streamer mit DSP-Funktionalität - Druckversion +- diy-hifi-forum.eu (https://diy-hifi-forum.eu) +-- Forum: Archiv (https://diy-hifi-forum.eu/forumdisplay.php?fid=198) +--- Forum: Elektronik (https://diy-hifi-forum.eu/forumdisplay.php?fid=8) +---- Forum: Allgemeine Themen (https://diy-hifi-forum.eu/forumdisplay.php?fid=87) +---- Thema: Einfacher RapsberryPi Streamer mit DSP-Funktionalität (/showthread.php?tid=19868) |
Einfacher RapsberryPi Streamer mit DSP-Funktionalität - Slaughthammer - 10.01.2022 Moin, ich habe dieses Wochenende den RaspberryPi in meiner mobilen Anlage mit einem neuen Betriebssystem versehen, und das wollte ich euch nicht vorenthalten. Da hat sich in den letzten Jahren doch einiges getan. Verwendete Hardware: RaspberryPi 3B Rev1.2, Logilink UA0099 7.1 USB Sound Box Verwendete Software: rAudio1, ein fork von runeaudio. Das Image bringt von sich aus schon ziemlich vieles mit was ich mir vorher mühsam in ein Raspbian eingehackt habe: MPD, Bluetooth reciever, Webinterface, macht automatisch nen WLAN Accespoint auf, wenn kein bekanntes Netzwerk da ist... dazu noch viele Goodies, die ich bisher nicht hatte/brauchte wie: Spotify, Airplay, Snapcast, UPnP... Das einzige was eigentlich noch fehlt ist der DSP-Kram. Und damit man das Nachrüsten davon hier mal an einer Stelle immer wiederfindet dokumentiere ich das hier jetzt. Also erstmal das Image flashen und die initiale config machen. Das ist erstaunlich komfortabel geworden, der macht einfach seinen AP auf, kurz mit dem Handy reinverbinden, Webinterface aufrufen und ins lokale WLAN einpflegen, alles so wie man es von gekauften Geräten auch gewöhnt ist. Aber keine Angst, die gefürchtete Konsole kommt jetzt als nächstes. Nicht vergessen das initiale Update im Webinterface unter Addons - Update zu machen! Erstmal müssen wir die Audiosignale irgendwo abgreifen um die in die DSP-Sektion zu füttern. Zum Glück hat ALSA dafür gleich das richtige Werkzeug an Bord: Das Loopback Device. Um das zu spezifizieren brauchen wir zwei config files, die wir auf dem Pi erstellen müssen. Dazu also erstmal aus der eigenen Konsole (ich nutze Powershell) per ssh verbinden. Im Webinterface wird die dafür nötige Adresse freundlicherweise gleich angezeigt. Falls man einen halbwegs kompetentes WLAN hat sollte man sich mit "ssh raudio.local -l root" einloggen können. Das geforderte Passwort ist "ros". Das sollte man auch gleich ändern mit dem Befehl "passwd root". Dann mit dem Befehl Code: nano /etc/modprobe.d/alsa-aloop.confCode: options snd-aloop enable=1 index=2 pcm_substreams=1 id=LoopbackDann müssen wir dem System nur noch sagen, dass das auch beim boot automatisch geladen werden soll. Dazu erstellen wir wieder eine Datei: Code: nano /etc/modules-load.d/snd_aloop.confCode: snd_aloopLeider hat der Schöpfer dieser Software was gegen Loopbacks und die aus der Liste der wählbaren Outputs ausgefiltert! Das sind aber nur zwei Scripte die nicht kompiliert werden müssen und man einfach so ändern kann. In der Datei /srv/http/bash/player.sh steht in Zeile 170 Code: devices+=$'\n\n<bll># aplay -l | grep ^card</bll>\n'$( aplay -l | grep ^card | grep -v Loopback )Code: devices+=$'\n\n<bll># aplay -l | grep ^card</bll>\n'$( aplay -l | grep ^card )Code: aplay=$( aplay -l 2> /dev/null | grep '^card' | grep -v Loopback )Code: aplay=$( aplay -l 2> /dev/null | grep '^card' )Kann man in nano ("nano /srv/http/bash/player.sh") direkt in der Konsole machen. Zeile 170 suchen geht mit strg+/ Jetzt die Kiste einmal neustarten falls das nach dem erstellen des loopbacks nicht gemacht wurde. Dann kann man im Webinterface auf einmal auf das Loopback als Output auswählen. Diese Änderungen werden möglicherweise durch ein update von rAudio über das Webinterface wieder zurückgefahren, also am besten nicht mehr updaten. Jetzt noch die DSP-Funktionalität installieren. Ich mache das nach Richard Taylor mit ecasound Dazu also erstmal ecasound installieren, ist zum Glück im Repository. Code: pacman -S ecasoundCode: pacman -S ladspaAls nächstes brauchen wir die scourcen von den rt-plugins, also mit wget herunterladen und mit tar entpacken: Code: wget https://faculty.tru.ca/rtaylor/rt-plugins/rt-plugins-0.0.6.tar.gzDen Rest kann man dann auch vom Entwickler selber abtippen: https://faculty.tru.ca/rtaylor/rt-plugins/index.html schrieb:Enter the build folder: cd rt-plugins-x.x.x/build/ Damit die Plugins dann von ecasound beim aufrufen auch gefunden werden, müssen wir dem System noch sagen wo es danach suchen soll: Code: export LADSPA_PATH=/usr/local/lib/ladspa:/usr/lib/ladspaUm ecasound nun zu starten müssen wir den recht länglichen Befehl, der gleichzeitig das komplette Setup definiert in die Konsole eingeben. Da man das nicht nach jeden neustrart machen möchte, habe ich mir das als Service automatisiert. Dazu erstellen wir die Datei: Code: nano /etc/systemd/system/ecasound.serviceCode: [Unit]Das was da hinter 'ExecStart=-/usr/bin' steht ist die komplette konfiguration von ecasound! (der darf keine Zeilenschaltungen enthalten, ich hab die hier nur eingefügt damit das Layout nicht kaputt geht) Nur die einzelnen Filter habe ich in externe Dateien ausgelagert damit der Befehl nicht noch länger wird. Den Anfang "ecasound -D -z:mixmode,sum -x -a:pre -i:alsahw,2,1,0" und das Ende "-f:16,6,44100 -o:alsa,surround51:ICUSBAUDIO7D -B:rtlowlatency -tl -r:SCHED_FIFO -b:768" sollte man hier einfach übernehmen, zumindest wenn man maximal 6 ausgangskanäle braucht. Ansonsten entsprechend anpassen. Die 6 in "-f:16,6,44100" steht für die Anzahl der Kanäle, und die 51 in "o:alsa,surround51:ICUSBAUDIO7D" steht dafür, dass ALSA die Soundkarte mit einem 5.1 mapping öffnet. Wenn man alle 8 Kanäle braucht also entsprechend auf "-f:16,8,44100" und "o:alsa,surround71:ICUSBAUDIO7D" ändern. "ICUSBAUDIO7D" ist der Name der Logilink 7.1 USB Sound Box in diesem System. Wer ne andere Soundkarte nutzt kann unter "aplay -l" nachgucken wie die heißt und das da entsprechend ändern. Wie man den Teil dazwischen ermittelt, da verweise ich einfach mal auf die schon genannte Anleitung von Richard Taylor. Er verlinkt da auch auf seine Plugins die wir vorhin schon gebaut und installiert haben. Im wesentlichen sind die sehr ähnlich wie die Filter in EqualizerAPO zu benutzen, die Syntax ist etwas anders, funktiionalität aber vergleichbar. Wenn ich Hoch/tiefpässe höherer Ordnung brauche gucke ich immer hier nach wie ich die kaskadieren muss (ein LR-Filter n-ter Ordnung sind auch nur zwei BW-Filter n/2-ter Ordnung hintereinander). Und LR4 Filter sind ja sogar inklusive. Ich empfehele es sich diesen Befehl irgendwo handlich abzuspeichern und dann zuerst einfach so in der Konsole zu testen ob er wirklich das tut was er soll. Einen Testlauf bricht man strg+c wieder ab, der läuft sonst endlos weiter. Dann wenn alles läuft also diesen Befehl in besagte Datei "/etc/systemd/system/ecasound.service" eintragen. Jetzt müssen wir den Service nur noch aktivieren: Code: systemctl enable ecasound.serviceCode: systemctl start ecasoundCode: systemctl status ecasoundWenn das jetzt läuft sollte sich das ganze System sich bei jedem Start von alleine in diesen Zustand bringen, dass alles an Audiowiedergabe über das Loopback Device durch ecasound auf die spezifizierte Soundkarte geleitet wird. Ich hoffe das hilft irgendjemandem mal. Im Zweifelsfall mir selbst, wenn ich das alles beim nächsten Bastelanfall wieder vergessen habe. Gruß, Onno Einfacher RapsberryPi Streamer mit DSP-Funktionalität - Koaxfan - 11.01.2022 Sehr cool, vielen Dank! Ich habe mir sowas in abgespeckter Form und natürlich ohne DSP auf nem Orange Pi gebaut, mit dieser Anleitung gehe ich aber vielleicht doch mal an einer der vielen wartenden Raspis dran. Die Soundkarte ist die LogiLink, oder? Einfacher RapsberryPi Streamer mit DSP-Funktionalität - Slaughthammer - 11.01.2022 Ähh ja, genau. Logilink. Sollte aber grundsätzlich mit jeder Mehrkanal Soundkarte die Linux unterstützt funktionieren, da gibt es ein paar sehr ähnliche zu der Logilink, die intern vermutlich nahezu baugleich sind... Gruß, Onno Einfacher RapsberryPi Streamer mit DSP-Funktionalität - The Alchemist - 11.01.2022 Super, dass das funktioniert. Ich hab nochmal nachgeschaut, mein Hinweis, dass sich die Plugins auf auf dem Pi nicht kompilieren lassen, ist vom Sommer 2013 . Ich selbst hab das nie mehr versucht..Gruß Einfacher RapsberryPi Streamer mit DSP-Funktionalität - capslock - 11.01.2022 Klingt ja sehr spannend. Gibt es irgendwo einen Schnelleinstieg für Raspi bzw. Linux-Noobs? Das ist es, was mich bislang immer davon abgeschreckt hat, das auszuprobieren, dass solche Anleitungen immer Vorkenntnisse voraussetzen. Und was heißt der Satz? Das man ein automatisch hochpoppendes Update zumachen soll? Nicht das initiale Update im Webinterface unter Addons - Update zu machen! Einfacher RapsberryPi Streamer mit DSP-Funktionalität - Slaughthammer - 11.01.2022 capslock schrieb:Und was heißt der Satz? Das man ein automatisch hochpoppendes Update zumachen soll? Da sollte eigentlich stehen: Nicht vergessen das Update zu machen... Habe es oben korrigiert. Einfacher RapsberryPi Streamer mit DSP-Funktionalität - Slaughthammer - 11.01.2022 The Alchemist schrieb:Super, dass das funktioniert. Ich hab die rt-plugins bisher immer auf dem Pi gebaut, habe aber erst 2019 (ernsthaft) damit angefangen. capslock schrieb:Gibt es irgendwo einen Schnelleinstieg für Raspi bzw. Linux-Noobs? Das ist es, was mich bislang immer davon abgeschreckt hat, das auszuprobieren, dass solche Anleitungen immer Vorkenntnisse voraussetzen. Ja, das ist so eine Sache... Hat bei mir auch ewig gedauert bis ich damit einigermaßen warm geworden bin. Meine ersten Versuche* sind auch im Sande verlaufen. Da war meine Motivation einfach nicht groß genug da am Ball zu bleiben. Wenn man da gar keine Erfahrung mit hat ist das am Anfang echt frustrierend. Man ist die ganze Zeit nur damit beschäftigt irgendwelche Befehle zu recherchieren und Fehlermeldungen in google kopieren. Richtig voran ging es eigentlich erst als ich ein konkretes Projekt hatte und einer der Informatiker im Freundeskreis sich mal über Chat und mal einen Samstag zusammen sitzen und das zusammen frickeln eingebracht hat. Ansonsten einfach mal machen. Das finanzielle Risiko ist überschaubar. Ein Pi 3 wie ich ihn einsetze kosten um die 40€, und wenn einem 6 analoge Ausgänge reichen, kann man auch nur 19€ in die Soundkarte investieren. Ach ja, einigermaßen gutes Englisch ist definitiv von Vorteil, wenn nicht notwendig. Wenn man jemanden hat der bei Problemen weiterhilft ist das auch kein großer Nachteil Im zweifelsfall sind hier im Forum ein paar Spezis auf dem Gebiet. Ich selber merke mit jedem mal dass ich was dran mache dass es mir einfacher von der Hand geht. Ich erwische mich mittlerweile sogar schon manchmal dabei Sache in der Konsole zu machen, die ich auch übers GUI machen könnte, weils in der Konsole schneller geht! Und ich bin da auch immer noch alle halbe Jahr für ein, zwei Wochenenden mit befasst. Der Kram soll ja laufen und nicht laufend Arbeit machen.Also mein Ansatz da rein zu kommen ist ein konkretes Problem zu haben das ich lösen will und dann einfach durchbeißen. Erstmal gucken welche Schritte dafür nötig sind: Als erstes immer SD-Karte flashen, dann eine Möglichkeit schaffen Zugriff auf den Pi zu haben, usw usw... Da muss man sich einfach jeden Schritt einzeln ergooglen. Das gute am RaspberryPi ist ja gerade, dass sich viele Leute mit wenig Ahnung damit befassen und dann die Foren damit füllen. Also sind die meisten Probleme die man hat schon irgendwo mal aufgetreten und hoffentlich gelöst worden. Ach ja, an alle FIR-Festischisten: Man kann nach dem gleichen Schema da natürlich auch ein BruteFIR statt einem eccasound als DSP-Software eingliedern. Der Pi3 hat dafür auch etwas an Rechenleistung zur Verfügung, in meinem Setup ohne FIR ist die Prozessorlast meist unter 10%. Gruß, Onno *Da wurde auch schon die hier zitierte Anleitung von Richard Taylor verlinkt Einfacher RapsberryPi Streamer mit DSP-Funktionalität - capslock - 11.01.2022 Kann ecasound kein FIR? Habe mal kurz gegoogelt, scheint ja eigerlegende Wollmilchsau für Tonstudio zu sein, aber zu DSP-Funktionalität habe ich in dem Wust nichts gefunden. Einfacher RapsberryPi Streamer mit DSP-Funktionalität - Slaughthammer - 12.01.2022 in erster Linie ist ecasound eine Umgebung in der LADSPA Plugins laufen. Wie z.B. die erwähnten rt-plugins... soweit ich weiß hat noch keiner einen Convolver auf dieser Basis geschaffen... Es wurde bisher wenns daraum ging meist schnell auf BruteFIR verwiesen, in jüngerer Vergangenheit auch gerne auf camillaDASP Camilla könnte man hier auch an Stelle von ecasound nutzen, das sollte sich genau so zwischen Loopback und Merhkanalsoundkarte routen lassen. In die Konfiguration davon müsste man sich aber auch erstmal einarbeiten, das geht auch nur über ein config file... Naja, vielleicht mache ich das demnächst ja mal. Einfacher RapsberryPi Streamer mit DSP-Funktionalität - Slaughthammer - 12.01.2022 Slaughthammer schrieb:soweit ich weiß hat noch keiner einen Convolver auf dieser Basis geschaffen... Ok, da war mein Wissen wohl nicht sonderlich vollständig: http://audio.claub.net/LADSPA-plugins.html Dokumentation: https://www.diyaudio.com/community/threads/fir-ladspa-a-ladspa-plugin-for-fir-filtering.351096/post-6134084 Einfacher RapsberryPi Streamer mit DSP-Funktionalität - sion - 16.01.2022 Hallo Onno, super Anleitung, die habe ich gleich mal abgespeichert. Auch wenn ich derzeit keinen Bedarf habe. Aber es frischt bei mir auch altes Wissen auf. Vielen Dank für Deine Bemühungen... Bei der Gelegenheit: MoodeAudio bringt CamillaDSP schon vorinstalliert mit. Getestet habe ich es nicht. Liebe Grüße Klaus Einfacher RapsberryPi Streamer mit DSP-Funktionalität - rkv - 16.01.2022 Hallo Onno, Du empfiehlst ein UAC2-Audiointerface. Mal abgesehen, dass der Preis für jeden, der beruflich im Audio-Segment unterwegs ist, ein Alptraum ist, hast Du USB-Audio Class 2 schon mit RasPi ausprobiert und läuft das befriedigend? Mein letzter Stand war, dass der UAC2-Stack eine viel zu hohe Systemlast erzeugt. Deswegen habe ich die Entwicklung da nicht weiter verfolgt. Raphael Einfacher RapsberryPi Streamer mit DSP-Funktionalität - Slaughthammer - 16.01.2022 sion schrieb:Bei der Gelegenheit: MoodeAudio bringt CamillaDSP schon vorinstalliert mit. Getestet habe ich es nicht. Wenn ich das richtig sehe basiert Moode auf dem RaspberryPi OS? Das fand ich immer ziemlich veraltet und bloated.. Werde es aber wohl mal testen. Habe die Tage noch im ASR-Forum diesen Thread gefunden... ich wusste vorher gar nicht dass es für camilladsp mittlerweile ein Webinterface mit GUI gibt. Das sollte sich eigentlich auch in rAudio integrieren lassen. Ich werde die Tage da nochmal experimentieren. Wenn man sich damit das lästige bauen der rt-plugins sparen könnte wäre das was, camilladsp wäre per WebGUI auch einfacher in der Konfiguration. Um das Loopbackdevice kommt man aber wohl nicht herum. Bei moode haben die camilla wohl per pipe integriert, das ist mir aber zu fummelig. Gruß, Onno Einfacher RapsberryPi Streamer mit DSP-Funktionalität - Slaughthammer - 16.01.2022 rkv schrieb:Hallo Onno, Ich hab die Soundkarte per USB angeschlossen und das funktioniert... sowohl unter Raspbian Buster als auch unter rAudio/Archarm. Auch alle 8 Kanäle. Ohne übermäßige Prozessorlast. Viel mehr kann ich dazu nicht sagen. Was da intern für Treiber arbeiten weiß ich nicht. Ich habe da nichts installiert/konfiguriert. Gruß, Onno Einfacher RapsberryPi Streamer mit DSP-Funktionalität - rkv - 16.01.2022 Cool. Die 19Eur treiben einem die Tränen in die Augen. Dafür kann man in Europa vermutlich noch nichtmal das Gehäuse kaufen. |