Probleme mit Alsa konfig

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
ainawing
Beiträge: 9
Registriert: 17.12.2017 22:36:58

Probleme mit Alsa konfig

Beitrag von ainawing » 27.12.2017 14:20:03

Hiho,

Ich versuche ein etwas komplexeres Sound-Setup zu erstellen, stoße allerdings bei der Alsa Konfig auf Probleme.

Hier was gewünscht ist:
Ich habe drei 7.1 Soundkarten, auf denen ich Sound (aus einer Quelle) abspielen will. Dabei soll es möglich sein die individuellen Stereo-buchsen der Soundkarten ab- bzw. zuzuschalten und über eine einzige Lautstärke-Regelung anzusprechen.

Als Lösung rausgesucht hatte ich mir mpd mit ympd als Frontend und Alsa als Backend. Nach meinem Verständniss sollte die Umsetzung mittels dieser Tools möglich sein.
Also Alsa splittet die Geräte auf, handhabt das Mixing/Sharing und mpd kann diese gesplitteten Geräte ab- und zuschalten und stellt eine Lautstärkeregelung in Software zur Verfügung. So weit der Plan.
Nachdem ich mehrere Versuche unternommen und auch die Alsa Doku gewälzt habe bin ich allerdings am Ende mit meinem Jägerlatein.
Momentan meint das gute Teil:

Code: Alles auswählen

Dec 27 14:03 : client: [0] process command "pause"
ALSA lib pcm_direct.c:1590:(_snd_pcm_direct_get_slave_ipc_offset) Invalid type 'asym' for slave PCM

Dec 27 14:03 : alsa_output: Failed to open "c1s1" [alsa]: Failed to open ALSA device "c1s1": Invalid argument
Dec 27 14:03 : output: Failed to open audio output
aplay -l (Interessant sind die Karten 1-3):

Code: Alles auswählen

**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: Generic [HD-Audio Generic], Gerät 3: HDMI 0 [HDMI 0]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 1: SB [HDA ATI SB], Gerät 0: ALC892 Analog [ALC892 Analog]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 1: SB [HDA ATI SB], Gerät 1: ALC892 Digital [ALC892 Digital]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 2: DSX [Xonar DSX], Gerät 0: Multichannel [Multichannel]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 2: DSX [Xonar DSX], Gerät 1: Digital [Digital]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 3: Device [USB Sound Device], Gerät 0: USB Audio [USB Audio]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
asound.conf:

Code: Alles auswählen

pcm_slave.card1 {
        type hw
        pcm "surround71:SB"
        channels 8
}

pcm_slave.card2 {
        type hw
        pcm "surround71:DSX"
        channels 8
}

pcm_slave.card3 {
        type hw
        pcm "surround71:Device"
        channels 8
}

#### neuer Versuch
pcm.card1_shared {
        type dshare
        ipc_key 18081
        ipc_perm 0666
        slave "card1"
}

pcm.c1s1 {
        type plug
        slave.pcm "card1_shared"
        ttable.0.0 1
        ttable.1.1 1
}
### Ende neuer Versuch

### alter Versuch
pcm.c1s2 {
        type plug
        slave.pcm {
                type dshare
                ipc_key 18012
                ipc_perm 0666
                ipc_key_add_uid 1
                slave card1
                bindings [ 2 3 ]
        }
}
Sowohl beim alten, als auch beim neuen Versuch kommt der gleiche Fehler und den kann ich mir ganz einfach nicht erklären. Ach ja...

Code: Alles auswählen

$ uname -a
Linux buechse 4.9.0-4-amd64 #1 SMP Debian 4.9.65-3 (2017-12-03) x86_64 GNU/Linux

aplay --version
aplay: version 1.1.3 by Jaroslav Kysela <perex@perex.cz>
Falls noch was anderes gewünscht/benötigt wird, stehe ich gerne für Fragen zur Verfügung.

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Probleme mit Alsa konfig

Beitrag von smutbert » 27.12.2017 17:23:03

Willkommen im Debianforum,

mir ist jetzt nicht auf Anhieb klar wieviele Stereoausgaben du willst. Eine pro Soundkarte also insgesamt drei oder willst du auch die überzähligen Surroundkanäle (soweit möglich) als Stereoausgang nutzen?

Das andere wäre, dass es recht interessant wäre welche Audioformate (Samplerate, -format und Zahl der Kanäle) die Soundkarten unterstützen. Ich kenne ein Skript, das das recht bequem ausgibt, finde es aber nicht - abhängig von der Antwort auf die erste Frage brauchen wir das vielleicht gar nicht.

ainawing
Beiträge: 9
Registriert: 17.12.2017 22:36:58

Re: Probleme mit Alsa konfig

Beitrag von ainawing » 28.12.2017 00:39:55

Danke für die schnelle Rückmeldung, sogar zwischen den Feiertagen.

Mein Ziel sind 10 Stereo-Kanäle, die ich individuell zuschalten kann. Müssten also schon die Surround-Kanäle mit reinkommen. Ich würde natürlich an dieser Stelle auch die (maximal möglichen?) 12 nehmen.

Ich hänge mal das aplay -L an, da werden zumindest die Kanäle gelistet. Bei der Samplerate muss ich an dieser Stelle leider passen.

EDIT: Die drei 'surround71' Einträge sollten die interessanten sein?

Code: Alles auswählen

$ aplay -L
default
    Playback/recording through the PulseAudio sound server
null
    Discard all samples (playback) or generate zero samples (capture)
card1_shared
c1s1
c1s2
c1s3
c1s4
c2s1
c2s2
c2s3
c2s4
c3c1
c3c2
c3c3
c3c4
hdmi:CARD=Generic,DEV=0
    HD-Audio Generic, HDMI 0
    HDMI Audio Output
dmix:CARD=Generic,DEV=3
    HD-Audio Generic, HDMI 0
    Direct sample mixing device
dsnoop:CARD=Generic,DEV=3
    HD-Audio Generic, HDMI 0
    Direct sample snooping device
hw:CARD=Generic,DEV=3
    HD-Audio Generic, HDMI 0
    Direct hardware device without any conversions
plughw:CARD=Generic,DEV=3
    HD-Audio Generic, HDMI 0
    Hardware device with all software conversions
sysdefault:CARD=SB
    HDA ATI SB, ALC892 Analog
    Default Audio Device
front:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    Front speakers
surround21:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Digital
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    Direct sample mixing device
dmix:CARD=SB,DEV=1
    HDA ATI SB, ALC892 Digital
    Direct sample mixing device
dsnoop:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    Direct sample snooping device
dsnoop:CARD=SB,DEV=1
    HDA ATI SB, ALC892 Digital
    Direct sample snooping device
hw:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    Direct hardware device without any conversions
hw:CARD=SB,DEV=1
    HDA ATI SB, ALC892 Digital
    Direct hardware device without any conversions
plughw:CARD=SB,DEV=0
    HDA ATI SB, ALC892 Analog
    Hardware device with all software conversions
plughw:CARD=SB,DEV=1
    HDA ATI SB, ALC892 Digital
    Hardware device with all software conversions
sysdefault:CARD=DSX
    Xonar DSX, Multichannel
    Default Audio Device
front:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    Front speakers
surround21:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    4.0 Surround output to Front and Rear speakers
surround41:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    Direct sample mixing device
dmix:CARD=DSX,DEV=1
    Xonar DSX, Digital
    Direct sample mixing device
dsnoop:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    Direct sample snooping device
dsnoop:CARD=DSX,DEV=1
    Xonar DSX, Digital
    Direct sample snooping device
hw:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    Direct hardware device without any conversions
hw:CARD=DSX,DEV=1
    Xonar DSX, Digital
    Direct hardware device without any conversions
plughw:CARD=DSX,DEV=0
    Xonar DSX, Multichannel
    Hardware device with all software conversions
plughw:CARD=DSX,DEV=1
    Xonar DSX, Digital
    Hardware device with all software conversions
sysdefault:CARD=Device
    USB Sound Device, USB Audio
    Default Audio Device
front:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    Front speakers
surround21:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    Direct sample mixing device
dsnoop:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    Direct sample snooping device
hw:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    Direct hardware device without any conversions
plughw:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    Hardware device with all software conversions

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Probleme mit Alsa konfig

Beitrag von smutbert » 28.12.2017 10:35:45

Ein Problem bei deiner Konfiguration ist

Code: Alles auswählen

pcm_slave.card1 {
        type hw
        pcm "surround71:SB"
        channels 8
}
dass du als type hw angegebenen hast, aber surround71 keine Hardware ist sondern nur ein Name, der in der default-Alsa-Konfiguration definiert wird (und zumindest ein plug-Plugin enthält).

Wenn wir einmal mit einer Soundkarte anfangen, dann würde ich das hier vorschlagen

Code: Alles auswählen

pcm_slave.soundblaster {
        pcm "surround71:SB"
        channels 8
}

pcm.sbstereo2 {
        type dshare
        ipc_key 1235
        slave soundblaster
        bindings [ 2 3 ]
}

pcm.sbstereo3 {
        type dshare
        ipc_key 1236
        slave soundblaster
        bindings [ 4 5 ]
}

pcm.sbstereo4 {
        type dshare
        ipc_key 1237
        slave soundblaster
        bindings [ 6 7 ]
}

pcm.sbstereo1 {
        type dshare
        ipc_key 1234
        slave soundblaster
        bindings [ 0 1 ]
}

allerdings habe ich noch nicht testen können ob es so auch funktioniert. Vielleicht könnte man sogar die pcm.soundblaster-Definition weglassen und die Soundkarte direkt als Slave für die einzelnen dshare-Plugins angeben, aber bevor ich da etwas falsches vorschlage teste ich das lieber selbst.

edit:
Das wäre übrigens eine Aufgabe, die mit Pulseaudio vermutlich etwas einfacher oder zumindest übersichtlicher lösbar wäre (aber ich will niemanden zu Pulseaudio überreden oder davon abraten).

ainawing
Beiträge: 9
Registriert: 17.12.2017 22:36:58

Re: Probleme mit Alsa konfig

Beitrag von ainawing » 28.12.2017 11:26:10

Habe jetzt alle drei Karten nach dem Schema von smutbert konfiguriert.

Ich bekomme immer noch den gleichen Fehler, wenn ich versuche etwas auf Karte 1, channel 1 abzuspielen:

Code: Alles auswählen

Dec 28 11:13 : client: [0] process command "pause"
ALSA lib pcm_direct.c:1590:(_snd_pcm_direct_get_slave_ipc_offset) Invalid type 'asym' for slave PCM

Dec 28 11:13 : alsa_output: Failed to open "c1s1" [alsa]: Failed to open ALSA device "c1s1": Invalid argument
Dec 28 11:13 : output: Failed to open audio output
Allerdings habe ich spaßeshalber auch mal die anderen Karten getestet. Es passiert folgendes, wenn ich auf Karte 2 etwas abspiele:

Code: Alles auswählen

Dec 28 11:19 : client: [0] process command "pause"
Dec 28 11:19 : alsa_output: opened c2s1 type=(null)
Dec 28 11:19 : alsa_output: format=S16_LE (Signed 16 bit Little Endian)
Dec 28 11:19 : alsa_output: buffer: size=12000..18000 time=250000..375000
Dec 28 11:19 : alsa_output: period: size=6000..6000 time=125000..125000
Dec 28 11:19 : alsa_output: default period_time = buffer_time/4 = 375000/4 = 93750
Dec 28 11:19 : alsa_output: buffer_size=18000 period_size=6000
Dec 28 11:19 : libsamplerate: setting samplerate conversion ratio to 1.09
Dec 28 11:19 : output: opened plugin=alsa name="c2s1" audio_format=48000:16:2
Dec 28 11:19 : output: converting from 44100:24:2
Und folgendes auf Karte 3...

Code: Alles auswählen

Dec 28 11:20 : client: [0] process command "pause"
ALSA lib pcm_dshare.c:742:(snd_pcm_dshare_open) dshare plugin can be only connected to hw plugin
Dec 28 11:21 : zeroconf: No global port, disabling zeroconf
Dec 28 11:21 : state_file: Loading state file /var/lib/mpd/state
Dec 28 11:21 : playlist: queue song 2:"[songpath]" (Habe ich an dieser Stelle mal retuschiert)
Dec 28 11:21 : decoder_thread: probing plugin mad
Dec 28 11:21 : inotify: initializing inotify
Dec 28 11:21 : decoder: audio_format=44100:24:2, seekable=true
Dec 28 11:21 : inotify: watching music directory
Dec 28 11:21 : client: [0] opened from 127.0.0.1:57160
Dec 28 11:21 : client: [0] process command "outputs"
Ich denke es ist fair zu sagen: Ich bin verwirrt. Wäre das denn mit Pulseaudio einfacher umzusetzen?
EDIT: Habe Pulseaudio bereits installiert, da das irgendwelche Pakete benötigten. Wäre also durchaus bereit das zu testen.

EDIT2: Beim Aktivieren mehrerer Ausgänge auf Karte 2 bekomme ich außerdem ein "Device or Resource busy".

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Probleme mit Alsa konfig

Beitrag von smutbert » 28.12.2017 20:54:39

Ok, beim Testen habe ich ein grundsätzliches Problem entdeckt. Es klappt mir dshare zwar, wenn man es so macht

Code: Alles auswählen

pcm.sb_st1 {
        type dshare
        ipc_key 1234
        slave.pcm "hw:SB"
        slave.channels 8
        bindings [ 0 1 ]
}
aber es kann immer nur ein dshare genutzt werden nicht mehrere gleichzeitig. Um das Problem zu lösen gäbe es zwar dmix, aber sowohl dmix wie auch dshare funktionieren nur als letztes Plugin vor der Hardware, schließen sich also gegenseitig aus.



Meine andere Idee sieht etwa so aus, aber probier es bitte zuerst einmal nur mit einer Soundkarte und diesen wenigen Einträgen und zuerst mit aplay, sonst sind mir zu viele mögliche Fehlerquellen im Spiel:

Code: Alles auswählen

pcm.soundblaster {
	type dmix
	slave.pcm "hw:SB"
	slave.channels 8
}

pcm.sb_st1 {
	type route
	slave.pcm "plug:soundblaster"
	ttable {
		0.0 1
		1.1 1
	}
}

pcm.sb_st2 {
        type route
        slave.pcm "plug:soundblaster"
        ttable {
		0.0 0
		1.1 0
                0.2 1
                1.3 1
        }
}

pcm.sb_st3 {
        type route
        slave.pcm "plug:soundblaster"
        ttable {
		0.0 0
		1.1 0
                0.4 1
                1.5 1
        }
}
(ich habe es nicht mit so vielen Kanälen testen können. Wenn also ab bei den sb_st1, sb_st2,... aus mehr Kanälen Ton kommt, als gewünscht, müssen wir wohl das ttable vervollständigen, also alle 16 Zeilen, für alle Kombinationen aus Ein- und Ausgangskanälen ausschreiben.)
Testen dann mit

Code: Alles auswählen

$ aplay -D sb_st1 /usr/share/sounds/alsa/Front_Left.wav
$ aplay -D sb_st2 /usr/share/sounds/alsa/Front_Left.wav
$ aplay -D sb_st3 /usr/share/sounds/alsa/Front_Left.wav
oder einer Stereo-Wav-Datei, wenn du eine zur Hand hast, das sollte aber nichts ändern.

ainawing
Beiträge: 9
Registriert: 17.12.2017 22:36:58

Re: Probleme mit Alsa konfig

Beitrag von ainawing » 30.12.2017 18:46:11

So. Hab es getestet. Musste zuerst mal einen ipc_key beim dmix hinzufügen, ansonsten wollte er gleich gar nicht.

In dieser Konstellation bekomme ich mit

Code: Alles auswählen

aplay -D sb_st1 /usr/share/sounds/alsa/Front_Left.wav
eine Ausgabe der Datei auf allen angeschlossenen Lautsprechern. Bei den anderen beiden Befehlen kommt gar nichts. Das Abspielen stürzt aber auch nicht mit einem Fehler ab. Kommt einfach nur kein Ton.

Meine Konfig nach Veränderung:

Code: Alles auswählen

pcm.soundblaster {
        type dmix
        slave.pcm "hw:SB"
        slave.channels 8
        ipc_key 1099
}

pcm.sb_st1 {
        type route
        slave.pcm "plug:soundblaster"
        ttable {
                0.0 1
                1.1 1
        }
}

pcm.sb_st2 {
        type route
        slave.pcm "plug:soundblaster"
        ttable {
                0.0 0
                1.1 0
                0.2 1
                1.3 1
        }
}

pcm.sb_st3 {
        type route
        slave.pcm "plug:soundblaster"
        ttable {
                0.0 0
                1.1 0
                0.4 1
                1.5 1
        }
}

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Probleme mit Alsa konfig

Beitrag von smutbert » 30.12.2017 21:33:03

Das ist interessant, denn bei meinen Tests ist genau das nicht passiert - mit sb_st2 und 3 waren die ersten beiden Kanäle still, viel mehr habe ich nicht getestet, weil ich nicht ständig zwischen den Buchsen umstecken wollte.

Nun habe ich es mit einer Loopbacksoundkarte getestet, bei der ich das Ergebnis einfach aufnehmen kann und habe dort dasselbe Phänomen wie du, aber ich weiß nicht wieso da das Ergebnis anders ist. Ich werde weiter testen und berichten, wenn ich etwas herausgefunden habe.

Sollte bei meinen Versuchen nichts herauskommen, bleibt immer noch Pulseaudio als Lösung.

ainawing
Beiträge: 9
Registriert: 17.12.2017 22:36:58

Re: Probleme mit Alsa konfig

Beitrag von ainawing » 31.12.2017 11:53:09

Super, danke! Ich werde auch mal weiter testen. Habe jetzt noch die eine oder andere Idee, die ich mal probieren will. Mal sehen wie die so laufen...

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Probleme mit Alsa konfig

Beitrag von smutbert » 02.01.2018 00:29:40

Bei Alsa ist es dabei geblieben, dass entweder die Aufteilung der Kanäle nicht funktioniert oder nur ein Kanalpaar gleichzeitig genutzt werden kann (wobei ich letzteres Problem nicht einmal ansatzweise verstehe).

Auch die Lösung mit Pulseaudioist ist mir nicht auf Anhieb geglückt, aber jetzt habe ich es. Ich erkläre es anhand einer (Alsa-)Loopbacksoundkarte, die man erhält, wenn man das Kernelmodul »snd-aloop« lädt, aber meine Beschreibung ist hoffentlich soundkartenunabhängig verständlich (ich schreibe es ohnehin etwas ausführlicher als normalerweise, weil ich vielleicht irgendwann einen Wikiartikel daraus machen will ☺):
  • Liste der Soundkarten
    Als erstes wollen wir eine Liste der Soundkarten, im folgenden habe ich der Übersichtlichkeit wegen einen Großteil der Ausgabe weggelassen

    Code: Alles auswählen

    $ pactl list cards
    Karte #0
    	Name: alsa_card.pci-0000_00_03.0
    	[…]
    
    Karte #1
    	Name: alsa_card.pci-0000_00_1b.0
    	[…]
    	
    Karte #2
    	Name: alsa_card.platform-snd_aloop.0
    	Treiber: module-alsa-card.c
    	[…]
    	Profile:
    		[…]
    		output:analog-surround-71: Analog Surround 7.1-Ausgabe (Ziele: 1, Quellen: 0, Priorität: 700, verfügbar: ja)
    		[…]
    	Aktives Profil: output:analog-stereo
    	[…]
    
    In meinem Beispiel mache ich es wie gesagt mit der Loopback-Soundkarte, das ist die letzte und sie heißt »alsa_card.platform-snd_aloop.0« und wie zu sehen ist steht für die Soundkarte ein 7.1-Profil namens »analog-surround-71« zur Verfügung
  • Ausgabeprofil der Soundkarte
    Nun sorgen wir dafür, dass die Soundkarte alle Kanäle zur Ausgabe zur Verfügung stellt

    Code: Alles auswählen

    $ pactl set-card-profile alsa_card.platform-snd_aloop.0 output:analog-surround-71
    
  • „virtuelle Soundkarten“
    Mit dem Pulseaudiomodul »module-remap-sink« können wir jetzt 2-kanalige, virtuelle Soundkarten definieren, die dann den Ton (hoffentlich) über die richtigen Kanäle der realen Soundkarte wiedergeben. Im Beispiel sollen es zwei virtuelle Soundkarten namens »stereo1« und »stereo2« sein, die ihre zwei Kanäle an „vorne links“ und „vorne rechts“ bzw. an „hinten links“ und „hinten rechts“ weiterleiten:

    Code: Alles auswählen

    $ pactl load-module module-remap-sink sink_name=stereo1 master=alsa_output.platform-snd_aloop.0.analog-surround-71 channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right remix=no
    $ pactl load-module module-remap-sink sink_name=stereo2 master=alsa_output.platform-snd_aloop.0.analog-surround-71 channels=2 master_channel_map=rear-left,rear-right channel_map=front-left,front-right remix=no
    
    Nach demselben Muster können natürlich auch noch weitere Karten definiert werden, aber ich würde mich vermutlich pro Soundkarte auf 3 Stereopaare beschränken, weil der Subwoofer-Kanal möglicherweise nicht bei jeder Soundkarte für die Wiedergabe von Tönen aller hörbaren Frequenzen geeignet ist.
    Die Namen aller 8 Kanäle lauten in Pulseaudio
    • front-left
    • front-right
    • rear-left
    • rear-right
    • front-center
    • lfe
    • side-left
    • side-right
    Jetzt sollten die neu definierten „Senken“ (die virtuellen Soundkarten) zusätzlich zu den tatsächlich vorhandenen zur Verfügung stehen

    Code: Alles auswählen

    $ pactl list sinks short
    0	alsa_output.pci-0000_00_03.0.hdmi-stereo	module-alsa-card.c	s16le 2ch 48000Hz	SUSPENDED
    5	alsa_output.platform-snd_aloop.0.analog-surround-71	module-alsa-card.c	s16le 8ch 44100Hz	IDLE
    8	alsa_output.pci-0000_00_1b.0.iec958-stereo	module-alsa-card.c	s16le 2ch 44100Hz	SUSPENDED
    9	stereo1	module-remap-sink.c	s16le 2ch 44100Hz	SUSPENDED
    10	stereo2	module-remap-sink.c	s16le 2ch 44100Hz	SUSPENDED
    
Testen kannst du mit

Code: Alles auswählen

$ PULSE_SINK=stereo1 aplay /usr/share/sounds/alsa/Front_Left.wav 
$ PULSE_SINK=stereo2 aplay /usr/share/sounds/alsa/Front_Left.wav 
Wenn das funktioniert, kannst du (glaube und hoffe ich) diese Senken mit mpd einzeln ansprechen, ungefähr so

Code: Alles auswählen

[…]

audio_output {
    type "pulse"
    name "Stereo 1"
    sink "stereo1"
}

audio_output {
    type "pulse"
    name "Stereo 2"
    sink "stereo2"
}

[…]
Edit:
Vermutlich stösst du noch auf Probleme, wenn du mpd als anderer Benutzer ausführst als Pulseaudio bzw. du Pulseaudio als anderer Benutzer konfigurierst.
Für diesen Fall wäre es interessant zu wissen wie mpd oder allgemein der Computer laufen soll (zum Beispiel ohne Monitor und lokal angemeldeten Benutzer oder vielleicht als normales Desktopsystem mit grafischer Oberfläche und mpd soll nur laufen wenn jemand oder ein bestimmter Benutzer angemeldet ist, u. s. .w).
Zuletzt geändert von smutbert am 07.01.2018 13:02:28, insgesamt 1-mal geändert.

ainawing
Beiträge: 9
Registriert: 17.12.2017 22:36:58

Re: Probleme mit Alsa konfig

Beitrag von ainawing » 07.01.2018 11:34:37

Hiho,

Entschuldige die späte Rückmeldung. Ich habe mir über Silvester was eingefangen und bin heute den ersten Tag wieder halbwegs auf den Beinen.
Ich versuche das Ganze gleich mal.
Das System soll ohne angemeldeten Benutzer laufen. Es hat zwar eine Gui, allerdings habe ich so meine Probleme mit dem Remote-Zugriff auf selbige. Anderes, Thema, ich weis. Wollte nur erwähnen, dass das keine Option ist. Monitor, Keyboard und Maus sind ebenfalls nicht angeschlossen.

Ich melde mich dann nochmal nach den Versuchen.

EDIT: Ich glaube in deinem Mapping Code hast du dich vertippt? Ist zwei mal stereo1 als sink name drin.

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Probleme mit Alsa konfig

Beitrag von smutbert » 07.01.2018 13:02:10

Ja, vertippt (und in Kürze korrigiert) und zu mpd und pulseaudio schreib ich auch noch etwas...

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Probleme mit Alsa konfig

Beitrag von smutbert » 07.01.2018 21:38:33

Ok, also du kannst entweder mpd als der Benutzer ausführen als der du angemeldet bist, das ist zumindest zum Testen praktikabel. Vorbereitet ist das bereits: Es gibt sowohl eine systemd-User-unit wie auch »/etc/xdg/autostart/mpd.desktop«, das bei der grafischen Anmeldung mpd automatisch startet, wenn eine benutzerspezifische Konfigurationsdatei existiert (glaube »~/.mpdconf«) und auf der Kommandozeile kann man es natürlich auch ganz einfach starten

Code: Alles auswählen

$ mpd ~/.mpdconf

Sonst ist es meiner Meinung nach das einfachste Pulseaudio als systemweiten Daemon zu betreiben, wie ich es zum Beispiel hier beschrieben habe:
https://wiki.debianforum.de/Audiokonfig ... ter_Daemon
Damit der Benutzer mpd auf das systemweite Pulseaudio zugreifen kann, musst du ihn zur Gruppe pulse-access hinzufügen

Code: Alles auswählen

# adduser mpd pulse-access
und Pulseaudio als systemweiter Daemon hat einige Nachteile, zum Besipiel ist es ein mögliches Sicherheitsrisiko und genau aus diesem Grund können (dürfen) auch keine Pulseaudio-Module mehr nachgeladen werden. Ich hab das selbst in so einem Szenario noch nie getestet, aber ich vermute es bedeutet, dass die Kanal-Umleitungen bereits in »/etc/pulse/system.pa« festgelegt sein müssen (statt »/etc/pulse/default.pa« für eine benutzerspezifische Pulseaudio-Instanz).


Die eigentlich richtigere Variante wäre es vermutlich mpd unter dem eigenen Benutzeraccount Pulseaudio starten zu lassen.
Zumindest das funktioniert vermutlich bereits ohne weitere Maßnahmen nur wie man dann Pulseaudio konfiguriert weiß ich nicht so ganz. Mit der »/etc/pulse/default.pa« sollte es natürlich funktionieren, aber rein instinktiv würde ich eher eine benutzerspezifische Kopie dieser Datei anlegen (»~/.config/pulse/default.pa«) und da bin ich mir nocht sicher ob das wirklich funktioniert, wenn man diese Datei in »/var/lib/mpd/.config/pulse/default.pa« anlegt.

ainawing
Beiträge: 9
Registriert: 17.12.2017 22:36:58

Re: Probleme mit Alsa konfig

Beitrag von ainawing » 20.01.2018 16:24:13

Okay. Nachdem es mir jetzt wieder besser geht habe ich mich nochmal damit beschäftigt und bin auf ein paar Fragen gestoßen.

Genau genommen habe ich noch ein paar Probleme mit Pulseaudio. Wie sollte man das am besten starten? Ich würde es gerne so einrichten, dass es immer beim Systemstart startet (auch ohne GUI und einloggen).

Wie sollte das mapping eingerichtet werden? Ist es notwendig das in irgendeine Konfig zu schreiben oder merkt sich das Pulseaudio von alleine?

Ich habe momentan das Problem, dass ich beim testen von Pulseaudio Fehler bekomme:

Code: Alles auswählen

$ pactl list cards
Verbindungsfehler: Verbindung verweigert
pa_context_new() fehlgeschlagen: Verbindung verweigert
Meine Vermutung ist, das ich irgendwas kaputt gemacht habe, als ich versucht habe Pulseaudio automatisch starten zu lassen und nun mag es gar nicht mehr...
Ich würde mpd und ympd einfach unter dem Nutzer mpd ausführen, was nicht zu Problemen führen sollte.

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Probleme mit Alsa konfig

Beitrag von smutbert » 20.01.2018 17:37:21

Das wird schon noch - ich habe auch den Verdacht, dass einige Details in meiner Anleitung im Wikiartikel fehlen könnten.... wenn du ungefähr danach vorgegangen bist, sollte es eine systemd-unit für pulseaudio geben:

Code: Alles auswählen

# systemctl status pulseaudio.service
ainawing hat geschrieben: ↑ zum Beitrag ↑
20.01.2018 16:24:13
Ich habe momentan das Problem, dass ich beim testen von Pulseaudio Fehler bekomme:

Code: Alles auswählen

$ pactl list cards
Verbindungsfehler: Verbindung verweigert
pa_context_new() fehlgeschlagen: Verbindung verweigert
Ist der Benutzer, mit dem du den Befehl ausgeführt hast Mitglied von pulse-access?

Code: Alles auswählen

# adduser ainawing pulse-access 

ainawing
Beiträge: 9
Registriert: 17.12.2017 22:36:58

Re: Probleme mit Alsa konfig

Beitrag von ainawing » 21.01.2018 20:03:27

Also... Anscheinend hatte ich im Tran den Dienst nicht richtig eingerichtet. Geht jetzt. Interessanter Hinweis dazu: Anscheinend muss auch root in die Gruppe pulse-access eingetragen werden, ansonsten hat auch der keinen Zugriff. Damit hatte ich irgendwie nicht gerechnet...

Das geht jetzt also so weit. Ich hatte jetzt noch ein Problem mit dem Persistieren, da ich mir nicht sicher war, wie das zu erledigen ist. Folgendermaßen habe ich es gemacht (bisher ungetestet, Feedback kommt sobald ich es habe):
Ich habe das Auswählen der Betriebsmodi der Karten (WICHTIG) und das remappen der Kanäle, wie von dir (händisch) beschrieben in die Datei

Code: Alles auswählen

/etc/pulse/system.pa
an das Ende angefügt (Betriebsmodi zuerst). Den 'pactl'-Teil des Befehls habe ich dabei weggelassen.
Damit startet jetzt alles erst mal und lässt sich auch fehlerfrei bedienen. Einen Audio-Test konnte ich bisher noch nicht machen, kommt aber auch spätestens Morgen.
Wenn ich alles bestätigt bekommen habe, poste ich auch nochmal meine Konfigs, so wie sie jetzt aussehen und meinen komplettes Setup, damit du es als Referenz mit aufnehmen kannst, wenn du möchtest.

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Probleme mit Alsa konfig

Beitrag von smutbert » 21.01.2018 20:36:35

Ja, das klingt alles vollkommen richtig. Wenn du magst, kannst du deine selbst eingetragenen Zeilen in der system.pa noch mit einem Pärchen .nofail/.fail „einklammern“ damit Schreibfehler bei Änderungen nicht gleich den kompletten Pulseaudiodienst lahmlegen, etwa so

Code: Alles auswählen

### Eigene Einstellungen
.nofail
set-card-profile alsa_card.platform-snd_aloop.0 output:analog-surround-71
load-module module-remap-sink sink_name=stereo1 master=alsa_output.platform-snd_aloop.0.analog-surround-71 channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right remix=no
load-module module-remap-sink sink_name=stereo2 master=alsa_output.platform-snd_aloop.0.analog-surround-71 channels=2 master_channel_map=rear-left,rear-right channel_map=front-left,front-right remix=no
# u. s. w.
.fail

ainawing
Beiträge: 9
Registriert: 17.12.2017 22:36:58

Re: Probleme mit Alsa konfig

Beitrag von ainawing » 21.01.2018 22:14:28

Okay. Tests sind durch und alles ist super. Den .nofail/fail habe ich nachgepflegt. Wenn du spezifische Konfigs haben möchtest, brauchst du mir nur Bescheid geben. Ist mir ein Vergnügen dir diese zukommen zu lassen.

Ansonsten erst mal Danke, dass du mir dabei geholfen hast ein Zwei-Jahres Projekt einer vollständigen Heim-Soundanlage endlich abzuschließen.

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Probleme mit Alsa konfig

Beitrag von smutbert » 22.01.2018 14:35:36

Gerne!

Deine Konfiguration wäre vielleicht schon interessant, allerdings habe ich momentan keine Muße sie mir anzusehen.
Du könntest sie als Abschluss es Threads posten, wenn du sicher bist, dass alles wunschgemäß funktioniert.

Antworten