Based on this post: https://raspberrypi.stackexchange.com/a/58174 I was able to get 4 usb microphones to behave as 1 device with 4 channels. What I am looking to do is down mix the 4 microphones into a 2 channel device. I thought this was achievable by doing the following:

pcm.multi {
    type multi;
    slaves.a.pcm "hw:0,0";
    slaves.a.channels 1;
    slaves.b.pcm "hw:1,0";
    slaves.b.channels 1;
    slaves.c.pcm "hw:2,0";
    slaves.c.channels 1;
    slaves.d.pcm "hw:3,0";
    slaves.d.channels 1;
    bindings.0.slave a;
    bindings.0.channel 0;
    bindings.1.slave b;
    bindings.1.channel 0;
    bindings.2.slave c;
    bindings.2.channel 0;
    bindings.3.slave d;
    bindings.3.channel 0;

ctl.multi {
    type hw;
    card 0;

pcm.ttable {
    type route;
    slave.pcm "multi";
    slave.channels 2;   #### Set it to 2 channels
    ttable.0.0 0.5;     #### input 0 to output 0
    ttable.1.1 0.5;     #### input 1 to output 1
    ttable.2.0 0.5;     #### input 2 to output 0
    ttable.3.1 0.5;     #### input 3 to output 1

ctl.ttable {
    type hw;
    card 0;

This doesn't work when recording in Audacity. I can record 4 channels in Audacity when I set the ttable to 4 channels and use the following:

ttable.0.0 1;    
ttable.1.1 1;     
ttable.2.2 1;
ttable.3.3 1;

My ultimate goal is to be able to use all four mics as one input in chromium, which apparently will not allow you to use a device with more than 2 channels. Alsa is completely new to me so any advice would be appreciated.

Many Thanks,


1 Answer 1


The plugin parameters are not inputs and outputs, but master and slaves. So for capture, you have to exchange them:

pcm.ttable {
    type route
    slave.pcm "multi"
    slave.channels 4    # the slave has 4 channels
    ttable.0.0 0.5      # master ch 0 - slave ch 0
    ttable.1.1 0.5      # master ch 1 - slave ch 1
    ttable.0.2 0.5      # master ch 0 - slave ch 2
    ttable.1.3 0.5      # master ch 1 - slave ch 3
  • Thanks for the quick response. I think this may have done it except Audacity keeps freezing when I try to record and for some reason at least 1 microphone each time refuse to record at all (using the ttable or just recording them individually) which is strange. I will do some more tests but I think your suggestion is where I was going wrong. The only other change I have made is pcm.!default { type hw card 0 } and ctl.!default { type hw card 0 } so I'm not sure why the mics that work on other machines and have previously worked on this pi have suddenly stopped. Thanks, S. May 16, 2018 at 18:42
  • I don't know if the Pi has enough USB bandwidth to handle all devices, or if they all run at exactly the same speed.
    – CL.
    May 16, 2018 at 20:38
  • I was wondering about bandwidth, but the fact that it is happy with all 4 mics when I'm outputting 4 channels made me think otherwise. Speed could be more likely. I will run some tests tomorrow. Thanks again - big help. S May 16, 2018 at 21:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.