i want to create a software synthesizer that talks to the soundcard
directly, and thus bypassing kmixer to achieve low latency (less than 5 ms
hopefully). i've searched on the web and read about the wdm architecture on
msdn, but it seems to be all theory, with no examples or explaination of how
to actually do anything.

as a first program (just to learn how it works), i'd simply call
sin(2*pi*freq/sfreq*x++) and pass the result to the soundcard (forgive me if
the equation is wrong, i just took that out of memory). a scrollbar could be
used for changing the frequency, and i want the output of the soundcard to
follow the scrollbar position as soon as possible after the mouse has been
moved (i.e less than 5 ms delay/latency).

i'm aware that directsound can (nearly) do this in win98 if the drivers are
good enough, but in win2k this doesn't work. steinberg's asio api is
supposed to provide low latency with most (all?) win32 versions, but it
seems only expensive soundcards come with asio drivers. this, and a document
on the cakewalk site, leads me to believe wdm kernel streaming may be the
way to go.

what functions do i need to call to achieve something like this? does my
code have to be kernel-mode? does it have to reside in a driver? where
should i start? pointers to online documentation are particularily wanted,
but i welcome any help. thanks!

best regards
Posted on 2001-11-26 15:09:22 by absence