Quicklook: FLOSS Alternatives to OpenAL

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.


OpenAL is a cross-platform 3D audio API for software applications that require audio. There’s just one thing: it’s open as in open-API not open-source. OpenAL, like OpenGL, attempts to avoid being vendor-specific. That’s great for interoperability, but, not so great for the tenets of free software.

OpenAL Soft

OpenAL Soft is a fork of the OpenAL project, way back from when it was open-source on an SVN repository. OpenAL Soft’s [source] is hosted on GitHub and is provided under the GNU Lesser General Public License (LGPL).


For the most part, it’s like OpenAL, except for some important differences in terms of support for certain extensions (like it’s lack of support for Vorbis and MP3).


You can get in touch with the developers of OpenAL Soft with the same mailing list that you would use for OpenAL. Although the OpenAL project itself is free-of-cost, it isn’t open-source. Despite this, the community hasn’t split over a hostile fork - they embrace one another. There are about 35 contributors in total, but, no explicit contribution guides exist. Suggestions are to get in touch with the developers through the mailing list.

Port Audio

PortAudio, on the other hand, is a cross-platform, open-source audio I/O library. Originally released under a custom, permissive license, the most recent version was released under the MIT License.


The library itself, “provides a very simple API for recording and/or playing sound using a simple callback function or blocking read/write interface.” Notably, it’s not suggested to use this library for file I/O - it has no support for reading or writing formatted audio files like .wav and .aiff. Instead,


The project uses Assembla for hosting its source via a git repository. If you’re interested in contributing to Port Audio, they are seeking experienced ‘C’ audio developers, writers and documentation experts, and engineers with unit testing and continuous integration experience.

PortAudio maintains a partial list of contributors on its website. A mailing list and its archive is also facilitated through the website. Bug reports can be submitted through their ticket tracker.


[RtAudio] is a set of C++ classes that provide a common, cross-platform API for realtime audio input/output. The RtAudio license is similar (but not the same) as the MIT License. It is, however, undeniably open-source.


The library was designed with the following objectives:

  • object-oriented C++ design.
  • simple, common API across all supported platforms.
  • only one source and one header file for easy inclusion in programming projects.
  • allow simultaneous multi-api support.
  • support dynamic connection of devices.
  • provide extensive audio device parameter control.
  • allow audio device capability probing.
  • automatic internal conversion for data format, channel number representation, (de)interleaving, and byte-swapping.


You can view the source on RtAudio’s GitHub repository. There are about 19 open issues on the project’s issue tracker, with the most recent one being written one day prior (at the time of writing this blog post).


libsndfile. It’s released under the terms of the GNU Lesser General Public License (LGPL) - you can use libsndfile with any software as long as it’s used as a dynamically loaded library and it abides by a small number of other conditions.


libsndfile is a C library for reading and writing files containing sampled audio data. It is designed to allow the reading and writing of many different sampled sound file formats (such as MS Windows WAV and the Apple/SGI AIFF format) through one standard library interface. During read and write operations, formats are seamlessly converted between the format the application program has requested or supplied and the file’s data format.

This doesn’t playback audio, but, it does the crucial work involved in file I/O and format conversion.


libsndfile was created by Erik de Castro Lopo. You can submit bugs by submitting a ticket through the project’s issue tracker. You can find the source here. You can read more about contributing here.