[linux-audio-dev] Non preemptive driver layer in linux?

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: [linux-audio-dev] Non preemptive driver layer in linux?
From: Dustin Barlow (dbarlow_AT_dustinbarlow.net)
Date: Fri Jun 23 2000 - 06:24:29 EEST


I know Windows always gets a bad rap for bad latency, and in a majority
of the cases, rightfully so. However, there is an exception to this bad
latency trend. Reality, Seer System's real time synth has overcome the
problem quite impressively. Apparently, the driver layer in Windows is
not preemptive like the Win32 "layer" is. Most apps use standard Win32
api or DirectX calls to the soundcard and do their buffering off of
Win32's preemptive messaging system, and we all know the caviats with
that design. It appears from Reality's documentation that Seer Systems
wrote all of their synth code at the driver level and GUI stuff at the
Win32 level so that they could guarantee a certain amount of
uninterrupted processor time. This amount of needed uninterrupted time
would vary based on the speed of the processor.

For more details go here :
http://www.seersystems.com/products/seerdifference.html and there is
another link on that page called the "Problems with Win32" that sheds
additional light on the issue.

The end result is that latency in Reality is so low that you'd be hard
pressed to tell the difference between it and an outboard "black box"
synth. I played Reality from an outboard MIDI keyboard, and the
reaction time was instant and didn't change when I increased the number
of simulatenous notes I was playing. I was even able to run Reality on
a P133 laptop with the same instant response as I got on my P2/300 box.
Less polyphony was the only difference.

The other nice thing is that you can run a sequencer on the same machine
w/o fear of it stealing the necessary cpu time away from the synth app.
I was really shocked at how well it worked and it demonstrated to me
that other synth engines like Reaktor should go back to the drawing
board with their design and emulate what the people at Seer Systems
did. Reality is quite impressive albeit they don't have the level of
sophistication in terms of synthesis options that Reaktor does. But
IMHO, fancier options are meanless on the bases of a faulty base design.

With all this chatter about latency issues in Linux, I've had a question
that has been nagging away at me for some time and I'm sure that you
fine people on this list can give me a definitive answer. Does linux
have the same non-preemptive driver "layer" (for lack of a better
word). Based upon what I've seen transpire on this list over the last 6
months or so, my "educated" guess would be that it does not. Is there
any benefit to having a "layer" in the OS that is not preemptive?

~Db


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Fri Jun 23 2000 - 06:50:02 EEST