Sound
Everything *First Light: Luteway* is heard as. It sits on `mount_sound` and is attached by the scene entrypoint; it spawns its own emitters as temporary children, so nothing it makes is written into the scene file.
Sound
Everything First Light: Luteway is heard as. It sits on mount_sound and is
attached by the scene entrypoint; it spawns its own emitters as temporary
children, so nothing it makes is written into the scene file.
Five voices
| voice | clip | what it does |
|---|---|---|
bed | lw_bed | pre-dawn wind and the sea below, looping under everything — and leaning in as the tide climbs toward the penguin's feet |
low | lw_score_low | the pad, there from the title card on |
mid | lw_score_mid | a plucked figure that arrives as the sky starts to turn |
high | lw_score_high | bells and glass, which only the first light brings |
| sfx | — | one non-spatial source every one-shot is fired through, so any number of them overlap |
The score is one piece in three layers, not three pieces. All three run from
the first frame at silence and are faded by LW.state.dawn.t, so the music
brightens with the light rather than switching tracks: mid comes up
across t = 0.10 … 0.45, high across t = 0.45 … 0.85. Their loops are 12 s,
8 s and 6 s, so they phase against each other and the repeat is hard to hear
over a two-minute climb.
What each moment sounds like
The one-shots answer both the explicit LW.sfx(name, opts) request and the
gameplay events themselves — hop, land, cling, shake, slip, won,
lost, firstLight — de-duplicated inside a 40 ms window. So the game is heard
whether or not the slice that caused the moment remembers to ask for a sound,
and asking twice is not heard twice.
- hop is pitched by its power: a full hop is lower and longer, a tap is quick and high.
- land picks its clip from the ledge kind —
rockthud,icering,lutesquelch — and is louder the harder the landing. - Near the crest the rookery answers: single brays and, now and then, the whole colony, both louder the closer the penguin is to the top.
- With the sea within three units of the feet, a surge is heard every few seconds.
- won plays the first-light chord, the colony under it and seven brays over the top, none of them in tune with another. lost is the wave, twice.
Nothing is spatial. The mix is 2D on purpose: the camera is orthographic and a side-on climb has no near and far to speak of, so it costs the listener nothing to be somewhere else.
Mixing
master, musicLevel, ambientLevel and sfxLevel are the four levels, set
on the mixer's music / ambient / sfx channels. Everything at full volume
is the same as nothing, so the bed and the score sit well under the one-shots
and the loudest thing in the game is the sea taking the beach.
chatter turns the rookery off (0) for a quiet capture.
Checking it without hearing it
local sound = entity.find("mount_sound").component.get("luteway.sound.Sound")
sound:report() -- clips loaded, each voice's live volume and target
sound:cue("land_ice") -- fire one clip, without playing to the moment for it
audio.observe() -- what the mixer says is actually sounding
audio.levels() -- the master meter, which cannot be argued with
Scoped to this part · feeds back into the world's score.