Uniaud for OS/2 & eCS

This is the development home for uniaud, the Universal Audio Driver for eCS and OS/2. The Uniaud
project consists of 2 separate drivers, Uniaud16.sys and Uniaud32.sys.

Uniaud32

Uniaud32.sys is the actual audio driver that connects to the hardware and makes it work. It
consists of a modified ALSA core and some OS/2 specific pieces which make it load and run on an OS/2
system. Different major versions of Uniaud32 are based on different versions of ALSA. For example,
Uniaud32 versions 1.9.x are based on ALSA 1.0.21, and Uniaud32 versions 2.1.x are based on ALSA 1.0.23.

Uniaud16

Uniaud16.sys is the interface between MMOS2 and Uniaud32.sys. Uniaud16 does not talk to the audio
hardware. It is just an interface translator, buffer manager, and may do some resampling. Uniaud16.sys
has its own version number. Do not confuse Uniaud16's version number with Uniaud32's version number.

Downloading Binary Distributions

The "Retail Install Package" is used to install Uniaud on a system that doesn't already
have Uniaud installed. The "Retail and Debug Update" package has both the Retail build
and the Debug build of drivers in it. If you already have Uniaud installed on your system,
you can download either the "Install" or the "Update" zip file and just copy uniaud16.sys
and uniaud32.sys over your existing files.

It is not recommended to run the Debug version unless you are testing a specific problem and need to
produce a detailed log. Because of the time needed to output the verbose messages in the debug
version of the drivers, the debug versions may exhibit some problems that are not present in the
retail versions. The debug versions are known to have these problems:

A "pop" noise at the end of a sound

pause/resume can hang the audio stream

skipping forward and/or back in a stream can hang the audio stream

changing the volume while a stream is playing can hang the audio stream

Playing short sounds in rapid succession can hang the audio stream

A hanging audio stream caused by one of these problems can manifest as stopped audio, or as looping audio.
If you see any of these problems AND you are using the debug version of the drivers, please understand that
the problem could be because you are using the debug version. You should try the retail version of the
drivers before reporting any of these problems.

There is currently one version of Uniaud16, and there are two versions of uniaud32. This is because some
people have reported problems with the version of Uniaud32 that is based on the latest version of ALSA.
So we are making available two packages for download until we can fix the problems in the new ALSA version.
Both contain the same Uniaud16, but one has a version of Uniaud32 based on the older ALSA, and one has a
version of Uniaud32 based on latest version of ALSA. Both packages have all the latest fixed in Uniaud16,
and both packages have all the latest fixes in the OS/2 specific sections of Uniaud32. The only
difference is the ALSA version.

Uniaud16 version 1.9.5 and Uniaud32 version 1.9.24 (based on ALSA 1.0.21):

A Note About Repeating System Sounds

Even though many people think that the Repeating System Sound problem has something to do with Uniaud, THIS IS NOT TRUE. The repeating system sounds problem has nothing at all to do with Uniaud, but instead is caused by SND.DLL and as such will not be addressed here. Please log into ​eComStation.com and see ticket number 2874 in the BugTracker? for the resolution to the Repeating System Sounds problem.

Getting the sources

In addition to browsing the sources here, you can check out the
​sources
with your favorite subversion client.

Keep in mind that, unlike ​cvs, tags and branches are
ordinary directories in subversion.
With the typical subversion repository layout, it is
rather easy to checkout more than you
probably intend to. To pull just the trunk version, use something like

Distributing builds

Public distribution packages always contain both Uniaud16.sys and Uniaud32.sys.
See Release Package Procedures for how we go about this.

There is not usually be a reason to publicly release Uniaud16 or Uniaud32 by itself.

When distributing builds of Uniaud16 or Uniaud32 privately to a few people to test, a good practice, to avoid confusion with the public releases, is to change the "fixpak level" to the svn revision number, e.g. "r380". If it does not match any revision number, perhaps because you are testing before committing, you may want to distinguish it with a word like "TESTCASE" or "CUSTOM". None of these labels for private builds should be committed to the svn repo. It is also helpful to set the HOSTNAME environment variable to a unique word that can trace the build back to you if your build system's hostname doesn't already.

Uniaud32 is GPL, so for license compliance any test builds that are distributed privately should not only specify the svn revision number, but also include a patch against that revision if anything differs. This is easily acquired with:

Debugging and such

Since the drivers are under development, issues are expected. See debugging hints for a guide to techniques and tools that can make solving them easier (we hope).

Alsa Resync

Uniaud derives some of its functionality from the ​Alsa project.
This mean we periodically resync our sources with the latest ALSA sources.
This provide both aditional device support as well as defect fixes.

When you create a new ticket, please remember to always attach the uniaud log.
You can create the log we need, by downloading this package:​ftp://ftp.netlabs.org/pub/uniaud/UniLog.zip
Please attach the zip file it creates to your ticket.

Information for End Users

More information regarding selection, installation, and basic testing may be found on the End User Info page.