I've been asked (if it's possible) to write a program monitoring the input of at least 20 microphones, on a single computer.
Currently I'm prototyping in python (2.6), on a Ubuntu system using Alsa. My attempts so far have created quite a few questions...
Ubuntu is a requirement, Alsa isn't, and python is an ideal.
For hardware, one suggestion is multiple sound cards. The other is a series of usb hubs and microphone adaptors (like these) (In which case the devices would all be identical and on the same USB bus)
Questions:
How can I simultaneously record multiple microphones from a single sound card? (e.g. using line-in as well as mic, bonus for anyone who know how I can use more than just two inputs!)
In the USB setup, how can I identify which position a sound card (usb adapter) in plugged in to a USB hub (or chain of USB hubs).
If a solution is raw access to the microphones via USB, is a devices position on a usb bus depend only on which port on a USB hub they are plugged into, or do could it change between powering the computer on and off?
Last, if using raw access, how do I best get the data (no current experience with pyUSB) and what conversion (if any) is required from raw -> audio?
Edit:
By monitor, I've been asked to record input to disk (ideally above a set threshold, which the speex codec looks ideal for), monitor volume levels, provide graphic feedback and set up at least one output that cycles through all active microphones.
Python isn't a long term requirement, just the easiest way I've found so far to get the PCM data from a sound card (microphone only however)
I am intending to have the polling of the soundcards and data processing take place in separate threads, an area that I haven't got much experience with.
Where would I find more information on implementing a USB audio class driver?