The same library as the Lost in Production trailer: 29 semantic names (tap, type, pop, notif, whoosh, register, printer, stamp, tick, bell…) mapped to soundeffect-lab.info files in sfx/sources.json, each with its measured onset so the mixer puts the transient exactly on the beat. The site's terms allow commercial use but not redistributing the files, so they are gitignored and `npm run sfx` downloads them; catalog.json indexes the whole library. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
46 lines
3.7 KiB
Markdown
46 lines
3.7 KiB
Markdown
# Sound effects
|
||
|
||
Every sound effect comes from [効果音ラボ](https://soundeffect-lab.info/), the library the Lost in Production trailer used.
|
||
It is free for commercial use with no credit required, but its [terms](https://soundeffect-lab.info/agreement/) forbid redistributing the files themselves. So `public/sfx/*.mp3` is gitignored and fetched on demand.
|
||
|
||
```bash
|
||
npm run sfx # → public/sfx/<name>.mp3 (idempotent; refetches a name whose pick changed)
|
||
bash sfx/fetch-sfx.sh --force # refetch everything · bash sfx/fetch-sfx.sh tap click → only those
|
||
node sfx/measure.mjs --write # after changing a pick: re-measure duration/onset/peak into sources.json
|
||
```
|
||
|
||
The site serves an mp3 only to a browser User-Agent with a Referer from its own category page. The script sends both, and it fails loudly if the site answers with anything other than an mp3. Entries with a `clip` are cut out of a longer recording with ffmpeg (the system ffmpeg, else Remotion's bundled one). Every other file is the site's original, byte for byte.
|
||
|
||
- **`sources.json`** maps each semantic name to a file and its measured `duration`, `onset`, `peakDb`, `peakAt` and `audible`. `scripts/mix.mjs` subtracts `onset` (the first sample above −40 dBFS) so the transient lands exactly on the cue time. For swells (whoosh, swoosh, register's bell), `peakAt` is where the loud part is. `audible` is how long the sound really rings, which is useful for `dur`.
|
||
- **`catalog.json`** lists every mp3 on the site (2,352: 1,375 effects and 977 voice lines). Each entry has its path, Japanese title and description, an English gloss and the page it is listed on. Grep it to pick new sounds. The site's "life" category is `various` (生活).
|
||
|
||
## Names
|
||
|
||
| name | use | file (効果音ラボ title) |
|
||
|---|---|---|
|
||
| `tap` · `tap2` | soft touchscreen tap, alternate the two | `button/cursor12` コッ · `anime/pa1` パッ |
|
||
| `click` | crisp selection click | `button/decision31` カチッ |
|
||
| `type` · `type2` | one keystroke each (`typeCues` alternates them) | `machine/keyboard1` · one stroke cut from `machine/keyboard-high-speed2`, leveled to `type` |
|
||
| `send` | message sent ✓, a rising chime | `button/decision53` ピロリン |
|
||
| `pop` · `pop2` | cards popping in | `button/decision35` ポピッ · `button/decision34` ポン |
|
||
| `notif` | phone notification | `button/decision40` ピロン |
|
||
| `vibrate` | phone buzz (0.9 s) | first buzz of `machine/mobile-phone-vibration2` |
|
||
| `whoosh` · `whoosh2` | fast transition, light · heavy | `battle/katana-gesture2` · `battle/punch-real-swing3` |
|
||
| `swoosh` | softer, longer slide | `battle/katana-gesture1` |
|
||
| `impact` · `impact2` | title slam: boom (3.5 s tail; use `dur`) · text slam | `anime/don-1` ドーン · `anime/text-impact1` |
|
||
| `sparkle` | reveal shimmer | `button/decision37` キラリーン |
|
||
| `register` | ka-ching (the bell rings at ~0.36 s) | `anime/amount-display1` |
|
||
| `printer` | receipt print burst (0.75 s) | one pass of `machine/printer-print1` |
|
||
| `stamp` | stamp thump | `battle/arrow-pierce1` ドスッ, tail cut |
|
||
| `tick` | one clock tick | one tick of `various/clock-hand2` |
|
||
| `bell` | the mascot's handbell (≈ 6 dB quieter than the rest) | `various/bell1` 鈴が鳴る |
|
||
| `alarm` | a scheduled job fires | first beep burst of `machine/alerm1` |
|
||
| `toggle` | switch flip | `various/electricity-switch1` |
|
||
| `data` · `data2` | network-packet blips | `button/cursor5` · `button/cursor3` |
|
||
| `success` | checkmark ding | `button/decision13` ピン |
|
||
| `tear` | paper rip | `various/paper-tear2` |
|
||
| `countup` | rolling numbers (ticks rising in pitch) | `button/gauge-recovery3` |
|
||
| `shutter` | camera shutter | `machine/camera-shutter2` |
|
||
|
||
The `why` field of each entry in `sources.json` says what the measurements showed and what the pick beat.
|