Libraries

miniaudio

  • See above.

OpenAL Soft

  • OpenAL .

  • OpenAL-odin .

  • OpenAL-odin .

  • 3D audio API inspired by OpenGL.

  • Native 3D spatialization (HRTF, distance models)

  • Specification + implementations (OpenAL Soft is the de facto standard).

  • Focused on spatial audio and game-style sound sources.

  • API Object/state-based.

  • Cons :

    • No decoding (you need libsndfile, stb_vorbis, etc.).

    • Less control over backend internals.

    • API feels dated.

    • Platform quirks depending on implementation.

    • Development stagnation of the spec (OpenAL Soft is maintained, OpenAL itself is not evolving).

SDL 3.0 (own audio engine)

  • SDL_audio is not an engine.

  • It is a portable audio device abstraction + callback-based mixer interface.

  • Push or pull audio via callback

  • Audio playback & capture

  • Callback-based streaming

  • Device enumeration

  • Format conversion (basic)

  • Resampling (basic)

  • Threaded audio callback

  • Hotplugging devices

  • lower-level than OpenAL

  • higher-level than raw OS APIs

  • less feature-complete than miniaudio

Platforms

| Platform | Support                        |
| -------- | ------------------------------ |
| Windows  | WASAPI, DirectSound, WinMM     |
| Linux    | ALSA, PulseAudio, PipeWire     |
| macOS    | CoreAudio                      |
| iOS      | CoreAudio                      |
| Android  | OpenSL ES / AAudio             |
| Web      | WebAudio (Emscripten)          |
| Consoles | Partial (depends on SDL ports) |

Cons
  • No decoding (unless using SDL_mixer or external libs)

  • No spatial audio

  • No mixing engine (beyond simple utilities)

  • No DSP graph

  • No voice management

  • No HRTF

  • No sample-accurate scheduling

  • No advanced latency control

Sokol (own audio engine)

  • From the github:

    • Minimal buffer-streaming audio playback.

    • A minimal audio-streaming API:

      • you provide a mono or stereo-stream of 32-bit float samples which sokol_audio.h forwards into platform-specific backends

      • two ways to provide the data:

        • directly fill backend audio buffer from your callback function running in the audio thread

        • alternatively push small packets of audio data from your main loop, or a separate thread created by you

  • Backend:

    • ALSA (Linux).

    • WASAPI (Windows).

    • CoreAudio (macOS).

    • WebAudio.

    • Windows: WASAPI

    • macOS/iOS: CoreAudio

    • Linux: ALSA

    • emscripten: WebAudio + ScriptProcessorNode (doesn't use the emscripten-provided OpenAL or SDL Audio wrappers)

Cons
  • Callback-based streaming

  • Ring buffer model

  • Simple mixing

  • No decoding

  • No spatial audio

  • No audio graph

  • Much weaker than miniaudio

  • More minimal than SDL_audio.

  • Designed for predictable low-level control.

RayLib

  • Backend

    • miniaudio.

Godot (own audio engine)

  • Backends:
    | Platform | Backend            |
    | -------- | ------------------ |
    | Windows  | WASAPI             |
    | Linux    | ALSA / PulseAudio  |
    | macOS    | CoreAudio          |
    | Android  | OpenSL ES / AAudio |
    | iOS      | CoreAudio          |
    | Web      | WebAudio           |

  • Full audio engine

  • Audio buses (graph)

  • DSP effects

  • 3D spatial audio

  • HRTF

  • Mixing, routing, groups

  • Real-time effects

  • Streaming

  • Procedural audio

  • It is closer to XAudio2-style architecture.