Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[erledigt]alsa Konfiguration
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
flammenflitzer
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 3477
Location: Berlin

PostPosted: Mon Nov 08, 2021 8:18 pm    Post subject: [erledigt]alsa Konfiguration Reply with quote

Hallo, möglicherweise habe ich einen Fehler in meiner alsa Konfiguration. Ich habe nur die /etc/asound.conf
Code:
pcm.snd_card {
    type hw
    card 1
    device 0
}

ctl.snd_card {
    type hw
    card 1
    device 0
}

pcm.!default {
    type plug
    slave.pcm "snd_card"
}
cat /proc/asound/cards
Code:
0 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xfc080000 irq 113
 1 [Generic        ]: HDA-Intel - HD-Audio Generic
                      HD-Audio Generic at 0xfcb00000 irq 115
aplay -L
Code:
null
    Discard all samples (playback) or generate zero samples (capture)
pipewire
    PipeWire Sound Server
hdmi:CARD=NVidia,DEV=0
    HDA NVidia, Generic Digital
    HDMI Audio Output
sysdefault:CARD=Generic
    HD-Audio Generic, ALCS1200A Analog
    Default Audio Device
front:CARD=Generic,DEV=0
    HD-Audio Generic, ALCS1200A Analog
    Front output / input
surround21:CARD=Generic,DEV=0
    HD-Audio Generic, ALCS1200A Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Generic,DEV=0
    HD-Audio Generic, ALCS1200A Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Generic,DEV=0
    HD-Audio Generic, ALCS1200A Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Generic,DEV=0
    HD-Audio Generic, ALCS1200A Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Generic,DEV=0
    HD-Audio Generic, ALCS1200A Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Generic,DEV=0
    HD-Audio Generic, ALCS1200A Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Generic,DEV=0
    HD-Audio Generic, ALCS1200A Digital
    IEC958 (S/PDIF) Digital Audio Output
Und ls /etc/alsa/conf.d
Code:
50-pipewire.conf  99-pipewire-default.conf
/etc/modprobe.d/alsa.conf
Code:
alias char-major-116 snd
alias char-major-14 soundcore
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
alias /dev/mixer snd-mixer-oss
alias /dev/dsp snd-pcm-oss
alias /dev/midi snd-seq-oss
options snd cards_limit=2

Da ich pipewire nutze, sollte da noch etwas in der /etc/asound.conf eingetragen werden?


Last edited by flammenflitzer on Thu Nov 25, 2021 8:40 pm; edited 1 time in total
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Tue Nov 09, 2021 3:03 am    Post subject: Reply with quote

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:
  1. /usr/share/alsa/alsa.conf
  2. /var/lib/alsa/conf.d/*
  3. /usr/etc/alsa/conf.d/*
  4. /etc/alsa/conf.d/*
  5. /etc/asound.conf
  6. ~/.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:
Code:
alsactl dump-cfg

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:
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:
defaults.pcm.card 1
defaults.pcm.device 0
defaults.ctl.card 1


Kommen wir jetzt zu PulseAudio (PA) und PipeWire (PW)

Zwei Dinge vorab:
  1. Ich habe nur wenig Erfahrung mit PA und PW, weil ich nur ALSA verwende.

  2. 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:
/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:
pcm.pipewire {
...
}

Code:
pcm.default {
        type pipewire
        playback_node '-1'
        capture_node '-1'
        hint {
                show on
                description 'Default ALSA Output (currently PipeWire Media Server)'
        }
}

Code:
ctl.pipewire {
...
}

Code:
ctl.default {
        type pipewire
}

Und bei "aplay -L" sollte man sehen:
Code:
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.
Back to top
View user's profile Send private message
flammenflitzer
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 3477
Location: Berlin

PostPosted: Tue Nov 09, 2021 7:29 am    Post subject: Reply with quote

Danke, für die Hilfe. Wenn ich die /etc/asound.conf lösche, (was ich im Vorfeld schon probiert hatte) sind alle ausgaben so, wie von dir angegeben. Allerdings startet mplayer /smpayer mit mplayer nun mit einer kurzen Pause (bei Filmen in Bild und Ton, bei Ton nur mit der Tonausgabe). Deshalb bin ich davon abgekommen. Wahrscheinlich liegt der Fehler hier aber in der Konfiguration von mplayer. Noch einmal: Dankeschön :D
PS:
Code:
/etc/mplayer/mplayer.conf
ao=pulse
scheint das Problem zu beheben...
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Tue Nov 09, 2021 5:05 pm    Post subject: Reply with quote

Wenn man auf PA oder PW umsteigt, sollte man hinterher alle Programme überprüfen, die Sound ausgeben. Nach Möglichkeit sollte man sie so einstellen, dass sie direkt mit PA oder PW kommunizieren - also NICHT über ALSA gehen. Die Einstellung "ao=pulse" bei mplayer scheint genau das zu machen! Die Umleitung über ALSA sollte man nur ein Anspruch nehmen, wenn eine direkte Kommunikation mit PA oder PW nicht möglich ist.

Eine Ausnahme gibt es: wenn ich mal richtig Musik von CDs hören will - also im Sinne von HiFi - dann möchte ich auch maximale Qualität. Dafür muss ich Resampling in PA, PW oder dmix vermeiden. Deshalb wähle ich in meinen Music-Player "audacious" als Ausgabekanal "ALSA hw1,0". PA, PW, dmix und die ALSA Konfigurationsdatein werden dann umgangen - und Audacious schreibt den PCM Datenstrom direkt (über ALSA, aber ohne dmix) in die Soundkarte. Wenn man wie ich nur eine HDA Sound-Lösung ohne Hardware-Mixer hat, hat das natürlich den Nachteil, dass während des Musikhörens dmix, PA und PW nicht mehr funktionieren. Aber was tut man nicht alles, um mal richtig schön Musik zu hören. :)
Back to top
View user's profile Send private message
flammenflitzer
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 3477
Location: Berlin

PostPosted: Wed Nov 10, 2021 6:25 am    Post subject: Reply with quote

Ist doch ziemlich komplex. Da sind dann auch noch phonon, gestreamer und was weiß ich noch alles im Spiel. Bin da überfordert, wann ich welche USE flag setzten muss. Ich nehme es i.d.R. so, wie es von portage angeboten wird. Systemweit habe ich nur pulseaudio und pipewire gesetzt (make.conf) und für beide sowie phonon gstreamer (package.use), in der Hoffnung, das es nicht schadet.....
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Wed Nov 10, 2021 4:49 pm    Post subject: Reply with quote

Ich sehe es auch so, dass das Thema "Sound unter Linux" viel zu kompliziert ist. Ein Teil des Problems ist, dass ich bisher noch keine richtig gute und vollständige Anleitung gefunden habe.

Zum Teil liegt es aber auch in der Natur der Sache. Die Leute kaufen billige Sound-Lösungen ohne Hardware-Mixer - und wollen dann aber gleichzeitig mehrere Soundquellen mit unterschiedlichen Sampling-Frequenzen nutzen. Also wird ein Software-Mixer mit Resampling notwendig - und das ist die Stelle, an der es (technisch) kompliziert wird. Der Rest kommt durch die Historie - es wurden immer wieder neue Lösungen entwickelt (dmix, ARtsd, ESD, JACK, PA, PW) - und dadurch gibt es recht viele Schnittstellen und Protokolle.

Zu den USE Flags kann ich nichts sagen. Mein Tipp wäre, bei jeder einzelnen Soundquelle genau nachzuverfolgen, wie sie Verbindung mit PW aufnimmt - und sie so zu konfigurieren, dass sie möglichst direkt mit PW kommuniziert.

Übrigens: falls PipeWire doch nicht gefallen sollte: hier gibt's den passenden Artikel von Fitzcarraldo: Removing PipeWire in Gentoo Linux :)
Back to top
View user's profile Send private message
flammenflitzer
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 3477
Location: Berlin

PostPosted: Thu Nov 11, 2021 6:17 am    Post subject: Reply with quote

Danke. Ich lasse das erst einmal und beobachte. Wird vielleicht irgendwann der Standard sein .....
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum