godzilla.sfx — synthesized WAV sound effects + 4-layer adaptive music.
ensureAssets() renders every sound with pure-Luau DSP (22050 Hz, 16-bit mono PCM)
into /zero/source/godzilla/audio/. Playback spawns temporary entities with the
builtin Audio component; tick(dt) reaps finished one-shots and crossfades music.
srand(seed: number) → void
| arg | type | description |
|---|
| seed | number | |
soft(x: number) → number
DSP helpers
| arg | type | description |
|---|
| x | number | |
edgeFade(s: { number }, n: number, inSec: number, outSec: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| inSec | number | |
| outSec | number | |
normalize(s: { number }, n: number, peakTarget: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| peakTarget | number | |
loopNoise(n: number, fadeSec: number, alpha: number) → void
Seamlessly-loopable lowpassed noise: renders n+fade samples and crossfades
the tail into the head so sample n flows back into sample 1.
| arg | type | description |
|---|
| n | number | |
| fadeSec | number | |
| alpha | number | |
addThud(s: { number }, n: number, startT: number, freq: number, dur: number, decay: number, amp: number) → void
Decaying sine thud added in place (clamped to the buffer, no wrap).
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| startT | number | |
| freq | number | |
| dur | number | |
| decay | number | |
| amp | number | |
addKick(s: { number }, n: number, startT: number, amp: number, f0: number, f1: number, decay: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| startT | number | |
| amp | number | |
| f0 | number | |
| f1 | number | |
| decay | number | |
addPad(s: { number }, n: number, freq: number, amp: number, lfoCycles: number, sawMix: number) → void
Sustained pad voice: frequency quantized to an integer number of cycles per
MUSIC_LEN, LFO completes integer cycles — the seam is phase-continuous.
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| freq | number | |
| amp | number | |
| lfoCycles | number | |
| sawMix | number | |
encodeWav(s: { number }, n: number) → string
WAV encode (RIFF PCM, 22050 Hz, 16-bit mono)
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
genRoar(s: { number }, n: number, dur: number) → void
Sound generators (each fills s[1..n]; t in seconds)
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| dur | number | |
genThumpFactory(f0: number, f1: number, noiseDur: number, decay: number, rumble: number) → void
| arg | type | description |
|---|
| f0 | number | |
| f1 | number | |
| noiseDur | number | |
| decay | number | |
| rumble | number | |
genWhooshFactory(bright: number, lowAmp: number) → void
| arg | type | description |
|---|
| bright | number | |
| lowAmp | number | |
genGrab(s: { number }, n: number, dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| dur | number | |
genThrow(s: { number }, n: number, dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| dur | number | |
genCrumble(s: { number }, n: number, dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| dur | number | |
genBreathCharge(s: { number }, n: number, dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| dur | number | |
genBreathLoop(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genExplosion(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genMissile(s: { number }, n: number, dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| dur | number | |
genBoomFactory(alpha: number, nDecay: number, f0: number, f1: number, sDecay: number) → void
| arg | type | description |
|---|
| alpha | number | |
| nDecay | number | |
| f0 | number | |
| f1 | number | |
| sDecay | number | |
genJetPass(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genRotor(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genSiren(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genChime(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genCombo(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genFrenzy(s: { number }, n: number, dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| dur | number | |
genGameover(s: { number }, n: number, dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| dur | number | |
genSplash(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genMusicCalm(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genMusicTense(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genMusicBattle(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
genMusicFrenzy(s: { number }, n: number, _dur: number) → void
| arg | type | description |
|---|
| s | { number } | |
| n | number | |
| _dur | number | |
ensureAssets( ) → boolean
Asset synthesis
audioComp(rec: { id: string, name: string }) → any
Liveness + component lookup by name: entity.find returns nil quietly when the
entity is gone (probing a dead id through entity(id) logs an engine error, and
externally-despawned loops are a supported flow).
| arg | type | description |
|---|
| rec | { id: string, name: string } | |
play(name: string, opts: PlayOpts?) → string
| arg | type | description |
|---|
| name | string | |
| opts | PlayOpts? | |
tick(dt: number) → void
| arg | type | description |
|---|
| dt | number | |
musicSetThreat(level: number, frenzy: boolean?) → void
| arg | type | description |
|---|
| level | number | |
| frenzy | boolean? | |
setVolumes(v: { master: number?, sfx: number?, music: number? }) → void
| arg | type | description |
|---|
| v | { master: number?, sfx: number?, music: number? } | |