HeadlinesBriefing favicon HeadlinesBriefing.com

Construction du moteur audio Aetheryte Radio

Hacker News •
×

L'auteur détaille l'implémentation JavaScript derrière Aetheryte Radio, reproduisant le comportement audio ambiant de Final Fantasy XIV. Le jeu joue des effets sonores "whir" à des intervalles aléatoires, des hauteurs et des volumes pour créer une illusion de vie et masquer la répétition des actifs. FFXIV fournit des valeurs min/max pour ces paramètres, permettant une traduction directe en code : sélection d'index aléatoire, taux de lecture entre 0.794 et 1.0, et valeurs de gain entre 0.6 et 1.0.

La configuration du graphique audio suit des modèles standards de l'API Web Audio : allouer un nœud, définir des métadonnées, connecter. Un bourdon constant est créé à l'aide d'une source de buffer avec un taux de lecture fixe de 0.63, connecté à un nœud de gain et défini pour boucler indéfiniment.

Le système whir évite les boucles classiques. Au lieu de `while(true)` avec des temps d'attente, `setTimeout` programme le prochain whir à un délai aléatoire (0–2001ms). La fonction `chooseWhir` crée un nœud source, attribue des propriétés aléatoires, le connecte et démarre la lecture. Crucialement, lorsque le son se termine, le nœud est déconnecté et un nouveau est programmé via `onended`, ajoutant une latence marginale acceptable pour les effets ambiants.