cl-openal is a series of semi-lispy public domain bindings to the OpenAL API. It includes direct
CFFI bindings, as well as varying levels of lispy wrappings around AL, ALC, and ALUT.

The translation from the C bindings to lispy bindings is pretty straightforward, and follows
cl-opengl's example, in spirit.


cl-openal depends on CFFI to load. It's split into three separate systems: cl-openal for the basic
OpenAL bindings, cl-alc for ALC, and cl-alut for ALUT. If you need anything from ALC or ALUT, you'll
have to specifically load them.

In order to use cl-openal and cl-alc, you'll need to have OpenAL installed on your system, or
available as a shared library/.dll. Additionally, an implementation of ALUT needs to be available in
order to use cl-alut (such as freealut).

cl-openal should run on all major platforms, including Linux, the BSDs, OSX, and Windows. It should
be usable by any Common Lisp implementation supported by CFFI.


If you have any questions, you may contact me at <>. Patches or similar
always welcome!

Extra Notes

The OpenAL Programming Guide says that buffers can not be destroyed while they are queued. Sources,
on the other hand, can be destroyed while buffers are queued on them.

For this reason it's probably a good idea to do:

    (with-buffers ...
      (with-sources ...
        (queueing code)))

instead of

    (with-sources ...
      (with-buffers ...
        (queueing code)))

Same goes for WITH-SOURCES which you want to wrap in WITH-CONTEXT.
Kat March?n <>
Kat March?n <>
public domain