Chapter 9. OpenAL Sound System

glGo uses the OpenAL sound library published by Creative and NVidia. I admit it appears somewhat weird to include a full fledged sound library just to play some simple sound files. But there are some good reasons to do so.

The standard sound playing mechanism on Windows is pretty bad. It is impossible to ensure a good sound quality if the computer is busy with something else, like a running GNU Go calculating the next move in the background. So using plain Win32 API functions to play a sound is not a solution.

The situation on Linux is similar. Without the usage of an additional library it is not possible to easily access the various Linux sound devices like Alsa, Esd, Artsd, OSS etc.

High quality sound is available on Windows via the DirectSound layer, which is a part of DirectX. However, directly accessing DirectSound would mean a Windows-only solution. High quality sound on Linux is available via the native OSS kernel modules or Alsa. OpenAL serves as platform independant intermediate layer to access the native sound devices. OpenAL will use DirectSound on Windows and whatever sound device can be found or configured on Linux. This is a good solution as the application itself does not need to bother about the platform dependant low level tasks, OpenAL will take care of that.

So the usage of OpenAL for playing some simple sound is certainly overkill but justified concerning the aim of crossplatform availability of glGo.

OpenAL is already included in the Windows glGo installer. On Linux you need to install OpenAL from your distribution, it is not included in the glGo Linux version installer. Please also see the chapters Requirements and Installation of this manual.

There are commandline options to disable global sound (if you have trouble with esd or artsd on Linux) and to select the sound system (if you have trouble doing that in the preferences menu at runtime). Use glGo -n to disable sound, glGo --openal to select the OpenAL sound system and glGo --sdl to select the SDL Mixer sound system. These options will overwrite the saved configuration.

[Tip]Tip

On Linux OpenAL will by default use the OSS kernel sound device. As alternative you can tell it to try alsa, artsd or esd by creating a file ~/.openalrc with a line like for example: “(define devices '(alsa esd native))”. This will try alsa first, esd next and OSS last. Unlike gGo/Java I managed to get xmms and glGo sound at the same time using OpenAL on esd.

OpenAL is currently not available in the glGo OS X version.