Freedom251 › Game Audio Middleware
miniaudio

What miniaudio is
miniaudio is a free, open-source audio playback and capture library for C and C++. It provides a low-level API for playback, capture, full-duplex audio, and device enumeration, as well as a high-level engine for managing sounds with spatialization. Its node graph supports mixing, effect processing, routing, and custom nodes. A resource manager adds reference counting, streaming for large audio sources, and asynchronous loading.
The library is distributed as a single source file without external dependencies, so developers can add it directly to a project’s source tree. Built-in decoding supports WAV, FLAC, and MP3, while encoding supports WAV; custom decoders can extend format support, with Vorbis and Opus given as examples. Listed backends include WASAPI, DirectSound, WinMM, Core Audio, ALSA, PulseAudio, JACK, AAudio, OpenSL|ES, and Web Audio. Supported targets include Windows, macOS, iOS, Linux, BSD variants, Android, Raspberry Pi, and Emscripten/HTML5. Playback and capture on other platforms require a custom backend. Users can choose the public domain or MIT No Attribution license. The project provides a programming manual, API reference, and examples. ABI compatibility is not guaranteed between versions, including bug-fix releases, and the manual recommends static linking when building it as a library.
Who it suits
miniaudio suits C and C++ developers building applications that need audio playback, capture, or device enumeration. Its low-level API is suited to applications that handle their own mixing, while the higher-level engine is aimed at more complex mixing and effects.
What it does well
- Single source file with no external dependencies.
- Low-level API supports playback, capture, full-duplex audio, and device enumeration.
- Node graph supports mixing, effects, routing, and custom nodes.
- Resource manager supports streaming large sources and asynchronous loading.
- Built-in decoding covers WAV, FLAC, and MP3; encoding supports WAV.
- Users can choose the public domain or MIT No Attribution license.
What to know first
- Other platforms need a custom backend for playback and capture.
- ABI compatibility is not guaranteed between versions, including bug-fix releases.
- Shared-object builds are not the manual’s recommended approach.
Limits
Playback and capture on platforms outside the listed targets require a custom backend. ABI compatibility is not guaranteed between versions, including bug-fix releases.
Getting started
- Visit the miniaudio website.
- Review the programming manual, API reference, or examples.
- Add the single source file directly to your project’s source tree.
- Choose the public-domain or MIT No Attribution license.
- Use a listed platform and audio backend, or implement a custom backend for another platform.
- Consider static linking when building miniaudio as a library.
Verdict
Choose miniaudio if you are developing in C or C++ and want audio playback and capture in a library distributed as one source file. Its APIs cover both application-managed audio and more complex mixing and effects; look elsewhere if you need playback or capture on a platform without a suitable backend and cannot implement one.
Questions
How much does miniaudio cost?
It is free and open source, with a free plan and no free trial. Users can choose the public domain or MIT No Attribution license.
Which programming languages does it support?
miniaudio is an audio playback and capture library for C and C++.
Which platforms are supported?
Listed targets include Windows, macOS, iOS, Linux, BSD variants, Android, Raspberry Pi, and Emscripten/HTML5. Other platforms need a custom backend for playback and capture.
Which audio formats can it handle?
Built-in decoding supports WAV, FLAC, and MP3, and encoding supports WAV. Custom decoders can extend support, with Vorbis and Opus given as examples.
Does it support spatial audio and mixing?
Yes. Its high-level engine manages sounds with spatialization, and its node graph supports mixing, effects, routing, and custom nodes.
What should I know about ABI compatibility?
ABI compatibility is not guaranteed between versions, including bug-fix releases. The manual recommends static linking when building miniaudio as a library.
Facts from miniaudio's own pages
- ABI limitation
- ABI compatibility is not guaranteed between versions, including bug-fix releases, and the manual recommends static linking when building as a library. · miniaud.io, 4 Oct 2026
- Audio APIs
- miniaudio includes low-level and high-level APIs for working with audio devices and audio playback. · miniaud.io, 7 Oct 2026
- Audio backends
- Listed backends include WASAPI, DirectSound, WinMM, Core Audio, ALSA, PulseAudio, JACK, AAudio, OpenSL|ES, and Web Audio. · github.com, 4 Oct 2026
- Audio engine
- The high-level engine combines resource management and the node graph for managing sounds with spatialization. · miniaud.io, 4 Oct 2026
- Built-in formats
- The documentation lists built-in WAV, MP3, and FLAC decoding, and WAV encoding. · miniaud.io, 7 Oct 2026
- Compatibility limit
- The documentation says ABI compatibility is not guaranteed between versions, including bug-fix releases, and recommends static linking over shared-object builds. · miniaud.io, 7 Oct 2026
- Custom decoders
- Custom decoders can extend format support; the site gives Vorbis and Opus as examples. · miniaud.io, 7 Oct 2026
- Distribution
- The library is a single source file with no external dependencies and can be added directly to a project’s source tree. · miniaud.io, 4 Oct 2026
- Documentation and examples
- The site provides a programming manual, API reference, and examples. · miniaud.io, 7 Oct 2026
- Formats
- Built-in decoding supports WAV, FLAC, and MP3, while encoding supports WAV. · github.com, 4 Oct 2026
- Intended use
- The documentation describes the low-level API as suited to applications that handle their own mixing, and the high-level API as suited to complex mixing and effects. · miniaud.io, 7 Oct 2026
- License
- The site says miniaudio is released into the public domain and offers a choice of public domain or MIT No Attribution licensing. · miniaud.io, 7 Oct 2026
- Low-level API
- The low-level API supports audio playback, capture, full-duplex, and device enumeration. · miniaud.io, 4 Oct 2026
- Mixing and effects
- Its node graph supports mixing, effect processing, custom nodes, and audio routing. · miniaud.io, 7 Oct 2026
- Packaging
- The library consists of a single source file and has no external dependencies. · miniaud.io, 7 Oct 2026
- Platform limitation
- On other platforms, playback and capture require implementing a custom backend. · github.com, 4 Oct 2026
- Platforms
- The site lists Windows, macOS, Linux, BSD, iOS, Android, and Web through Emscripten. · miniaud.io, 7 Oct 2026
- Purpose
- miniaudio is an audio playback and capture library for C and C++. · miniaud.io, 7 Oct 2026
- Resource management
- The resource manager supports reference counting, streaming large audio sources, and asynchronous loading. · miniaud.io, 7 Oct 2026
- Security handling
- The maintainer says security issues are handled publicly and transparently, and that addressing them can take a while. · github.com, 4 Oct 2026
- Support
- The security policy directs users to submit a pull request or post a ticket to the public GitHub issue tracker. · github.com, 4 Oct 2026
- Supported targets
- The project lists Windows, macOS, iOS, Linux, BSD variants, Android, Raspberry Pi, and Emscripten/HTML5 as supported platforms. · github.com, 4 Oct 2026
Where miniaudio stands on Freedom251
- Game Audio Middleware#11 of 24