# Speed Obby audio sources

| Shipped file | Source | Author | Licence | Checked |
| --- | --- | --- | --- | --- |
| `v3/key-bank.wav` | [Keyboard Typing 10 (WhiteFox, Hako Violet switches)](https://freesound.org/people/grcekh/sounds/546167/); [Keychron K10 linear impacts](https://freesound.org/people/Sadiquecat/sounds/789627/), [spacebar](https://freesound.org/people/Sadiquecat/sounds/789630/); [linear single key](https://freesound.org/people/shanecutrufello/sounds/556286/); [Mechanical Keyboards](https://freesound.org/people/StavSounds/packs/42151/) (eight tactile takes); [mechanicalKeys](https://freesound.org/people/UberBosser/packs/23846/) (Q, W, Ctrl, Space); [Smith Corona Corsair typewriter](https://freesound.org/people/megashroom/sounds/390343/); [typewriter single key, type 1](https://freesound.org/people/yottasounds/sounds/380138/) | grcekh; Sadiquecat; shanecutrufello; StavSounds; UberBosser; megashroom; yottasounds | [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) verified on each of the 18 individual source pages | 2026-10-06 (the 15 v2 sources 2026-10-05) |
| `v2/mechanical-bank.wav` | [Keychron K10 linear impacts](https://freesound.org/people/Sadiquecat/sounds/789627/), [spacebar](https://freesound.org/people/Sadiquecat/sounds/789630/); [linear single key](https://freesound.org/people/shanecutrufello/sounds/556286/); [Mechanical Keyboards](https://freesound.org/people/StavSounds/packs/42151/) (eight tactile takes); [mechanicalKeys](https://freesound.org/people/UberBosser/packs/23846/) (Q, W, Ctrl, Space) | Sadiquecat; shanecutrufello; StavSounds; UberBosser | [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) verified on each of the 15 individual source pages | 2026-10-05 |
| `v1/switch-grains.wav` | [Keyboard Soundpack #1: Typing and Single Keystrokes](https://opengameart.org/content/keyboard-soundpack-1-typing-and-single-keystrokes), [original ZIP](https://opengameart.org/sites/default/files/unicae_games_keyboard_soundpack_1_0.zip) | unicaegames | [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) | 2026-10-05 |

## Current v3 bank (October 6)

156,716 bytes: 51 mono PCM16 slots, 48 ms each, 32 kHz. v2 resampled to 24 kHz and low-passed every grain at
9.5 kHz, which removed the crisp top of each key; v3 keeps everything the previews carry (their encoders stop near
16 kHz), and the game converts each rendered stroke to the device rate once with a windowed-sinc filter.
`v3/key-bank.json` lists every source page, public preview URL, SHA-256, cue, role and gain, plus the output hash.
`tools/keyobby/key-bank-sources.json` pins the 18 inputs; `prepare-key-bank.py` reproduces the bank byte for byte
with ffmpeg 7.0.2 and numpy/scipy. Processing: mono, 32 kHz, 50 Hz rumble removal, 1 ms fade-in, a 6 ms (typewriter
12 ms) fade-out and energy matching. No low-pass, added noise, compression or new envelope. No runtime request goes
to Freesound.

Twelve presets use five recorded families: Crisp (WhiteFox, Hako Violet tactile switches), Silk (Keychron K10 linear
and one linear single key), Thock (StavSounds tactile takes), Snap (UberBosser blue switches) and Typewriter (Smith
Corona Corsair strikes, with a typewriter single key as its long key). Long letter keys use recorded spacebars.
Arcade, Jelly, Wood, Glass, Marble, Melody and Laser lay original synthesized layers (a chiptune blip, a springy
pop, wood-block and stone modes, glass partials, a music-box note, a falling zap) over those recorded keys. The
preset names describe our sound designs; they are not keyboard models, and none reuses another game's preset names.

The v2 and v1 banks remain immutable for old clients; new clients fetch v3 only.

## Earlier banks

The previous v1 46,124-byte mono bank contains edited press/return excerpts from eight single-key takes in the source pack.
The creator identifies the recording equipment as a Cherry KC 1000 and Shure SM7B. Our six pack names describe
our processed sound designs; they do not identify six separately recorded keyboards.

`v1/switch-grains.json` records every input filename/hash, cue point, archive hash and output hash.
`tools/keyobby/prepare-switch-grains.py` reproduces the bank from that exact archive. Processing: mono conversion,
24 kHz resampling, filtering, edge fades and level matching. Runtime sound shaping adds original housing,
spring/stabilizer and synthetic material layers; all event effects and wind are generated from original code.

Original-game video audio is private research evidence only and is never an input to the asset preparation script
or the shipped sound banks. No competitor audio, speech or music ships in the game.

### v2 bank (October 5)

104,492 bytes: 34 mono PCM16 slots, 64 ms each, 24 kHz. The 15 source files are the creators' publicly
served HQ MP3 previews; these are not lossless original downloads. `v2/mechanical-bank.json` lists every
individual source page, public preview URL, SHA-256, cue, role and gain, plus the output hash.
`tools/keyobby/mechanical-bank-sources.json` pins the inputs; `prepare-mechanical-bank.py` reproduces the bank
with ffmpeg 7.0.2 and numpy/scipy. No runtime request goes to Freesound.

Creamy uses linear impacts, Tactile uses tactile takes, and Clicky uses blue-switch takes. Eight linear
impacts share a separate rebound. The three blue-switch ordinary takes produce eight shaped variants;
this is not eight distinct recorded blue keys. Long keys use recorded spacebars. Typewriter, Jelly and Glass
add original resonant shaping to these families. The starter packs add no synthetic noise. Processing retains
recorded body and attack, removes rumble, matches energy, fades excerpt edges and shortens the press/return gap.
The six pack names describe our designs, not six separately recorded keyboard models.

The v1 asset remains immutable for old clients; new clients fetch v2 only.
