Multi channel output

I am doing some research to build a system that can output to multiple
speakers and came across your name in one of the forums.

I am an independent (non-commercial) developer, and I wanted to create a
linux based system that lets me control 12 speakers arranged in
different geometries for performance art. I will be building everything
from scratch, a 12 channel amp, high sensitivity speakers, and now
I am thinking about the control software. Ideally I would like to use 2
or 3 sound cards in a PC and control how sound is sent to the amp. Some
of my requirements are:

+ Most of the channels in the cards will be used for playback, but some
will be for input (perhaps only 2 from a console mixer).

+ Spatial control. Ie, to control the perceived location of sound. This
is a bit complicated and may not be achievable at first. Some of the
speakers may be in a different plane than horizontal to achieve a 3d
effect.

+ Special sweeps, for example a sound that travels in a circle, or
spiral, which is the same as a circle but with volume attenuation.

+ Effects from a two channel input.

+ The speakers geometry may be 10.2 (http://en.wikipedia.org/wiki/10.2),
or just arranged as a circle around the audience.

I would appreciate any help provided. It would be great if I don't have
to reinvent the wheel and not have to dab in device drivers.

You don't want two or three soundcards, you want 1, one of the RME HDSP series. You will need 12 channels of digital to analog conversion as well - choices there vary, but luckily there are not too many of them.

Spatial control will best be handled using ambisonics, which ardour can support and will need both the ambisonics plugins and decoder (ambdec) from fons adriensen. google will locate both of these for you.

What you want to do is actually relatively common, and involves no reinvention at all - everything is available off the shelf.

Thanks for your reply Paul. But RME is a Cadillac when I need a Pinto. Also it wasn't clear in the manual if Linux was supported. I am not clear how to get all those outputs. Will an extension board do, or an external ADAT is needed? Could you explain how to get 10+ analog outputs?

And thank you for pointing me to ambdec. It is very much in line with what I need to do. Is it possible to use it with off-the shelf cheap soundcards?

jamh - unless you plan to actually follow the physical steps outlined in the "el-cheapo" article so that the cards all share a single sample clock, i strongly advise you against the idea of trying to use multiple "cheap" audio interfaces. if what you are doing actually matters to you, you will run into so many irritating issues along the way that the extra cost of the RME will seem like small potatoes. If you value your own time at zero and don't mind doubling or tripling the amount of time your project will take, then multiple cheap soundcards will be a fine solution :) Even with the "el-cheapo" shared sample clock solution, there are still some distinct disadvantages compared to using an RME.

You might like to try: http://resound.sourceforge.net/
It's stable and has been using in a number of public concerts with 24 independent loudspeakers though HDSP9652 although it's jack so any cards would work. We used ardour as a tape machine and this for stage panning. Basically its a mix matrix with arbitrary I/O and you can control it via OSC. There is a GUI that offers automation and proportional group control.

It depends on the RME card. If you are looking at internal PCI cards you can utilize expansion cards to achieve this IIRC. Other cards have ADAT that you could utilize with an external DA, I have a Presonus DigimaxFS I used for this myself. So it still depends a bit.

However all that being said, you might want to look at the Echo Audiofire line of cards if you just need line level input and/or output. The Audiofire 12 has 12 analog inputs and outputs, and would be much better than soldering together your own homegrown solution. I use these all the time for theater sound playback and they work well, though I can't speak for Linux suport, but I believe they are supposed to be fully supported under FFADO.

You can also link multiple of these together when you need more I/O, again I can't speak for Linux(Sorry haven't tried one under Linux) but it should be possible.

Another possibility would be to use 2 M-Audio1010LT cards (about 200$ each - maybe you would find them cheaper on EBay). They have got a worldclock out and a worldclock in - so you can syncronise multiple cards without soldering. And I think there is another way to synchronise them - but I don't know what it is and how it works.

I am just using one of those - and in this case they are working out of the box - never had the need for more than 8 channels, so I've never tried to use more than one of those.

jamh, you don't want to fiddle around with multiple cards unless you can make sure they run absolutely synchronously. That not only means synchronized word clocks (as your patch above results in), but also synchronized buffers - the data has to arrive there synchronously sample by sample, or your spatial impression will vanish.

Practically ALL proper working installations of such kind on this planet use Linux + jack + RME cards, so do yourself a favour and rest on years of experience.

Also a RME card with 12 channels would be a very, very small card (they go up to 64 channels per card and you can use multiple cards), so there would be much room for future improvement.

If you use different converters (internal multiface DACs (pretty old) and external DAC (probably younger)), you have a (sometimes significant) conversion latency. Just make sure this won't affect your project or be prepared to compensate for that.

But it depends on your project wether that might harm the spatial impression.