# 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
```
