A C library for cross-platform real-time audio input and output, supporting JACK, PulseAudio, ALSA, CoreAudio, and WASAPI.
libsoundio is a C library that provides cross-platform real-time audio input and output. It abstracts over multiple sound backends like JACK, PulseAudio, ALSA, CoreAudio, and WASAPI, enabling developers to build audio applications that work across different operating systems without dealing with backend-specific complexities. It solves the problem of fragmented audio APIs by offering a unified interface suitable for both high-performance and consumer software.
Audio software developers, particularly those building digital audio workstations, music players, or any real-time audio application that needs to run on Windows, macOS, and Linux. It's also for developers who need low-level control over audio devices and backend-specific features.
Developers choose libsoundio for its performance-oriented design, cross-platform support, and ability to expose backend-specific features while maintaining a consistent API. Its lightweight C implementation with no dependencies on libstdc++ or exceptions makes it ideal for systems where control and efficiency are critical.
C library for cross-platform real-time audio input and output
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports Windows 7+, macOS 10.10+, and Linux 3.7+ with backends like JACK, PulseAudio, ALSA, CoreAudio, and WASAPI, providing a unified API that abstracts over platform-specific complexities.
Exposes raw devices for low-latency access and backend-specific features, prioritizing real-time audio performance over API convenience, as stated in the README's philosophy.
Depends only on backend libraries and libc, avoiding bloat from libstdc++, exceptions, or RTTI, making it suitable for resource-constrained or embedded environments.
Offers device monitoring for plug-and-play events, exposes both persistent device IDs and user-friendly names, and handles backend disconnections gracefully with event-driven APIs.
Requires deep knowledge of audio programming concepts and C memory management, with minimal high-level abstractions to simplify common tasks like buffer handling or error recovery.
Building for Windows involves cross-compilation with MXE, and dependency on multiple optional backend libraries (e.g., ALSA, JACK) complicates installation and portability across different systems.
As a C library, it lacks native bindings for popular languages like Python or Rust, forcing developers to create custom wrappers, which increases integration effort and maintenance overhead.