Re: real-time threaded IO with low latency (audio)

David Olofson (olofson@angelfire.com)
Tue, 20 Jul 1999 12:24:13 -0700


On Mon, 19 Jul 1999 18:21:24 Eric wrote:
>> I can hardly see what you would want to do from within a signal
>> processing plug-in that requires that you use anything but the CPU and
>> the resources of the plug-in host.
>
>I hadn't been thinking about the class of programs you're talking
>about. I'm more into `music machines', and I've written one
>(www.hyperreal.org/~est/oolaboola) that gives me acceptable (1/50th
>second) latency even on 100 HZ linux.

We weren't talking about the same kind of applications, obviously! :-)

>But rtlinux does offer the ability to replace other
>types of audio hardware. Best of all, under
>rtlinux my stuff and your stuff can both run. :)

Yes, exactly. :-) The point with Audiality's plug-in + client application design (will write a post describing this a bit more this evening) is that applications can use the installed drivers and Audiality plug-ins as low latency capable hardware resources (or like plug-ins running on a dedicated DSP system), while working more or less like normal OSS/ALSA applications. The OSS and ALSA APIs can be supported in a number of ways. (Mapping dsp devs to sound cards, to virtual ports within the engine, mapping midi devs to plug-in presets or soft synth plug-ins etc...)

Applications don't have to care about Audiality, which mean that old applications will still work. A special mixer to load plug-ins and set up the signal routing for the OSS/ALSA compatible devices would cover quite a lot of uses. Actually, to set up the system as one or more real time signal processors (reverb, chorus..., replcaing dedicated rack units), that Audiality mixer app is all you need. Nothing needs to run in user space as soon as the routing is set up.

For better efficiency and more control in some tasks (multi track streaming to/from disk for example), a special API library will take care of interfacing with the engine via shared memory and RT-FIFOs. This new API will probably be necessary for applications to make full use of plug-ins, but I might have missed some existing API that would be possible to use for this. I'm open to suggestions here! :-)

Regards,

//David

Angelfire for your free web-based e-mail. http://www.angelfire.com

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/