alsa-project / alsa-lib

The Advanced Linux Sound Architecture (ALSA) - library
GNU Lesser General Public License v2.1
366 stars 177 forks source link

[Question] Different routing + sample formats for input and output #135

Open flatmax opened 3 years ago

flatmax commented 3 years ago

One soundcard I use has different output and input sample formats. The input format is S32_LE. The output format is S24_3LE. There is also a routing change I like to do.

My current .asoundrc (below) uses the asym plugin to manage input and output difference. The asym plugin creates problems for some unknown reason where I get overruns : ALSA lib pcm.c:8545:(snd_pcm_recover) overrun occurred

If I switch my setup to using the soundcard for output and a second USB microphone for input, then I don't get any overruns. I still use the asym plugin to make it work and it works nicely.

I have also tried simply the plug pluging, however I still get overruns.

Is there any way to setup the one soundcard with routing and format changes without using the asym plugin ? Or is there a better way to setup the one soundcard with the required routing and format changes ?

########## BEGIN ~/.asoundrc ###################
@hooks [
    {
        func load
        files [
            "~/.asoundrc"
        ]
        errors false
    }
]

pcm.!default {
    type asym
    playback.pcm "UMC1820_12ch_play"
    capture.pcm "UMC1820_10ch_capt"
}

ctl.!default {
  type hw
  card "UMC1820"
}

pcm.UMC1820_12ch_play {
  type route;
  slave.pcm "hw:UMC1820";
  slave.format S24_3LE;
  slave.channels 12;
  ttable.0.2 1
  ttable.1.3 1
  ttable.2.4 1
  ttable.3.5 1
  ttable.4.6 1
  ttable.5.7 1
  ttable.6.8 1
  ttable.7.9 1
  ttable.8.10 1
  ttable.9.11 1
  ttable.10.0 1
  ttable.11.1 1
}

pcm.UMC1820_10ch_capt {
  type route;
  slave.pcm "hw:UMC1820";
  slave.format S32_LE;
  slave.channels 10;
    ttable.0.0 1
  ttable.1.1 1
  ttable.2.2 1
  ttable.3.3 1
  ttable.4.4 1
  ttable.5.5 1
  ttable.6.6 1
  ttable.7.7 1
  ttable.8.8 1
  ttable.9.9 1
}
########## END ~/.asoundrc ###################