Xfce4-Zeitschaltuhr spielt Alarm trotz gleichzeitiger Alsa (direkt)Ausgabe

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
willy4711

Xfce4-Zeitschaltuhr spielt Alarm trotz gleichzeitiger Alsa (direkt)Ausgabe

Beitrag von willy4711 » 01.02.2020 12:46:25

Ich bin erschüttert: :evil: :evil:

Mein alter Rechner hatte diesen Internen PC- Lautsprecher.

Wenn die Pizza fertig war machte der dann sehr schön Krach,
egal was sonst noch am Rechner an Tönen via Alsa oder Pulse ausgegeben wurde.
Ging ganz einfach über das beep Kommando
beep - beep the pc speaker any number of ways
Mein neuer Rechner hat den Tweeter nicht.
Dafür hat mein schicker Monitor (per Display Port angeschlossen) jetzt so ne Art Lautsprecher :roll:

Für den Alarm habe ich diese höchst anspruchsvolle Skript geschrieben:

Code: Alles auswählen

#!/bin/bash
sh -c "aplay ~/Musik/Alarm_Sounds/salamisound-5129910-alarmsirene-drei-mal-heulen.wav"
exit
Nun hatte ich Folgendes erwartet:

1. Szenario:

Solange ich meinen USB- DAC nicht eingeschaltet habe und alles via PA über den
Monitor ausgebe, sollte es funktionieren. ----> Erwartung erfüllt.

2. Szenario:


Ich stelle in Pasystary die Default -Sink auf meinen DAC
Beide Töne kommen via DAC aus meinen Boxen ----> Erwartung erfüllt

3. Szenario.

Ich spiele mit meinem Musikprogramm direkt über Alsa --> USB ---> TEAC----->Verstärker

Erwartung:

Keine anderen Töne ohne Alsamixer möglich -----> Stimmt nur noch bedingt !!

Solange in PA die Default Sink auf meinen DAC (TEAC_USB_AUDIO_DEVICE) gestellt ist, trifft das zu

Wenn ich aber in pasystray dort auf Internes Audio Digital Stereo (Hdmi)-Ausgabe stelle gibt der Monitor Lautsprecher "Laut"
obwohl gleichzeitig über Alsa direkt Musik gespielt wird.

der Zustand ist dann so:

Code: Alles auswählen

$ $ pactl list sinks short
8       alsa_output.pci-0000_00_1f.3.hdmi-stereo        module-alsa-card.c      s16le 2ch 44100Hz       IDLE
10      alsa_output.usb-TEAC_TEAC_USB_AUDIO_DEVICE-02.analog-stereo     module-alsa-card.c      s16le 2ch 44100Hz       SUSPENDED
und

Code: Alles auswählen

[code]$ aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: PCH [HDA Intel PCH], Gerät 0: ALC1220 Analog [ALC1220 Analog]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 1: ALC1220 Digital [ALC1220 Digital]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 3: HDMI 0 [HDMI 0]
  Sub-Geräte: 0/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 7: HDMI 1 [HDMI 1]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 8: HDMI 2 [HDMI 2]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 9: HDMI 3 [HDMI 3]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 10: HDMI 4 [HDMI 4]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 1: DEVICE [TEAC USB AUDIO DEVICE], Gerät 0: USB Audio [USB Audio]
  Sub-Geräte: 0/1
  Sub-Gerät #0: subdevice #0
[/code]

Wer es nicht glaubt:

Code: Alles auswählen

~$ cat /proc/asound/card1/pcm0p/sub0/hw_params 
access: RW_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 192000 (192000/1)
period_size: 19200
buffer_size: 96000
Damit ist mein bisheriges bruchstückhaftes Wissen über das Linux- Sound- Chaos grundlegend erschüttert.

Ohne irgendeinen speziellen Alsamixer dürfte das nicht gehen .
Wie kommt Pulseaudio dazu, einfach an Alsa vorbei Töne weiter zureichen :?: :?: :roll: ??

Bitte um Erklärung, und Erläuterung.
Ich bin am Verzweifeln ist da vielleicht Malware
im Kernel 5.4.0-3 ?? :| :roll: :mrgreen:

Wenn da nun nicht gerade ein BUG oder Malware am Werkeln ist, stellt sich mir dann sogleich diese Frage:

Wie kann ich in obigen Skript aplay (bzw. PA) beibringen, als Sink die alsa_output.pci-0000_00_1f.3.hdmi-stereo
zu benutzen?
Ich möchte ungern durch Rauchschwaden daran erinnert werden, dass die Pizza "fertig" ist. :hail:

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

Re: Xfce4-Zeitschaltuhr spielt Alarm trotz gleichzeitiger Alsa (direkt)Ausgabe

Beitrag von smutbert » 01.02.2020 14:23:42

Wenn du Musik direkt über Alsa an einer Soundkarte (oder deinem DAC) wiedergibst, dann ist diese Soundkarte zwar sozusagen für andere blockiert (wobei auch das nicht prinzipiell so sein muss – mit dem dmix-Plugin von Alsa können sowohl mehrere Alsa-Programme wie auch ein entsprechend konfiguriertes Pulseaudi gleichzeit über dieselbe Soundkarte wiedergeben).
willy4711 hat geschrieben: ↑ zum Beitrag ↑
01.02.2020 12:46:25
Wie kann ich in obigen Skript aplay (bzw. PA) beibringen, als Sink die alsa_output.pci-0000_00_1f.3.hdmi-stereo
zu benutzen?
Das geht auf verschiedene Arten. Ohne Umwege ginge es mit paplay statt aplay:

Code: Alles auswählen

paplay -d alsa_output.pci-0000_00_1f.3.hdmi-stereo ~/Musik/Alarm_Sounds/salamisound-5129910-alarmsirene-drei-mal-heulen.wav
mit aplay geht es über Umgebungsvariablen, zB

Code: Alles auswählen

env PULSE_SINK=alsa_output.pci-0000_00_1f.3.hdmi-stereo aplay ~/Musik/Alarm_Sounds/salamisound-5129910-alarmsirene-drei-mal-heulen.wav
oder

Code: Alles auswählen

PULSE_SINK=alsa_output.pci-0000_00_1f.3.hdmi-stereo
aplay ~/Musik/Alarm_Sounds/salamisound-5129910-alarmsirene-drei-mal-heulen.wav
(das sh -c sollte im Skript ja nicht notwendig sein.)

willy4711

Re: Xfce4-Zeitschaltuhr spielt Alarm trotz gleichzeitiger Alsa (direkt)Ausgabe

Beitrag von willy4711 » 01.02.2020 14:54:32

Perfekt. Funktionieren beide hervorragend. Danke vielmals :THX: :THX: :hail:
Die Pizza ist gerettet :mrgreen:
Und gelernt hab ich auch gleich was.
Ich war bisher der Meinung, wenn Alsa belegt ist, dass es dann nur durch einen Mixer (wie den von dir erwähnten dmix) möglich
ist, weitere Töne auszugeben.
Allerdings hatte ich auch nie nie den Luxus zweier Lautsprecher.

Gleich noch mal ein paar weitere Fragen:
Der Monitor ist ja über den Display Port angeschlossen. Warum dann HDMI ?
gehe dann ich richtig in der Annahme, dass der Monitor an diesem Subdevice hängt:

Code: Alles auswählen

Karte 0: PCH [HDA Intel PCH], Gerät 3: HDMI 0 [HDMI 0]
  Sub-Geräte: 0/1
  Sub-Gerät #0: subdevice #0
Könnten dann die anderen Sub-Geräte etwa auch noch angeschlossen werden und mit Ton versorgt werden
als jeweils unterschiedliche Sinks ?

Soo dumm ist Pulseaudio wirklich nicht wie mir scheint. Nix gemacht außer die passende Firmware
zu ziehen aus den Repos und für Bluetooth von Github ----> das wird denn die nächste Baustelle (vielleicht ja auch nicht)

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

Re: Xfce4-Zeitschaltuhr spielt Alarm trotz gleichzeitiger Alsa (direkt)Ausgabe

Beitrag von smutbert » 01.02.2020 15:26:25

Aus Softwaresicht sind DisplayPort, HDMI und DVI wohl so ziemlich das gleiche und werden ja auch sonst, zB von xrandr nicht immer richtig benannt. Ich nehme an es hat sich bei Pulseaudio niemand die Mühe gemacht zwischen HDMI und DisplayPort zu unterscheiden. Auch bei mir heißt DP seit jeher HDMI obwohl Monitor samt Lautsprecher per DP angeschlossen sind.
willy4711 hat geschrieben: ↑ zum Beitrag ↑
01.02.2020 14:54:32
Könnten dann die anderen Sub-Geräte etwa auch noch angeschlossen werden und mit Ton versorgt werden
als jeweils unterschiedliche Sinks ?
Im Prinzip ja, ist aber ein bisschen verzwickt:

Der komplette Onboardsound inklusive HDMI/DP erscheint bei dir genau wie bei mir in Alsa (und Pulseaudio) als eine Soundkarte mit mehreren Geräten, nämlich Karte 0 mit den Geräten 0, 1, 3, 7, 8, 9 und 10. Pro Karte richtet Pulseaudio nur eine Senke ein – welcher Anschluss das ist und welche Funktion genau zur Verfügung steht, ist das was man unter pavucontrol unter „Konfiguration“ beim Profil einstellt.


Willst du mehrere Geräte einer Soundkarte gleichzeitig mit Pulseaudio nutzen, dann musst du Pulseaudio beibringen für die Karte mehrere Senken gleichzeitig zur Verfügung zu stellen. In der »/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf« gibt es am Ende dafür ein Beispiel.
Ein weiteres kann ich liefern. Ich möchte zum Beispiel gleichzeitig den analogen Ausgang, den digitalen Ausgang und den DisplayPort-Ausgang (bei mir HDMI 1, was dann in Pulseaudio mit 2 nummeriert wird) nutzen. (Bei dir wären das die Geräte 0, 1 und 7 der Karte 0.)
Das sieht dann bei mir so aus

Code: Alles auswählen

[Profile output:hdmi-stereo-extra2+output:iec958-stereo+output:analog-stereo]
description = HDMI, Analog and Digital Stereo Output
output-mappings = hdmi-stereo-extra2 iec958-stereo analog-stereo
Dann steht in pavucontrol unter Konfiguration das Profil „HDMI, Analog and Digital Stereo Output“ zur Wahl.

Wichtig ist die Nummerierung also wie du siehst nur bei HDMI/Displayport und dort muss man zur Alsa-Zählung eins dazuzählen, aber nicht zur Gerätenummer (7) sondern zur HDMI-Nummerierung (in Alsa HDMI 0 [HDMI 0] → in Pulseaudio hdmi-stereo-extra2).
Etwas Phantasie ist also schon notwendig und ich weiß auch nicht was das extra in der HDMI bei mir soll... ich habe jedenfalls einige Versuche gebraucht bis es problemlos funktioniert hat.

Ach so und aufpassen bei Updates von Pulseaudio: dabei wird die »/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf« wieder überschrieben.

Antworten