andrewrk/libsoundio
FreeC library for cross-platform real-time audio input and output
About andrewrk/libsoundio
libsoundio is a C library that provides cross-platform real-time audio input and output. It abstracts over multiple audio backends including JACK, PulseAudio, ALSA, CoreAudio, and WASAPI, and supports Windows 7+, macOS 10.10+, and Linux 3.7+. The API is designed for both professional audio applications like digital audio workstations and consumer software such as music players. It exposes raw devices for low-latency performance and shared devices with sample rate and format conversion. The library also supports channel layouts for surround sound, device monitoring, backend disconnect events, and default device detection. It depends only on the respective backend libraries and libc, and communicates errors via return codes.
Key Features
Pros & Cons
- Cross-platform (Windows, macOS, Linux) with unified API
- Low-latency raw device mode for performance-critical applications
- Minimal dependencies: only libc and backend libraries
- Meticulous error handling with meaningful return codes
- Supports advanced features like channel layouts and device monitoring
- Free and open-source (MIT license)
- C library, not suitable for developers who prefer higher-level languages without bindings
- Abstraction may hide some backend-specific advanced features
- Requires installing appropriate backend libraries on each platform
- Documentation consists mainly of API headers and a single code example
- No built-in support for audio encoding/decoding or file I/O