# miniaudio vendoring - **Source**: https://github.com/mackron/miniaudio - **Version pinned**: see `cpp/vendor/miniaudio/.version` (0.11.25 at vendoring time) - **License**: Public domain / MIT-0 dual (`cpp/vendor/miniaudio/LICENSE`) - **Header**: `cpp/vendor/miniaudio/miniaudio.h` (~4 MB texto, ~200 KB compilado strippable) ## Vendoring command ``` mkdir -p cpp/vendor/miniaudio && cd cpp/vendor/miniaudio && \ TAG=$(curl -s https://api.github.com/repos/mackron/miniaudio/releases/latest | grep -m1 '"tag_name"' | cut -d'"' -f4) && \ curl -fsSL "https://raw.githubusercontent.com/mackron/miniaudio/$TAG/miniaudio.h" -o miniaudio.h && \ curl -fsSL "https://raw.githubusercontent.com/mackron/miniaudio/$TAG/LICENSE" -o LICENSE && \ echo "$TAG" > .version ``` ## Por qué miniaudio - Single-header. Encaja con cultura del registry. - Cubre TODAS las plataformas del stack gamedev (issue 0072): Win (WASAPI/DirectSound), Mac (CoreAudio), Linux (PulseAudio/ALSA/JACK), Android (AAudio/OpenSL ES), iOS (CoreAudio), Emscripten (Web Audio). - Sin dependencias externas. - API C limpia, facil de wrappear como funciones del registry. - Decode wav/flac nativo. mp3 + ogg vorbis vienen via dependencias single-header opcionales (`stb_vorbis.c`, `dr_mp3.h`) o se enchufan como callback custom. ## Compilacion `miniaudio.h` se incluye con `#define MINIAUDIO_IMPLEMENTATION` exactamente en UNA TU. Para apps que solo quieran la API, incluir sin el define. Convencion del registry: la funcion `audio_init_cpp_gamedev` define `MINIAUDIO_IMPLEMENTATION` en su `.cpp`. Otras funciones del registry y consumidores solo incluyen `miniaudio.h` sin el define. ## Backends en WASM Bajo emscripten, miniaudio usa Web Audio API. Requiere user gesture para arrancar (`navigator.userActivation`). Documentar en `cpp/GAMEDEV.md`: el primer click del usuario activa el audio context. ## Upgrade ``` cd cpp/vendor/miniaudio TAG=$(curl -s https://api.github.com/repos/mackron/miniaudio/releases/latest | grep -m1 '"tag_name"' | cut -d'"' -f4) curl -fsSL "https://raw.githubusercontent.com/mackron/miniaudio/$TAG/miniaudio.h" -o miniaudio.h echo "$TAG" > .version ```