Palace is a Python 3D audio API wrapping around alure. To quote alure's README,
It uses OpenAL for audio rendering, and provides common higher-level features such as file loading and decoding, buffer caching, background streaming, and source management for virtually unlimited sound source handles.
In some sense, what palace aimes to be to OpenAL Soft is what ModernGL is to OpenGL (except that all the heavy-lifting are taken are by alure):
- 3D positional sound rendering
- Environmental effects: reverb, atmospheric air absorption, sound occlusion and obstruction
- Binaural (HRTF) rendering
- Out-of-the-box audio decoding of FLAC, MP3, Ogg Vorbis, Opus, WAV, AIFF, etc.
- Modern Pythonic API:
snake_case
,@property
,with
context manager, type annotation
Palace requires Python 3.6+ for runtime and pip for installation.
Palace can be install from the Python Package Index via simply
pip install palace
Wheel distributions are built exclusively for amd64. Currently, only GNU/Linux and macOS are properly supported. If you want to help packaging for Windows, please see GH-1 on our issues tracker on GitHub.
Aside from the build dependencies listed in pyproject.toml
, one will
additionally need compatible Python headers, alure, a C++14 compiler,
CMake 2.6+ (and probably git
for fetching the source).
Palace can then be compiled and installed by running
pip install git+https://github.com/McSinyx/palace
One may start with the examples
for sample usage of palace.
For further information, Python's help
is your friend and
the API is also available for online reference.
Our documentation contains a brief guide which may help you get started with the development. We also think that you might find our design principles appealing as well.
Palace is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
The full list of works bundled with palace and other credits can be found in our documentation.