Ich habe zwar nicht genau verstanden, was das Problem ist - aber ich schreibe einfach mal, was ich weiß. Du kannst Dir das Passende raussuchen.
Wichtig ist die Ausgabe von "aplay -l" (kleines L)! Dort sieht man genau genau die Card- und Device-Nummern, die man benötigt. Ich nehme an, dass sich die Soundkarte, die Du verwenden willst, unter Card 1, Device 0 befindet!? Gehe ich weiter recht in der Annahme, dass Du eine "einfache" Sound-Lösung ohne Hardware-Mixer hast (ist bei den meisten HDA Sound-Lösungen so)?
Bleiben wir vorerst nur bei ALSA - also ohne PulseAudio und PipeWire.
ALSA funktioniert in der Regel auch auch ohne Konfigurationsdateien wie asound.conf. Die Konfigurationsdateien werden genutzt, wenn Client-Programme Sound ausgeben wollen. In den Konfigurationsdateien werden die Default-Soundkarte, Plugins, Effekte oder der ALSA-Mixer "dmix" konfiguriert.
Wichtig: es gibt mehrere Konfigurationsdateien:
- /usr/share/alsa/alsa.conf
- /var/lib/alsa/conf.d/*
- /usr/etc/alsa/conf.d/*
- /etc/alsa/conf.d/*
- /etc/asound.conf
- ~/.asoundrc
Aus diesen wird die Gesamt-Konfiguration zusammengebaut. Wenn ich es richtig verstehe, werden die Dateien in der o.g. Reihenfolge eingelesen. Neue Definitionen werden zur Gesamt-Konfiguration hinzugefügt. Bereits vorhandene Definitionen werden überschrieben.
In der neuesten Version von media-sound/alsa-utils (1.2.5) kann man sich die aktuell gültige Gesamt-Konfiguration ausgeben lassen:
Tipp: In der Ausgabe nach "^pcm.default {" und "^ctl.default {" suchen. Dann sieht man, wo die Default-Ausgabe hingeht.
Es gibt auch Programme, die diese Konfigurationsdateien nicht benutzen und direkt auf die Hardware zugreifen. Bei diesen Programmen braucht man sich nicht zu wundern, dass Änderungen an den Konfigurationsdateien keinen Effekt haben.
Beispiel: mein Audio-Player "audacious" kann so konfiguriert werden, dass er über die Konfigurationsdateien auf ALSA zugreift. Er kann aber auch so konfiguriert werden, dass er die Konfigurationsdateien umgeht und direkt auf meine Soundkarte zugreift. Ich habe ihn tatsächlich so konfiguriert, dass er direkt auf die Hardware zugreift. Dann muss der Sound nicht erst noch durch dmix und wird dort nicht verschlechtert (das hört man leider recht deutlich, wenn man genauer hinhört).
Wenn ich Deine asound.conf richtig verstehe, verwendest Du die Hardware von Card 1, Device 0 - und umgehst dmix (den ALSA-Mixer). Das würde noch etwas einfacher gehen mit:
Code: Select all
defaults.pcm.card 1
defaults.pcm.device 0
defaults.ctl.card 1
pcm.!default {
type plug
slave.pcm hw
}
Diese Konfiguration hat den Vorteil, dass man keine Klangverschlechterung durch dmix bei Sampling-Raten != 48 kHz hat. Sie hat aber den Nachteil, dass - sofern die Soundkarte keinen Hardware-Mixer hat - immer nur ein Gerät gleichzeitig Sound ausgeben kann - und dass nur die Sampling-Raten möglich sind, die auch die Soundkarte hardwaremäßig unterstützt.
Falls Du dmix doch haben willst, könntest Du folgende asound.conf verwenden:
Code: Select all
defaults.pcm.card 1
defaults.pcm.device 0
defaults.ctl.card 1
Kommen wir jetzt zu PulseAudio (PA) und PipeWire (PW)
Zwei Dinge vorab:
- Ich habe nur wenig Erfahrung mit PA und PW, weil ich nur ALSA verwende.
- Wenn ich es richtig verstehe, greifen PA und PW direkt auf die Soundkarte zu. Sie verwenden NICHT die ALSA-Konfigurationsdateien. Man benötigt also keine ALSA-Konfigurationsdateien, damit PA und PW Sound ausgeben können. Natürlich auch nicht für Programme, die mit PA oder PW über die PA- bzw. PW-Protokolle kommunizieren. Stattdessen muss man PA und PW so konfigurieren, dass sie den Sound auf der richtigen Soundkarte ausgeben.
Die ALSA-Konfigurationsdateien werden benötigt, um Programme, die Sound über ALSA ausgeben, zu PA bzw. PW umzuleiten. Bei einfachen Soundkarten ohne Hardware-Mixer ist das zwingend notwendig, da es nur einen Ausgabekanal gibt - und dieser bereits durch PA oder PW belegt ist.
Vorhin habe ich das Paket media-video/pipewire[pipewire-alsa] installiert. Dabei werden zwei ALSA-Konfigurationsdateien installiert:
Code: Select all
/etc/alsa/conf.d/50-pipewire.conf
/etc/alsa/conf.d/99-pipewire-default.conf
Die erste Konfigurationsdatei (50-pipewire.conf) sorgt dafür, dass es unter ALSA ein neues Device "PipeWire" gibt. Die zweite Konfigurationsdatei (99-pipewire-default.conf) sorgt dafür, dass die ALSA Default-Ausgabe zu PW umgeleitet wird.
"alsactl dump-cfg" zeigt bei mir aber, dass die Default-Ausgabe zu PW (99-pipewire-default.conf) durch meine /etc/asound.conf wieder überschrieben wird! Wenn ich also eine Default-Ausgabe zu PW möchte, muss ich meine /etc/asound.conf entweder entfernen - oder so abändern, dass sie nicht mehr die Default-Ausgabe von 99-pipewire-default.conf überschreibt.
Also, wenn Du mit PW experimentierst, solltest Du Deine /etc/asound.conf zumindest vorerst (temporär) umbenennen, damit sie nicht mehr die Definitionen von 99-pipewire-default.conf überschreibt.
Die Ausgabe von "alsactl dump-cfg" sollte (neben viel anderen Definitionen) folgende Blöcke ausgeben:
Code: Select all
pcm.default {
type pipewire
playback_node '-1'
capture_node '-1'
hint {
show on
description 'Default ALSA Output (currently PipeWire Media Server)'
}
}
Und bei "aplay -L" sollte man sehen:
Code: Select all
null
Discard all samples (playback) or generate zero samples (capture)
...
pipewire
PipeWire Sound Server
...
default
Default ALSA Output (currently PipeWire Media Server)
...
Die Umleitung zu PW unter "default" fehlt bei Dir, sehr wahrscheinlich wegen Deiner asound.conf. Also lösche sie oder benenne sie (temporär) um.