a few corrections:
Well, the main differences between the OSS-Layer and
ALSA are:
1.) alsa is the new driver in linux kernel >= 2.6.X
2.) oss-layers need ioctl() - calls to manage/configure sound devices (and ioctl()
calls
are just possible for root-users !!!!!),so oss is really user-unfriendly if you want
to programm a application
this isn't true. any user that can open a device can call ioctl on the
device. the real difference in the API design between the two is that
in OSS, you make system calls (open/read/write/close/ioctl/mmap etc)
directly, which means that any transformation of the data or other
"clever" stuff has to happen inside the device driver as part of the
kernel. in ALSA, you make library calls (snd_pcm_open, etc), which
allows ALSA to have a rich set of "plugins" that can transform the
data, virtualize the device, and do all kinds of other things, all in
a user-space library where it can do no harm to anything except your
application.
but i'll put it a little more strongly: NOBODY in 2003 should start a
new application using the OSS API. NOBODY.
5.) alsa is basicly said a "wrapper", a
front-end of the oss-arch and it is highly r
ecommended to use alsa at all.
its not a wrapper. the low level kernel drivers are completely
different implementations compared to the OSS ones. its just that ALSA
provides the old OSS API for compatibility.
anyway, as others noted, you'd probably be much better using either
PortAudio or JACK (
jackit.sf.net). they both encourage the "correct"
programming model for your application, and JACK in particular removes
all of the endless grunt work of setting up the audio interface
parameters, figuring out how to get data to/from the card, etc.
--p