Audio Systems

Three independent audio layers operate simultaneously, each with its own technology and purpose.

Layer 1 — AudioSystem (SFX Synthesis)

Native Web Audio API synthesiser for real-time game sound effects. No samples — all sounds generated from oscillators, noise buffers, and filters.

SoundTypeFrequencyDuration
Engine HumSawtooth + lowpass 100Hz30-80 Hz (speed-responsive)Continuous
ShootTriangle sweep800 → 100 Hz0.3s
ExplosionWhite noise + lowpass 1kHzBroadband0.5s
Lock ToneSquare wave1,200 Hz0.1s
Lock AcquiredDouble beep2,000 Hz0.2s

Layer 2 — ZeroSounds (Procedural Audio)

49 named sounds (menuConfirm, levelUp, death, coin, laser, etc.) with all parameters derived O(1) from (soundName, worldSeed) via hash chain. 100% deterministic — no Math.random(). Same seed always produces identical audio.

Supports 3 synthesis styles: tonal (pitched oscillator), noisy (filtered noise), and arpeggio (multi-note chord patterns). Each with full ADSR envelopes, filters, echo, and bit-crush effects.

ZeroSystem: ZeroBytes (hash → waveform, frequency, envelope, filter, effects)

ZeroSounds Apache 2.0

Layer 3 — MusicManager (Adaptive Soundtrack)

Howler.js-based file playback with crossfading between tracks and context-aware playlist switching. Music volume is independent of SFX master volume.

MusicManager Apache 2.0

Context Switching

Game StatusMusic Context
Menu / Hangar / Settings / Pausemenu
Playing (exploration)exploration
Mission Complete / Victoryvictory
Game Overmenu

Crossfade duration: 2 seconds. Tracks advance automatically through the playlist with optional intra-track crossfade.

Music Stations

Music by JXHNSXNT. Selectable in Settings > Audio > MUSIC STATION.

Default

Platano

9 tracks. Latin-flavoured electronic. 2 menu, 2 exploration, 2 combat, 2 boss, 1 victory.

Station 2

Failure

13 tracks. Eastern-European cyberpunk. 3 menu, 3 exploration, 3 combat, 2 boss, 2 victory.

Station 3

KAN

10 tracks. Minimal industrial. 2 menu, 2 exploration, 2 combat, 2 boss, 2 victory.

ZeroSpeech (Voice Synthesis)

Voice lines generated via KokoroTTS ONNX inference on the Tauri Rust backend (or fallback oscillator synthesiser). Pre-baked during the loading screen into an in-memory PCM cache. Playback during gameplay is fully synchronous — zero awaits, zero frame drops.

ZeroSystem: ZeroVoice (xxHash64 position → voice derivation)

ZeroSpeech Apache 2.0

Multi-Pool Architecture

The speech system is divided into structured pools, each with its own voice profile and ring modulation preset:

PoolSlotsProfileRing PresetStatus
Goon10goon-pilot.jsonClassic DalekActive — enemy combat taunts
Persona10fleetcarrier-profile.jsonAlien RadioActive — Fleet Carrier ATC
Narrator10(reserved)(reserved)Reserved
Menu2(reserved)(reserved)Reserved

Goon Pool (Enemy Taunts)

Cybernetic pilot taunts triggered by enemy proximity (250 units, 3-second cooldown). Ring modulation applies "Classic Dalek" radio effect. Cold, clipped, machine-certain register.

Fleet Carrier Persona (Allied ATC Comms)

The UNF ALBATROSS broadcasts ATC-style allied chatter every 60 seconds during gameplay (first broadcast at 5 seconds). Uses "Alien Radio" ring preset for distinct carrier command channel flavour. 8 broadcast categories themed to the Paradistro megastructure:

Ops

Status Broadcast

Carrier systems, fleet condition, sensor updates.

Nav

Navigation Advisory

Biome transitions, lattice density, structural anomalies.

Recon

Patrol Report

Sector sweeps, threat assessment, all-clear reports.

Alert

Combat Alert

Contact reports, tactical updates, weapons authorization.

Fleet

Operations Chatter

Flight deck ops, maintenance, logistics status.

Lore

Lore Fragment

Supreme echoes, archive transmissions, builder mythology.

Morale

Morale Broadcast

Fleet encouragement, recognition, covenant solidarity.

Recovery

Return Advisory

Landing guidance, deck status, recovery ops.

~800,000+ unique callout combinations across all categories via the ZeroResponse template + pool system.

ZeroSystem: ZeroResponse (template + pool selection via hash, profile-driven, O(1) per line)