Afig una capa d'efectes oberta a la unitat d'àudio. Els sons puntuals
es poden reproduir processats per un eco o un reverb (Freeverb 8C/4AP)
sense afectar la música ni canviar el camí ràpid existent (playSound
sense efecte segueix sent una sola crida sense cost extra).
- data/sounds.yaml: catàleg de presets nominats (echo: cave/short,
reverb: stone_hall/small_room).
- core/audio/audio_effects: processadors purs que prenen un Ja::Sound
(U8/S16, mono o estèreo) i tornen PCM S16 amb la cua de l'efecte
(cap a 800 ms eco, 1500 ms reverb).
- core/audio/sound_effects_config: Meyers singleton que parseja
sounds.yaml a EchoParams/ReverbParams indexats per nom; l'API
pública d'Audio fa el lookup per nom.
- jail_audio::Engine: nou camí playSoundWith{Echo,Reverb} que empenta
el buffer ja processat a un canal lliure marcat com a has_effect.
El cap MAX_EFFECT_CHANNELS limita a 4 sons amb efecte simultanis;
si està al límit, l'engine retorna -1 i Audio cau a la versió seca.
- Audio::playSoundWith{Echo,Reverb}(name, preset, group) com a única
via pública. Si el preset no existeix, fallback dry amb avís.
- director: load("data/sounds.yaml") abans d'Audio::init.
38 lines
1.0 KiB
YAML
38 lines
1.0 KiB
YAML
# Presets d'efectes per a sons puntuals. Les crides
|
|
# Audio::playSoundWithEcho(name, preset, group) i
|
|
# Audio::playSoundWithReverb(name, preset, group) referencien aquests
|
|
# presets pel seu nom (camp `preset`). Si el nom no existeix, el so es
|
|
# reprodueix sec amb un avís a stderr.
|
|
#
|
|
# Camps:
|
|
# echo:
|
|
# delay_ms → temps fins al primer rebot, en mil·lisegons.
|
|
# feedback → reinjecció (0..0.95). >0.7 sona "metàl·lic".
|
|
# wet → mescla del senyal humit (0..1). 1 = només eco.
|
|
# reverb:
|
|
# room_size → mida percebuda de la sala (0..1).
|
|
# damping → atenuació de freqüències altes en cada rebot (0..1).
|
|
# wet → mescla humida (0..1).
|
|
#
|
|
# Els processadors limiten la cua a 800 ms (echo) i 1500 ms (reverb).
|
|
|
|
echo:
|
|
cave:
|
|
delay_ms: 220
|
|
feedback: 0.45
|
|
wet: 0.35
|
|
short:
|
|
delay_ms: 80
|
|
feedback: 0.30
|
|
wet: 0.25
|
|
|
|
reverb:
|
|
stone_hall:
|
|
room_size: 0.78
|
|
damping: 0.50
|
|
wet: 0.40
|
|
small_room:
|
|
room_size: 0.40
|
|
damping: 0.70
|
|
wet: 0.30
|