Search

OSS/Linux Sound Driver

Open Sound System (OSS) is a kernel-level sound card driver
offered for a number of Unix-compatible operating systems by 4Front
Technologies. OSS/Linux is the version for Linux systems. It's not
surprising that Linux is supported, as the code was based on, and
is compatible with, the sound driver included in the Linux kernel.
The code is written by the same author, Hannu Savolainen, who
continues to maintain the free version (OSS/Free).

Installation

I took advantage of 4Front Technologies' free trial offer to
download and run the product for five days. If you decide to
purchase it you receive a software license key that allows the
software to run permanently.

I also downloaded the latest release of OSS/Linux
(3.8-beta1-961205). I installed the software on a 166 MHz Pentium
system with 32 megabytes of RAM running Red Hat Linux 4.0 and the
2.0.28 kernel. The sound card was a Creative Labs SoundBlaster 16
(Plug-and-Play version).

The package comes as a compressed tar file containing
installation instructions and an install program. To install the
software you have to run the install program as
root. This invokes a curses-based user interface
that helps you install and configure the driver for the sound card.
I found it straightforward to use; my sound card and settings were
all automatically detected. The install program noticed that I had
the standard Linux kernel sound driver module installed and
informed me that I needed to disable it. Deleting the
kernel-loadable module for sound did the trick.

Once installed, the sound driver is loaded using the supplied
soundon script. The driver is implemented as
several loadable kernel modules. A soundoff
script unloads the driver, if desired. Once loaded you can then run
any of the existing Linux sound applications.

Testing

I tried a number of sound applications to play and record
sound samples, play MIDI and MOD files and operate the mixer. In
general, everything operated identically to the standard sound
driver included with the Linux kernel. It provides control of the
DSP device, FM synthesizer, mixer and MIDI bus interface.

I did find one bug. Apparently the MIDI driver didn't clean
up resources it used. If it was unloaded, loading again would
report that the I/O port was in use. I reported this to Tech
Support by e-mail and received a response back within a few
hours.

SoftOSS

I downloaded the beta release of OSS/Linux in order to try a
new feature, SoftOSS. To understand it, you need some background on
how computers synthesize sound.

The first generation of computer sound cards used a technique
called FM synthesis to generate computer music. This method is low
in cost and requires little CPU power, but the music generated
sounds like it was created by a computer and not a musical
instrument.

Sampling techniques use a digital-to-analog converter to
generate sound. This method can be very effective, as the sound of
actual musical instruments can be digitized and used as samples.
The disadvantage is that the digital-to-analog converters are
expensive, so sound cards typically provide only one or two.
Typical low end sound cards today provide both sampling and FM
synthesis capability.

Wavetable synthesis cards combine the best of both
techniques. They offer a number of channels (32 being typical).
Each channel has its own digital-to-analog converter and dedicated
memory on the sound card for storing sound samples. Hardware on the
sound card does much of the work of mixing and playing the samples.
The only disadvantage of wavetable cards is that the additional
hardware makes them considerably more expensive. One such card, the
Gravis UltraSound, is supported by the standard Linux kernel sound
driver.

SoftOSS provides software emulation of wavetable synthesis
using only a low cost (non-wavetable) sound card. It does so by
using the spare memory and processing power of the host computer.
By implementing at the kernel level the same application
programming interface as the Gravis Ultrasound card, it allows
existing applications written for this card to work with low end
sound cards. The only catch is that you need adequate memory and
CPU power, but most systems today can meet this requirement (a
40MHz 486 with 16MB of RAM was the minimum needed for the
pre-release software I reviewed).

I configured the SoftOSS driver using the setting for Pentium
100+ machines and tried using some Linux applications that
previously required a Gravis Ultrasound wavetable sound
card.

The gmod program is a player for music files in MOD format.
It operated quite well. This was not particularly impressive,
because there are a number of MOD players for non-wavetable cards
(e.g., tracker) that work just as well with the standard kernel
sound driver.

Playing MIDI files was more interesting. MIDI is a very
popular music file format among musicians, but MIDI file players
I've come across before used the FM synthesizer on my sound card.
Using SoftOSS, the playmidi program, and sound sample “patch”
files downloaded from the Internet, there was a dramatic
improvement in sound quality as compared to using FM synthesis. It
actually sounded like real musical instruments.

Note that at the time of writing, SoftOSS was still in a
pre-release beta state, and may be an extra cost option when
purchasing OSS/Linux. For a beta release it looked quite stable,
the only problem being some minor glitches in the sound
produced.

Evaluation

So for $20 you get a single machine license for a sound
driver that is compatible with the one in the Linux kernel, a
play command for playing sound files and the
soundon and soundoff scripts
for loading and unloading the driver. Included are two years of
technical support and five years of software upgrades.
Documentation is essentially some README files covering
installation, but more information, including the sound application
programming interface, is available on the vendor's web
site.

What advantages does OSS/Linux have over the free sound
driver in the kernel? Technical support is one advantage which may
be important to you if you are using the Linux sound driver in a
commercial setting. The package does appear to be easier to install
and configure, automatically detecting the card settings in most
cases. It also offers support for a few more sound cards (e.g., the
SoundBlaster AWE32) and has better Plug-and-Play support than the
free driver. It seems to be fully compatible with any applications
written for OSS/Free.

On the negative side, there is a cost involved, albeit a
small one compared to most commercial software. Of more concern is
the fact that you don't get the source code. This means that you
can't fix bugs or modify or enhance the code yourself. It also
makes the software more sensitive to different kernel versions. You
may have to periodically download a new sound driver from the
vendor's web site when you upgrade your kernel, although a
“wrapper” program called sndshield that you
can compile is provided to help get around these problems most of
the time.

Improvements

When using the free kernel driver, I like the fact that it
can be automatically loaded and unloaded on demand using
kerneld. The OSS/Linux driver, while it uses
modules, unfortunately doesn't seem to support this. Having to log
in as root and run a command to load the driver
is cumbersome, although most users would probably know enough to
put it in a system startup script like rc.local.

The package doesn't come with any value-added sound
applications (except a simple “play” program). The sound driver
on its own isn't very useful. If it was to come bundled with some
of the existing Linux sound applications, less experienced users
could make better use of the driver right away. The way to package
the product, in my opinion, would be as a CD-ROM that came with a
number of sound applications, sound files, and programming
documents, precompiled for Linux systems. This would turn it into a
more useful product, especially for beginners.

Conclusions

If your sound card works fine with the free driver in the
kernel and you aren't interested in SoftOSS, then you probably
won't see this product as adding much value.

If you've fought unsuccessfully to get your sound card to
work under Linux, particularly if it's a Plug-and-Play model, then
you should give this product a try. You can get a free trial copy
and it's well worth the cost. If you have a non-wavetable sound
card and are intrigued by SoftOSS, then you may also be interested
in this product.

Finally, the OSS product is also offered for a number of
other Unix-compatible systems. For years Unix systems have had no
clear standard for sound programming. 4Front Technologies is hoping
that the OSS API will become a de facto standard for Unix systems.
If successful, this will be an ironic example of the tail wagging
the dog—Unix systems striving to be compatible with Linux. It also
means that sound applications written for Linux will have the
opportunity to run on a wider variety of Unix platforms, expanding
their scope.

Jeff Tranter
has been using and writing about
Linux for about four and a half years. He's the author of the Linux
Sound and CD-ROM HOWTO documents, and the book “Linux Multimedia
Guide” published by O'Reilly and Associates. When not playing with
computers, he enjoys ham radio, playing guitar and cross-country
skiing. He can be reached via e-mail at
jeff_tranter@pobox.com