PyALSoft
PyALSoft provides function-oriented playback and capture APIs, plus typed bindings for OpenAL Soft. Wheels include the native OpenAL Soft runtime.
Read the documentation · Browse the API reference · View the examples
PyALSoft is an independent project and is not affiliated with or endorsed by the OpenAL Soft project.
Installation
PyALSoft requires Python 3.12 or later.
python -m pip install pyalsoft
Quick start
play starts a WAV file immediately and returns a control handle:
from pyalsoft import play
sound = play("sound.wav")
sound.wait()
Use play("sound.wav", spatialize=False) for player-attached or UI audio that
should not receive positional, distance, Doppler, or HRTF processing.
The managed API also supports spatial audio, effects and filters, recording, streaming, typed device and context configuration, live device reconfiguration, HRTF profile selection, and explicit playback sessions. See the documentation for guides and the complete API reference.
The lower-level pyalsoft.bindings namespace exposes typed OpenAL, ALC, EFX,
and extension bindings, together with owned device and context handles.
Contributing
Development occurs on the development branch. Create the locked environment
with uv:
uv sync --python 3.12
Before submitting a change, run the core checks:
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv run mypy
uv run python tools/generate_bindings.py --check
uv run python tools/sync_openal_soft.py --check
uv run mkdocs build --strict
Bindings and docs/reference.md are generated from the vendored OpenAL
registry. See the repository tool guide for development and
release commands.
Add an entry under Unreleased in the changelog for every
notable user-facing change. Group entries under Added, Changed,
Deprecated, Removed, Fixed, or Security, and describe the effect from
the user's perspective. Internal refactors, tests, and formatting do not need
entries.
For example:
## Unreleased
### Added
- Added reverse playback support to `PlayingSound`. (@BDraves)
### Fixed
- Prevented audio frames from shifting left when replacing a sound's filter.
(@BDraves)
License
PyALSoft's original Python code is available under the MIT License. Bundled OpenAL Soft and other third-party components remain under their respective licenses. The distribution includes their license texts and a third-party notice.
Metadata
Release files for pyalsoft 1.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyalsoft-1.7.0.tar.gz | 3.1 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pyalsoft-1.7.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| pyalsoft-1.7.0-py3-none-manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ x86-64 | Details |
| pyalsoft-1.7.0-py3-none-manylinux_2_28_aarch64.whl | Python 3 | none | Linux glibc 2.28+ ARM64 | Details |
| pyalsoft-1.7.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| pyalsoft-1.7.0-py3-none-macosx_10_13_x86_64.whl | Python 3 | none | macOS 10.13+ x86-64 | Details |
Total release size: 10.6 MB
Release files / pyalsoft-1.7.0.tar.gz
| Download URL | pyalsoft-1.7.0.tar.gz |
|---|---|
| Size | 3.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
33caecebae9cd2365b5774025bccb42a03f0adf80c72a2bbc4024274ce64a7ea
|
|
BLAKE2b-256 checksum How to use checksums |
d83346697c02656908c70342562275f66d30868b1d8b9416514f54a10dd85025
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyalsoft-1.7.0-py3-none-win_amd64.whl
| Download URL | pyalsoft-1.7.0-py3-none-win_amd64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
033e8e9dc071c2ac66326511031eb45e50704f4e78c11674d79e37bf10f64e9a
|
|
BLAKE2b-256 checksum How to use checksums |
30c10e28292ad80ef8ace383241df14c7b55b8690b3e87f6661281c095ca7076
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyalsoft-1.7.0-py3-none-manylinux_2_28_x86_64.whl
| Download URL | pyalsoft-1.7.0-py3-none-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
3e56a721a59d98b487fc2808911bf1dc613d06950383fd2d9b57c5774382bc85
|
|
BLAKE2b-256 checksum How to use checksums |
3cc3b008c0d8b7c93e30c432d4e3960e38ef277e5564fffea0bdb99c95df34a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyalsoft-1.7.0-py3-none-manylinux_2_28_aarch64.whl
| Download URL | pyalsoft-1.7.0-py3-none-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Linux glibc 2.28+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
c34e36d7a5df872d27821991c2f59487fc4f83f76ca5f410884badbbcb4495a3
|
|
BLAKE2b-256 checksum How to use checksums |
430f763f3aa50ad06b0b7ab9cfed0dc5e23d41ec52158c8d2ed1a80ad127f839
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyalsoft-1.7.0-py3-none-macosx_11_0_arm64.whl
| Download URL | pyalsoft-1.7.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 943.9 kB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
48eb3fcb1e356d2675d29f30f140bf3a76ad64f1775f340f722422a959c1fcad
|
|
BLAKE2b-256 checksum How to use checksums |
258a9f719ed55193e2a9bc263ecffbb77153088984e4a542d8a93f3cad29f990
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyalsoft-1.7.0-py3-none-macosx_10_13_x86_64.whl
| Download URL | pyalsoft-1.7.0-py3-none-macosx_10_13_x86_64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | Python 3 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
c188c1f90c29a33aa91a3f9a5f74c22901dc43d8a7cb97a5c335d62b1e0e1493
|
|
BLAKE2b-256 checksum How to use checksums |
fe8f09c00101a493f851734e0cd599d374e5c4310774b84dd0dd63ff38155768
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|