ALSA multi plugin error when combining two soundcards
GitHub issues - opened
github at alsa-project.org
Wed Oct 5 16:05:50 CEST 2022
alsa-project/alsa-lib issue #273 was opened from anthonio9:
My goal is to mix the output of two sound cards (RAVENNA from [bondagit](https://github.com/bondagit/aes67-linux-daemon.git) and hifiberry), then pass it to a DSP pcm plugin. As it's not possible with `dmix` (dmix only supports output to hw devices) the reasonable next step was `multi` plugin, but my tries always end up in a failure. Below is a quite standard `multi` configuration inspired by alsa docs that I'm using:
```sh
pcm.quad {
type multi
slaves.a.pcm "hw:RAVENNA"
slaves.a.channels 2
slaves.b.pcm "hw:sndrpihifiberry"
slaves.b.channels 2
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1
master 1
}
pcm.quad2 {
type plug
slave.pcm "quad"
}
```
This is run with `alsaloop` to be input into an extplug plugin that easily accepts 4 channels of audio - `alsadsp`:
```sh
$ alsaloop -C quad -P alsadsp -c 4
Rate 48000Hz not available for capture quad: Invalid argument
Unable to set parameters for capture quad stream: Invalid argument
Loopback start failure.
```
This results in a failure, moreover running `quad2` also results in the same type of error.
Next step was to try plug pcm:
```sh
pcm.quad_plug {
type multi
slaves.a.pcm "plughw:RAVENNA"
slaves.a.channels 2
slaves.b.pcm "plughw:sndrpihifiberry"
slaves.b.channels 2
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave a
bindings.2.channel 0
bindings.3.slave a
bindings.3.channel 1
}
pcm.quad_plug2 {
type plug
slave.pcm "quad_plug"
}
```
With `quad_plug` the same error occurs, with `quad_plug2` the error is as below:
```sh
$ alsaloop -C quad_plug2 -P alsadsp -c 4
Broken configuration for capture quad_plug2 PCM: no configurations available: Invalid argument
Unable to set parameters for capture quad_plug2 stream: Invalid argument
Loopback start failure.
```
Then the last thing I tried was to force the 48kHz sampling rate directly on the hardware devices with the help of the following config:
```sh
pcm.quad_48k {
type multi
slaves.a {
pcm {
type plug
slave.pcm "hw:RAVENNA"
slave.rate 48000
}
channels 2
}
slaves.b {
pcm {
type plug
slave.pcm "hw:sndrpihifiberry"
slave.rate 48000
}
channels 2
}
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1
}
```
and again it ends up with a failure:
```sh
$ alsaloop -C quad_48k -P alsadsp -c 4
Sample format not available for capture quad_48k: Invalid argument
Unable to set parameters for capture quad_48k stream: Invalid argument
Loopback start failure.
```
I know that both these cards are capable of running 48kHz, I'm doing that all the time. So what could be the cause of this error? `alsadsp` wants them to be 48kHz and if run separately it all works well, both cards set themselves according to `alsadsp` requirements. It works even if there's only one card in the multi plugin that occupies all 4 output ports - my conclusion is that it's not a problem of `alsadsp`.
Are there any other steps that could help solving the issue?
Issue URL : https://github.com/alsa-project/alsa-lib/issues/273
Repository URL: https://github.com/alsa-project/alsa-lib
More information about the Alsa-devel
mailing list