HeadlinesBriefing favicon HeadlinesBriefing.com

Construyendo el motor de audio Aetheryte Radio

Hacker News •
×

El autor detalla la implementación de JavaScript detrás de Aetheryte Radio, replicando el comportamiento de audio ambiental de Final Fantasy XIV. El juego reproduce efectos de sonido "whir" en intervalos aleatorios, pitches y volúmenes para crear una ilusión de vida y enmascarar la repetición de activos. FFXIV proporciona valores mínimos y máximos para estos parámetros, lo que permite traducir directamente al código: selección de índice aleatorio, tasas de reproducción entre 0.794 y 1.0, y valores de ganancia entre 0.6 y 1.0.

La configuración del gráfico de audio sigue patrones estándar de la Web Audio API: asignar un nodo, establecer metadatos, conectar. Se crea un bucle de zumbido constante usando una fuente de búfer con tasa de reproducción fija de 0.63, conectada a un nodo de ganancia y configurada para bucear indefinidamente.

El sistema whir evita bucles convencionales. En lugar de `while(true)` con reposos, `setTimeout` programa el siguiente whir en un retraso aleatorio (0–2001ms). La función `chooseWhir` crea un nodo de origen, asigna propiedades aleatorias, lo conecta y comienza la reproducción. Crucialmente, cuando el sonido termina, el nodo se desconecta y se programa uno nuevo mediante `onended`, añadiendo latencia marginal aceptable para efectos ambientales.