A 48K has one bit of sound hardware -- bit 4 of port $FE -- and every noise in the game is made by toggling it and counting. BEEP does the toggling; the routines below choose the pitch and how long to hold it.
These recordings are the game's own code running: each routine was called on a machine of its own and the writes to port $FE captured. Nothing here is synthesised or approximated.
There are two ways a sound gets started. Most are called directly and run to completion inside the call, which is why they are all a few milliseconds long -- the game is not doing anything else while they play. The rest are spawned as actors and glide over many frames; see the note on the architecture page.
Walking
The two tones at the pace they are really played: a step every eight frames, 159 ms apart, alternating low and high. Almost all of it is silence, which is what makes it read as footsteps rather than a tone.
958.5 ms, 49 edges — SOUND_FOOTSTEP.
Footstep, the low one
$6004 -- four cycles of half-period $60, from the branch at $A3DB.
2.6 ms, 8 edges, 1357 to 1360 Hz — $A3AA.
Footstep, the high one
$4004, from the branch at $A3D3. SOUND_FOOTSTEP alternates the two.
1.7 ms, 8 edges, 2002 to 2009 Hz — $A3AA.
The pip at the start of a life
Played by FLASH_SCORE every sixteenth step of the 104-frame flash of the score that begins every life.
93.0 ms, 192 edges, 1026 to 1028 Hz — SOUND_LIFE_PIP.
A weapon's flight ends
Played by SPIN_WEAPON when the axe, spell or sword expires or hits, and at the end of every burst. Its starting pitch comes from $5E25, the number of creatures in the room, so it is never quite the same twice.
6.3 ms, 32 edges, 1878 to 3715 Hz — SOUND_WEAPON_GONE.
A weapon bounces
Played by SPIN_WEAPON when any of the three weapons turns round at a wall.
6.1 ms, 8 edges, 575 Hz — SOUND_BOUNCE.
The serf fires
Sixteen calls to BEEP with the pitch walked upwards, from SERF_FIRE.
16.3 ms, 32 edges, 516 to 8838 Hz — SOUND_SWEEP_UP.
The wizard fires
Eight steps with the pitch complemented, from WIZARD_FIRE.
14.0 ms, 16 edges, 520 to 556 Hz — SOUND_SWEEP_DOWN.
The knight fires
Twelve steps with the pitch walked down, from KNIGHT_FIRE.
5.9 ms, 24 edges, 959 to 31818 Hz — SOUND_SWEEP_A41B.
A rasp
119 edges in eight milliseconds with the gaps swinging wildly -- not a note at all: the ROM's first 48 bytes sent to the speaker. Played when a timed door slams or opens and when a trapdoor opens or closes.
4.8 ms, 119 edges, 843 to 40698 Hz — SOUND_NOISE_BURST.
One cycle of BEEP
The smallest sound the game can make: a single square wave.
0.2 ms, 2 edges, 2002 Hz — BEEP.