cb6d9e61d1
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
44 lines
2.1 KiB
Markdown
44 lines
2.1 KiB
Markdown
# 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
|
|
```
|