cb6d9e61d1
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.0 KiB
3.0 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, example, tested, tests, test_file_path, file_path, params, output
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | example | tested | tests | test_file_path | file_path | params | output | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| audio_play | function | cpp | gamedev | 0.1.0 | impure | sound_load(Engine&, const char*) -> Sound; sound_play/stop/set_volume/destroy(Sound&); play_sound_oneshot(Engine&, const char*, float) | Reproduccion de audio sobre fn::audio::Engine: carga sonidos con streaming desde disco (wav/mp3/flac/ogg), play/stop/volumen por sonido, y helper fire-and-forget para one-shots sin handle. Cross-platform via miniaudio. Issue 0072b — runtime gamedev nucleo. |
|
|
false | error_go_core | fn::audio::Engine eng = fn::audio::engine_init(); fn::audio::Sound bgm = fn::audio::sound_load(eng, "assets/bgm.ogg"); fn::audio::sound_set_volume(bgm, 0.5f); fn::audio::sound_play(bgm); // SFX one-shot: fn::audio::play_sound_oneshot(eng, "assets/jump.wav"); // ... fn::audio::sound_destroy(bgm); fn::audio::engine_shutdown(eng); | false | cpp/functions/gamedev/audio_play.cpp |
|
Sound con impl=ma_sound* y ok=true en sound_load exitoso; ok=false ante cualquier fallo (engine no listo, malloc, decoder). play_sound_oneshot no devuelve handle — el sonido se gestiona internamente por el engine. |
audio_play
Reproduccion de audio one-shot y streaming sobre fn::audio::Engine. Wrapper minimo de la API ma_sound de miniaudio.
Estructura Sound
Handle opaco con impl (apunta a ma_sound) y ok (bool). Gestion explicita: cada sound_load requiere sound_destroy para liberar (no hay RAII porque mantenemos -fno-exceptions y compat con structs trivial).
Patrones de uso
- BGM / loops largos:
sound_load+sound_play. Por defecto miniaudio hace streaming desde disco (no carga todo a memoria). - SFX cortos:
play_sound_oneshot— fire-and-forget, sin handle, ideal para clicks, jumps, hits. - SFX repetidos con control:
sound_load+sound_playcada vez. Para concurrent voices del mismo sample, considerarma_sound_init_copy(no expuesto aun).
Notas
play_sound_oneshotrecibevolumecomo hint pero actualmente delega al master del engine. Iterar si el caller real lo necesita.sound_loadconpath=NULLo engine no listo devuelveSound{nullptr, false}— siempre comprobarokantes de operar.