About this project

miniaudio is an audio playback and capture library written in C and distributed as a single source file. According to its README, it has no dependencies beyond the standard library and is intended to compile cleanly on major compilers without installing extra development packages. It targets major desktop and mobile platforms. Key capabilities described in the README: - Simple build system with no external dependencies. - Simple and flexible API, with both a low-level API for direct access to raw audio data and a high-level API for sound management, mixing, effects and optional 3D spatialization. - A flexible node graph system for advanced mixing and effect processing. - Resource management for loading sound files. - Decoding with built-in support for WAV, FLAC and MP3, plus the ability to plug in custom decoders. - Encoding, currently WAV only. - Data conversion, resampling (including custom resamplers), and channel mapping. - Basic generation of waveforms and noise, plus basic effects and filters. The README points to a Programming Manual for a more complete feature description. It includes two short C examples: one using the high-level engine API to play a sound, and one using the low-level device and decoder APIs with a data callback. Building: compile miniaudio.c like any other source file and include miniaudio.h as a normal header. On Windows and macOS no additional linking is needed; on Linux and BSD link to -lpthread and -lm; on iOS compile as Objective-C; link -ldl if dlopen errors occur, and -latomic for certain atomic builtin errors. ABI compatibility is not guaranteed between versions, so the suggested integration is adding it directly to the source tree. CMake is also supported. Documentation lives at miniaud.io/docs and at the top of miniaudio.h, which the README describes as the most up-to-date and authoritative source; other documentation is generated from it. Supported platforms listed: Windows; macOS and iOS; Linux; FreeBSD, OpenBSD and NetBSD; Android; Raspberry Pi; and Emscripten/HTML5. Other platforms can be supported through a custom backend without modifying the miniaudio source, as shown in a custom_backend example. Backends listed: WASAPI, DirectSound, WinMM, Core Audio, ALSA, PulseAudio, JACK, sndio, audio(4), OSS, AAudio, OpenSL|ES, Web Audio, Null (silence), and Custom. Security information is covered by a separate security policy file. Licensing is a choice of public domain or MIT No Attribution.