Ich habe mir schon so etwas gedacht.
Genau, dies setzt aber voraus, dass beide Kanäle unabhängige Geräte sind…
Ich muss quasi mehrere Audioquellen mischen ![]()
Ich habe mir schon so etwas gedacht.
Genau, dies setzt aber voraus, dass beide Kanäle unabhängige Geräte sind…
Ich muss quasi mehrere Audioquellen mischen ![]()
1x Stereo => 2x Mono Soundcard (ALSA)? Schau mal ob du hier fündig wirst!
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:
# created by schlizbäda at 2025-02-12
# based on entry "dtoverlay=vc4-fkms-v3d" in /boot/firmware/config.txt
pcm.HifiBerry_dmixer {
type dmix
ipc_key 1024 # Zahl beliebig, muss aber bei mehreren dmix-Devices eindeutig sein
slave {
pcm "hw:3,0"
period_time = 0
period_size = 1024
buffer_size 4096
rate 44100
}
bindings {
0 0
1 1
}
}
ctl.HifiBerry_dmixer {
type hw
card 3
}
pcm.HifiBerry_Left {
type plug
slave.pcm "HifiBerry_dmixer"
slave.channels 2
ttable.0.0 1 # left channel active
ttable.1.0 0 # right channel muted
hint {
show on
description "HifiBerry DAC - Left Channel"
}
}
pcm.HifiBerry_Right {
type plug
slave.pcm "HifiBerry_dmixer"
slave.channels 2
ttable.0.1 0 # left channel mutex
ttable.1.1 1 # right channel
hint {
show on
description "HifiBerry DAC - Right Channel"
}
}
Display More
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.
Danke dir schlizbäda
.. Ich lese auch mal ein bisschen.
Eine Variante zu obiger .asoundrc kann ich auch noch anbieten:
.
.
.
pcm.HifiBerry_Left {
.
.
.
ttable.0.0 1 # left channel on left speaker active
ttable.1.0 1 # right channel on left speaker active
}
pcm.HifiBerry_Right {
.
.
.
ttable.0.1 1 # left channel on right speaker active
ttable.1.1 1 # right channel on right speaker active
}
Display More
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?
Hi schlizbäda ,
vielen Dank- nur Der Vollständigkeit halber: der Rest bleibt gleich, nur die TTable Einträge sind relevant?
ja genau!
Super, ich melde mich morgen.
Hey schlizbäda ,
ich habe deine Config getestet, dies klappt leider immer noch nicht. Ich teste aktuell noch eine DMIX Config. Ich melde mich nochmal.
Ich denke fast, es ist ein Softwareproblem von Shairport Sync.
schlizbäda ...
Ich habe nochmal eine andere Idee gehabt:
2 Pipes, welche ich dann als Stereo Signal an den Dac schicken kann. Meinst du das könnte klappen?
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:
Wichtig:
Es muss eine *.wav-Datei sein, keine *.mp3 o.Ä., da aplay nur wav unterstützt!
schlizbäda .. Ich teste das und melde mich:)
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.
schlizbäda ..
Ich nutze die Datei in /etc/asound.conf. Die andere habe ich nur zu Testzwecken erstellt.
Ich benutze Raspberry Pi OS Lite. Letzte Version, mit aktuellem Kernel.
Um die Tests genau so wie von dir beschrieben durchzuführen:
1. Asound anlegen
2. Neustarten
3. Aplay auf dem rechten und linken Kanal nacheinander oder gleichzeitig starten?
Warum frage ich: Weil du schreibst vom dmixer aber in der config steht davon nichts?
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:
pcm.HifiBerry_dmixer {
type dmix
ipc_key 1024 # Zahl beliebig, muss aber bei mehreren dmix-Devices eindeutig sein
slave {
pcm "hw:3,0"
period_time = 0
period_size = 1024
buffer_size 4096
rate 44100
}
bindings {
0 0
1 1
}
}
ctl.HifiBerry_dmixer {
type hw
card 3
}
Display More
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.
Don’t have an account yet? Register yourself now and be a part of our community!