alsa-Konfiguration für Tonausgabe auf mehrere Devices gleichzeitig?

Antworten
Melomane
Aktiver Hörer
Beiträge: 3134
Registriert: 14.10.2011, 18:30

alsa-Konfiguration für Tonausgabe auf mehrere Devices gleichzeitig?

Beitrag von Melomane »

Hallo,

ich wage es mal hier in diesem Forum. :cheers:

Ich wühle mich gerade durch das Internet, werde aber nicht wirklich fündig. Denn Antworten auf meine Frage befassen sich nicht mit dem exakt gleichen Problem. Und das ist:

Gegeben sind ein Raspberry Pi mit piCoreplayer und mehrere DACs. Der rpi nutzt Alsa zur Tonausgabe an ein Sounddevice. Nun möchte ich mehrere Devices gleichzeitig ansprechen mit derselben Musik. Um nämlich zu Vergleichszwecken die DACs zeitgleich ansprechen zu können. Kleine Spielerei also. ;)

Und wir haben momentan den Onboard-Chipsatz und einen USB-DAC:

Code: Alles auswählen

tc@piCorePlayer:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 7/7
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Control [Khadas Tone Control], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
Der HDMI-Part interessiert nicht.

So sieht die derzeitige asound.conf aus:

Code: Alles auswählen

tc@piCorePlayer:~$ cat /etc/asound.conf 
# default - Generated by piCorePlayer
pcm.!default {
        type plug
        slave.pcm "hw:0,0"
}

pcm.pcpinput {
        type plug
        slave.pcm "hw:1,0"
}

#---ALSA EQ Below--------
ctl.equal {
        type equal;
        controls "/home/tc/.alsaequal.bin"
        library "/usr/local/lib/ladspa/caps.so"
}

pcm.plugequal {
        type equal;
        slave.pcm "plughw:1,0";
        controls "/home/tc/.alsaequal.bin"
        library "/usr/local/lib/ladspa/caps.so"
}

pcm.equal {
        type plug;
        slave.pcm plugequal;
}
Damit wird der USB-DAC bedient.

Frage an die Linux-Kenner: Wie muss die asound.conf umgeschrieben werden, um auf beiden Devices gleichzeitig Musik in Stereo (nicht mehrkanalig) ausgeben zu können?

Gruß und Dank im voraus

Jochen
Bild
Melomane
Aktiver Hörer
Beiträge: 3134
Registriert: 14.10.2011, 18:30

Beitrag von Melomane »

Hm, ich argwöhne, dass der PiCorePlayer alsa noch an einer anderen Stelle konfiguriert. Denn wenn er auf ein anderes Ausgabedevice konfiguriert wird, sieht die asound.conf immer identisch aus. Vielleicht macht er das über das Laden der jeweiligen Module. Muss ich mal schauen. Jedenfalls sollte das Vorhaben über die asound.conf zusammengestrickt werden. Denke ich im Moment zumindest.
Bild
Melomane
Aktiver Hörer
Beiträge: 3134
Registriert: 14.10.2011, 18:30

Beitrag von Melomane »

OK, ja die Module spielen eine Rolle. Aber der entscheidende Punkt ist offensichtlich, dass squeezelite das Ausgabedevice als Parameter übergeben wird. Also gilt es offenbar die Frage anders zu stellen: Wie bringt man mit squeezelite mehrere Devices ins Spiel? Schaun mer mal.
Bild
bastelixx
Aktiver Hörer
Beiträge: 305
Registriert: 08.11.2015, 17:31

Beitrag von bastelixx »

Melomane hat geschrieben: 31.01.2020, 15:46 Hallo,

ich wage es mal hier in diesem Forum. :cheers:

Ich wühle mich gerade durch das Internet, werde aber nicht wirklich fündig. Denn Antworten auf meine Frage befassen sich nicht mit dem exakt gleichen Problem. Und das ist:

Gegeben sind ein Raspberry Pi mit piCoreplayer und mehrere DACs. Der rpi nutzt Alsa zur Tonausgabe an ein Sounddevice. Nun möchte ich mehrere Devices gleichzeitig ansprechen mit derselben Musik. Um nämlich zu Vergleichszwecken die DACs zeitgleich ansprechen zu können. Kleine Spielerei also. ;)

Und wir haben momentan den Onboard-Chipsatz und einen USB-DAC:

Code: Alles auswählen

tc@piCorePlayer:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 7/7
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Control [Khadas Tone Control], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
Der HDMI-Part interessiert nicht.

So sieht die derzeitige asound.conf aus:

Code: Alles auswählen

tc@piCorePlayer:~$ cat /etc/asound.conf 
# default - Generated by piCorePlayer
pcm.!default {
        type plug
        slave.pcm "hw:0,0"
}

pcm.pcpinput {
        type plug
        slave.pcm "hw:1,0"
}

#---ALSA EQ Below--------
ctl.equal {
        type equal;
        controls "/home/tc/.alsaequal.bin"
        library "/usr/local/lib/ladspa/caps.so"
}

pcm.plugequal {
        type equal;
        slave.pcm "plughw:1,0";
        controls "/home/tc/.alsaequal.bin"
        library "/usr/local/lib/ladspa/caps.so"
}

pcm.equal {
        type plug;
        slave.pcm plugequal;
}
Damit wird der USB-DAC bedient.

Frage an die Linux-Kenner: Wie muss die asound.conf umgeschrieben werden, um auf beiden Devices gleichzeitig Musik in Stereo (nicht mehrkanalig) ausgeben zu können?

Gruß und Dank im voraus

Jochen
Hallo Jochen,

ich bin kein große Linux-Kenner, aber ein gute Kumpel von mir hat mal vor gut 10Jahre für mich mehrere Soundkarten zur einer zusammen geschlossen mit .asoundrc. Wie es gemacht wird muss du googeln. Viel Erfolg!

Gruß
Stanislaw
Bild
Melomane
Aktiver Hörer
Beiträge: 3134
Registriert: 14.10.2011, 18:30

Beitrag von Melomane »

Hallo Stanislaw,

danke für deinen Beitrag. Aber die Sache geht wohl noch einfacher. Hab's gerade ausprobiert mit einem zusätzlichen Device:

Der Picoreplayer wird konfiguriert auf ein Ausgabedevice. Anschließend startet man für jedes weitere Device eine weitere squeezelite-Instanz. Z.B. so:

Code: Alles auswählen

/usr/local/bin/squeezelite-dsd -z -n piCorePlayer-Khadas -o front:CARD=Control,DEV=0 -a 80:4::1 -D 10 -v -m B8:27:EB:DE:03:CC
Man muss jeder Instanz nur eine individuelle MAC-Adresse und einen individuellen Namen geben, sonst kann man die verschiedenen Playerinstanzen nicht sehen. Und wenn man dann die verschiedenen Instanzen auf dem Schirm hat, synchronisiert man die. Falls das Konstrukt einen Reboot überleben soll, schreibt man noch ein Startscript, das die Playerinstanzen lädt.

Die Praxis mit allen verfügbaren Devices habe ich noch nicht probiert. ;)

Viele Grüße

Jochen
Bild
Melomane
Aktiver Hörer
Beiträge: 3134
Registriert: 14.10.2011, 18:30

Beitrag von Melomane »

Nachtrag: Sofern man nicht mehr als 3 zusätzliche Instanzen starten möchte, kann man das auch über die Tweaks-Seite vom picoreplayer über die User commands konfigurieren. Dann überlebt das auch einen Reboot.

Ist doch immer gut, wenn man eine andere als die ursprüngliche Frage ans Internet stellen mag. Dann bekommt man vielleicht - so auch hier - die passenden Antworten. :)
Bild
Antworten