1x Stereo => 2x Mono Soundcard (ALSA)

  • Das geht in ALSA irgendwie mit dmixer, siehe hier (ggf. bis Teilüberschrift dmix runterscrollen)

    Ich teste mal und melde mich wieder...


    EDIT -- So geht's:

    Der Unterschied ist, dass im ersten Block ein "mixerfähiger" Klon(?) pcm.HifiBerry_dmixer von der HifiBerry-Soundkarte angelegt wird. In den bestehenden Devices pcm.HifiBerry_Left und pcm.HifiBerry_Right wird im slave.pcm anstelle der hw:x,0-Karte eben auf den HifiBerry_dmixer verwiesen. Und der Drops ist gelutscht, wie mein Arbeitskollege zu sagen pflegt.

    Hier noch die Datei zum Download:
    .asoundrc
    Bitte den Eintrag hw:3,0 auf die Kartennummer bei Dir ändern. Ich glaube es war hw:0,0.

  • Eine Variante zu obiger .asoundrc kann ich auch noch anbieten:

    Der Unterschied ist, dass hier jeweils der linke plus der Rechte Kanal der Quelle auf einen Lautsprecher wiedergegeben werden, während bei obiger .asoundrc am linken Lautsprecher nur das linke Stereosignal der Quelle wiedergegeben wird und am rechten Lautsprecher nur das rechte Stereosignal der Quelle.

    Da es sich um einen ALSA-dmixer handelt, können in beiden Konfig-Varianten auch auf einem Kanal parallel mehrere Audioquellen wiedergegeben werden.

    Ich wünsche Dir damit viel Spaß und Erfolg!
    schlizbäda

  • Hi schlizbäda ,

    vielen Dank- nur Der Vollständigkeit halber: der Rest bleibt gleich, nur die TTable Einträge sind relevant?

    ja genau!

  • Das ist ja eigentlich das, was in meiner .asoundrc passiert: ein pcm.type.dmixer über der physikalischen HifiBerry-Soundkarte (hw:<x>,0). Damit werden alle für den dmixer bestimmten Audiostreams von ALSA erfasst, die PCM-Werte softwareseitig addiert (=gemixt) und über den einen Audiokanal an die dahinterliegende Hardware gesendet. Der hierarchische(?) oder granulare(?) Aufbau von ALSA ermöglicht dann weitere virtuelle Soundkarten, die ein Audioprocessing z.B. über ttables durchführen und die Daten dann an den dmixer senden.

    Und ja, es gibt Programme, die die ALSA-Schnittstelle (API) nicht sauber implementieren oder auch (bei RPi-OS Desktop) mit dem darüberliegenden Pipewire nicht zurecht kommen.

    Welches OS hast Du? Nur lite nutzt ALSA direkt. Die Desktop-Versionen nutzen PipeWire!

    Teste, ob die ALSA-Konfig anbeißt: nutze einen meiner obigen aplay-Befehle und spiele über die virtuelle HifiBerry_dmixer-Karte eine wav-Datei ab. Dann kannst Du während das erste Lied läuft ein weiteres Lied parallel starten. Wenn es funzt (wie bei mir) wird ein "Mix" aus beiden Liedern wiedergegeben. Dann liegt es an Deiner Shairport-Software. Sollte aber der Mix mittels 2x aplay schon nicht funktionieren, dann ist ALSA (noch) nicht richtig konfiguriert.

    EDIT:
    Setze mit meiner .asoundrc zweimal, zeitlich parallel folgenden Befehl ab:

    Code
    aplay -D HifiBerry_dmixer /Pfad/zur/Audiodatei.wav

    Wichtig:
    Es muss eine *.wav-Datei sein, keine *.mp3 o.Ä., da aplay nur wav unterstützt!

  • Noch was: Wenn auf Deinem System beide Dateien, die ~/.asoundrc und die /etc/asound.conf existieren, dann überschreibt die benutzerspezifische .asoundrc immer die übergeordnete /etc/asound.conf!

    Und beim dmixer gibt es noch einen Eintrag für eine Art Benutzerrechte ähnlich dem Linux-Dateisystem. Das kann evtl. wichtig werden, wenn Deine Shairport-Software (z.B. über einen Hintergrunddienst) von einem anderen User gesteuert wird. Aber in der Verlegenheit war ich noch nicht, deshalb weiß ich dazu (noch) nichts Genaueres...

  • Wenn auf Deinem System beide Dateien, die ~/.asoundrc und die /etc/asound.conf existieren, dann überschreibt die benutzerspezifische .asoundrc immer die übergeordnete /etc/asound.conf!

    ... und offenbar auch wenn eine /etc/asound.conf nicht existiert ist die ~/.asoundrc aktiv und kann bei fehlerhaftem Inhalt Probleme bereiten, wie ich heute hier Tonausgabe auf HDMI nicht einstellbar gelernt habe.

  • Sorry raspbastler,

    ich meine die Version der Konfigdatei aus Beitrag #22. Dort gibt es gleich am Anfang den PCM pcm.HifiBerry_dmixer {...}, der dann von den bestehenden PCMs pcm.HifiBerry_Left und pcm.HifiBerry_Right referenziert wird. Dessen "type" lautet "dmix". Wenn ich (am Handy) verkürzt vom dmixer schreibe, meine ich diesen Block:

    Lade Dir die .asoundrc von Beitrag 22 herunter und spiele sie als /etc/asound.conf ein.

  • schlizbäda .. Danke dir.


    Ich habe es soeben getestet und es klappt wunderbar. Ich werde jetzt nochmal meine Shairport installation testen. Mein Ziel ist es nämlich via Weboberfläche dynamische Einträge vorzunehmen. Sodass eine Soundcard Stereo erzeugt und die andere zwei Monostreams (weil individuelle Instanzen).

    Der Pi 5 kann nämlich 4 Stereo Signale via I2S bereitstellen, welches in 8 Mono Zonen resultieren würde. Das wäre die ideale HW für ein Multiroom System.


    Edit: Es funktioniert auch nun mit Shairport-Sync besten dank. Ich werde dann mal weiter basteln. Ich und Linux werden beim Thema Sound auf jeden Fall keine Freunde mehr.

    Wenn's brennt 112 hilft weiter!

    Edited once, last by raspbastler (February 16, 2025 at 8:07 PM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!