I'm playing around with USB audio recording on android, and I'm looking for a way to create multi-channel input over USB from multiple microphones, where each microphone is on a difference channel.

I don't care about managing gain of individual channels, or effects, or anything else, I just want the dumbest, most trivial way to get multiple microphones into a single USB audio interface.

Something similar to this, but with more inputs: http://www.sybausa.com/productInfo.php?iid=248


Before you get too far in - make sure you are aware of the latency issues common with most android devices. This might not matter for your application but it could be a dealbreaker if you are planning on doing overdubbing etc.

The first issue you will come up against with using multiple sound sources is that their clocks diverge. Even though each one is using crystals to lock their sample rate to (say) 44.1khz or 48khz they will all be slightly off from one another. If one is off from the other by 0.0001% that's a whole sample every 4.8 seconds. If you are combining all these signals into one then at some point you're going to get two samples from some devices when you have only one sample from others. The only option then is to drop or insert samples on those channels - CRACK!

This can happen at any time, with varying rates of occurrence. I was running a linux box for a while with multiple SB Live EX or somethings and in order to get it to work I was able to interconnect the cards via SPDIF which (due to a quirk of the card's specific architecture) effectively slaved their clocks together and brought all the other cards inputs into one master card. It mostly worked, but I still had cracks and pops now and then, presumably from clock divergence. You may also be able to physically connect their crystal signals together but noise problems are very likely if you're not a legend with EE stuff.

The cheapest way of doing it well is probably the Behringer FCA series of interfaces, they are the most affordable multi-channel interfaces I've found. I have replaced my setup with an FCA1616 giving me 8 channels (4 with preamps) and another 8 optionally with an adat expansion. I am loving it and have been able to switch from a PC-in-a-rack to using a laptop (meh.. still in a rack :-) ). They have both firewire and usb interfaces on them, I have found the usb interface works well and seems more stable than firewire.

There really is no way around the "all-your-inputs-via-one-device" requirement, trying to do audio-RAID just doesn't work very well in general, but if the pops and clicks aren't an issue it can be done.

As for the driver/software side of things I'm not sure how they would play out on Android. I would think you'll have to root the device to get very far, but I don't know if android uses alsa at the driver level or if google replaced it with something else. You'll have a whole other world of pain there too, I imagine :-) If it's alsa you can bind multiple interfaces together as a single virtual interface - with all the above issues that come with that. JACK is fussier but I think it can still be made to work using the same ALSA trick underneath it, not sure.

What's your application? Are you wanting to do music recording or is this for something else like surveillance or monitoring? For music it's really difficult, but for the latter two you could just run separate interfaces, with separate instances of an app to record the input from each device into individual output files, which you could then merge later.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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