HeadlinesBriefing favicon HeadlinesBriefing.com

Membangun Audio Engine Aetheryte Radio

Hacker News •
×

Penulis menjelaskan implementasi JavaScript di balik Aetheryte Radio, mereplikasi perilaku audio ambient Final Fantasy XIV. Game memutar suara "whir" pada interval acak, pitch, dan volume untuk menciptakan ilusi kehidupan dan menutupi pengulangan aset. FFXIV menyediakan nilai minimum dan maximum untuk parameter ini, memungkinkan terjemahan langsung ke kode: pemilihan indeks acak, tingkat pemutaran antara 0.794 dan 1.0, dan nilai gain antara 0.6 dan 1.0.

Penyiapan audio grafik mengikuti pola standar Web Audio API: mengalokasikan node, menetapkan metadata, menghubungkan. Buffer sumber dengan pemutaran rate tetap 0.63 digunakan untuk menciptakan loop hum konstan, dihubungkan ke gain node dan diatur untuk loop tak hingga.

Sistem whir menghindari loop konvensional. Rather dari `while(true` dengan tidur, `setTimeout` menjadwalkan whir berikutnya pada delay acak (0–2001ms). Fungsi `chooseWhir` menciptakan source node, menetapkan properti acak, menghubungkan dan memulai pemutaran. Krusial, ketika suara selesai, node diputus dan node baru dijadwalkan melalui `onended`, menambahkan latency marginal yang diterima untuk efek ambient.