Accessing Raw Audio Streams

We are a group of students doing an acoustical project at Carnegie Mellon University. In short, our project is doing sound location using multiple inputs to pinpoint a single source location.

We are using Audacity to save the 8 channels of sound that we have connected to our Delta 1010 configuration.
Is it possible to directly access the 8 input channels either through Audacity or directly from the Delta 1010 so that we can stream the sampled data out to another hardware board?


The Delta 1010’s driver software should let you route each input directly to another output. I use the Delta 1010LT and I can do that without using Audacity at all.

That said, Audacity can’t output to more than 2 channels for the moment, so you can’t use Audacity to play back files you’ve recorded. You’ll have to use Audacity 1.3.3 or later to make an 8-channel wav file and use different software to play that back.

I can’t comprehend why you’re using 8 mics though. You should only want n+1 mics (where n is the number of axes you’re trying to measure). So for a 2D measurement you only need 3 mics, and you only need 4 mics for a 3d measurement. Adding more mics only makes the computation harder.

We’re actually trying to take the sampled data output from the Delta 1010’s A/D and send that to a Digital Signal Processing board through a USB connection. We’re trying to access the raw stream of sound data coming into the PC (possibly via the PCI bus?) so that there is no delay in sending each sample to our DSP processor.

Is there a software package that allows you to capture sampled data (a la DirectX audio) and interface that with c/C++ code?

8 Mics are for redundancy. We’re using an array setup and calculating realative delay between pairs to derive an angle approximation to a source. All are on the same axis.

You want to write yourself a real-time OS kernel driver for that - nothing else is going to let you bypass all cacheing and access the raw PCI bus data.
If all you need is synchronisation, not minimal latency delay from point to point, then I think what you need is a sound driver for your USB device, and then an audio routing application like Jack to get out of one card and into the other. This will achieve synchronisation and a low, but finite latency, without having to rewrite the kernel of your operating system. Audacity certainly isn’t the tool for the job.

A lot depends on what you have in the way of drivers for the USB device, both software for the PC end and firmware in the form of a USB slave stack at the other end.

Libsndfile can be used as a plug-in to load multi-channel audio files into Matlab, if that helps to get stuff processed, and I know someone who wrote an ASIO-to-Matlab bridge using Portaudio to do vaguely similar things.