# 音频素材来源与许可

`js/audio.js` 使用的录音（素材表在 `js/audio-clips.js`）。全部可在公开网站上再分发，也可以商用：CC0 / 公有领域，或 CC BY（需署名，见下）。没有任何「仅限非商业」（NC）的素材（2026-10-13 把原来 CC BY-NC 的 alarm2.mp3 换成了 CC0 的录音）。
除尖叫录音（scr_*.mp3，Freesound 128 kbps 预览版原样使用，响度归一和开头静音裁剪在 audio.js 里载入时完成）外，所有文件都经过 ffmpeg 处理：裁剪、转单声道（环境循环保留立体声）、重采样、响度归一（循环 -20 LUFS、警报 -18 LUFS、一次性声音峰值 -1 dBFS），编码为 MP3。
循环素材首尾做了等功率交叉淡化，两端还各留有一段“绕回”余量，用来抵消 MP3 编码延迟；无缝循环区间写在 `audio.js` 的 `CLIPS` 表里。
2026-10-11 新增的地震分层、汽车报警、倒塌、闷响、吱嘎素材（q_* / alarm* / col* / thump* / creak*）同样来自 Freesound 128 kbps 预览版，经裁剪、高通（去掉无用的次声 / 低频杂音）、转单声道、重采样（22.05 / 32 kHz）、响度归一（循环 -20 LUFS，汽车报警 -18 LUFS，一次性声音峰值 -1 dBFS；一次性的载入时再按有声部分的均方根归一）后编码为 MP3；循环素材同样做了等功率交叉淡化和绕回余量，汽车报警的循环长度取报警图案周期的整数倍（按 0.8–5 kHz 频谱自相关对齐）。
某个文件载入失败时，`audio.js` 会改用合成后备（地震相关的后备只用滤波噪声，没有振荡器音调）。

**2026-10-11 去“铃铛声”**：逐段测了音调性（频谱平坦度、1.5 kHz 以上持续窄带峰的时长与出现比例、长时谱峰中值比）。原 q_dish（杯碗碟子叮当，Freesound 329557）在 99% 的帧里都有 4.9 kHz（另有 2.5 / 2.85 kHz）的持续振铃、峰高出周围 22–33 dB，每 6 s 循环一次，听起来就是铃铛，已删除，换成下表的 q_shake；q_rattle 里反复出现的 2.34 kHz 振铃、glass2 的 7.8 kHz 振铃（0.5 s）和 glass1 的 3.07 kHz 振铃用“频谱峰值限幅”去掉（STFT 每帧把比 ±320 Hz 中值高出 5–6 dB 的 700 Hz 以上窄带分量压回去，保留相位；磕碰、碎裂的噪声部分不变），玻璃尾部 0.25 s 后加快衰减。处理脚本：~/.cache/quake-lab-deps/audiowork/build_fix.py（不在仓库里）。

| 文件 | 用途 | 时长 | 大小 | 来源 | 作者 | 许可 |
|---|---|---|---|---|---|---|
| sea.mp3 | 海浪（循环，立体声 32 kHz） | 42.5 s | 416 KB | [Beach sounds South Carolina.ogg](https://commons.wikimedia.org/wiki/File:Beach_sounds_South_Carolina.ogg)（截取 7–50.5 s） | Anthropic42 (en.wikipedia) | 公有领域 |
| roar.mp3 | 海啸水声（循环，代码里降调） | 21.0 s | 124 KB | [Ocean Waves on a Tropical Beach.ogg](https://commons.wikimedia.org/wiki/File:Ocean_Waves_on_a_Tropical_Beach.ogg)（截取 120–141.5 s） | Jarrod Stanley (J.D. Savanyu) | CC0 1.0 |
| fire.mp3 | 火（循环） | 29.0 s | 199 KB | [WWS Bonfireburning.ogg](https://commons.wikimedia.org/wiki/File:WWS_Bonfireburning.ogg)（截取 12–41.5 s） | Work With Sounds / Werstas | **CC BY 4.0** |
| crowd.mp3 | **已停用**（里面有人说话、笑，2026-10-10 晚起不再加载，可删除）。原用途：人群惊慌尖叫（循环，立体声 24 kHz） | 35.0 s | 274 KB | [CrowdPanic.mp3](https://freesound.org/s/435716/)（素材本身是 17 s 周期的循环，取 20–55 s 共 2 个周期 = 34 s，首尾内容近乎相同故用等幅交叉淡化）。Freesound 128 kbps 预览版。曾叠加过一段学生表演的惊慌呼喊录音，因后半段有笑场已去掉 | belthazarus | CC0 1.0 |
| raid.mp3 | **2026-10-13 起不再使用**（地震时不拉防空警报，海啸预警改用合成的灾情警报）。原用途：防空警报（整段） | 74.5 s | 364 KB | [Civil-defense-siren-waver.ogg](https://commons.wikimedia.org/wiki/File:Civil-defense-siren-waver.ogg) | Techtonic | 公有领域 |
| siren2.mp3 | 救护车高低双音（循环） | 3.9 s | 24 KB | [WWS Fireenginesiren.ogg](https://commons.wikimedia.org/wiki/File:WWS_Fireenginesiren.ogg)（截取一个高低音周期） | Work With Sounds / Konrad Gutkowski | **CC BY 4.0** |
| wail.mp3 | 消防车电子警笛（循环） | 9.7 s | 57 KB | [Whelen.ogg](https://commons.wikimedia.org/wiki/File:Whelen.ogg)（截取 0.05–9.75 s） | Heggyhomolit | CC0 1.0 |
| boom.mp3 | 燃气爆炸 | 1.7 s | 21 KB | [2 High Quality Explosions](https://opengameart.org/content/2-high-quality-explosions)（explode.wav） | Michel Baradari (apollo-music.de) | **CC BY 3.0** |
| debris1.mp3, debris2.mp3 | 倒塌碎块（混音合成） | 3.6 s / 3.2 s | 36 KB / 32 KB | [Assorted gravel rock and stones.ogg](https://commons.wikimedia.org/wiki/File:Assorted_gravel_rock_and_stones.ogg)（截取 41–44.6 s、16.4–19.6 s），叠加 [75 CC0 breaking / falling / hit sfx](https://opengameart.org/content/75-cc0-breaking-falling-hit-sfx) 里的 rock_breaking / rock_falling / falling / breaking / wood_breaking | stephan (pdsounds.org)；rubberduck | 公有领域；CC0 1.0 |
| glass1.mp3 | 玻璃碎裂（去振铃、尾部加快衰减，32 kHz） | 1.3 s | 16 KB | [Glass Break](https://opengameart.org/content/glass-break) | Till Behrend | CC0 1.0 |
| glass2.mp3 | 玻璃碎裂（混音合成；去振铃、尾部加快衰减，32 kHz） | 1.6 s | 20 KB | [75 CC0 breaking / falling / hit sfx](https://opengameart.org/content/75-cc0-breaking-falling-hit-sfx)（glass_breaking_06 + glass_falling_02） | rubberduck | CC0 1.0 |
| scr_f1.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：女声尖叫 | 2.0 s | 47 KB | [scream_female_dry](https://freesound.org/s/844112/) | perspektywa_tn | CC0 1.0 |
| scr_f2.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：女声尖叫 | 1.8 s | 33 KB | [WomanScream.wav](https://freesound.org/s/261419/) | Archeos | CC0 1.0 |
| scr_f3.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：女声惊恐尖叫 | 2.2 s | 52 KB | [woman scream.wav](https://freesound.org/s/609973/) | starnezio | CC0 1.0 |
| scr_f4.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：女声惊恐尖叫 | 4.6 s | 105 KB | [Terror scream: grito terror .wav](https://freesound.org/s/395735/) | Splushionsindasky | CC0 1.0 |
| scr_m1.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：男声惊慌喊叫 | 1.4 s | 34 KB | [Panic-stricken screaming #2](https://freesound.org/s/547964/) | Klangkobold | CC0 1.0 |
| scr_m2.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：男声喊叫 | 1.1 s | 25 KB | [Male_Scream_7.wav](https://freesound.org/s/416545/) | tonsil5 | CC0 1.0 |
| scr_m3.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：男声喊叫 | 1.0 s | 26 KB | [Male Scream](https://freesound.org/s/353189/) | Guy110 | CC0 1.0 |
| scr_m4.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：男声尖叫 | 1.1 s | 30 KB | [male scream](https://freesound.org/s/267480/) | islandan | CC0 1.0 |
| scr_c1.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：小孩惊恐尖叫 | 2.8 s | 64 KB | [childscreaming.wav](https://freesound.org/s/219649/) | Ellenskellington | CC0 1.0 |
| scr_c2.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：小孩尖叫 | 2.1 s | 50 KB | [12-Grito niño.wav](https://freesound.org/s/428508/) | Santiaro99 | CC0 1.0 |
| q_rumble.mp3 | 地鸣：低沉持续的地下轰鸣（循环，代码里降调 10%，增益随地面加速度） | 23.0 s | 135 KB | [EarthquakeSFX.aif](https://freesound.org/s/523541/)（截取 6–28 s） | Les Blachut | CC0 1.0 |
| q_roar.mp3 | 地震滚动轰鸣（循环，降调 15%，中强震时加入） | 21.0 s | 123 KB | [G43-04-AvalancheRockslide.wav](https://freesound.org/s/438683/)（截取 3–23 s） | craigsmith | CC0 1.0 |
| q_rattle.mp3 | 桌上物件晃动磕碰（循环，轻震即有；去掉了 2.34 kHz 振铃） | 10.0 s | 79 KB | [Sounds For Earthquakes - Stuff on Table 2.wav](https://freesound.org/s/51237/)（截取 0.3–9.3 s） | RutgerMuller | CC0 1.0 |
| q_shake.mp3 | 屋里杂物、门窗家具一起晃动磕碰（循环，替换原来叮当响的 q_dish；去振铃、低通 6 kHz） | 11.0 s | 87 KB | [Hard Earthquake.mp3](https://freesound.org/s/678418/)（截取 4–15 s；作者摇晃餐厅、卧室里的各种物件录成） | crunchymaniac | CC0 1.0 |
| q_bang.mp3 | 家具、木框、金属猛烈磕碰（循环，强震时加入） | 21.0 s | 164 KB | [Wood_metal_impact_shake_earthquake_banging.wav](https://freesound.org/s/163494/)（截取 8–28 s） | tompallant | CC0 1.0 |
| creak1.mp3, creak2.mp3 | 结构吱嘎（一次性，随机降调） | 3.5 s / 4.9 s | 27 KB / 39 KB | [Creaking-Structure](https://freesound.org/s/710043/)（截取 1.25–4.7 s、4.9–9.8 s） | kletton97 | CC0 1.0 |
| creak3.mp3, creak4.mp3, creak5.mp3 | 木结构吱嘎（一次性） | 1.4 s / 1.0 s / 1.6 s | 11 / 8 / 12 KB | [wood window shutter very stiff heavy creak on offmic.flac](https://freesound.org/s/450381/)（截取 1.8–3.15 s、4.35–5.35 s、9.1–10.65 s） | kyles | CC0 1.0 |
| creak6.mp3 | 钢件弯折呻吟（一次性） | 3.2 s | 25 KB | [Bending Metal](https://freesound.org/s/556714/)（截取 0.28–3.5 s） | NachtmahrTV | CC0 1.0 |
| creak7.mp3 | 木地板吱嘎（一次性） | 0.8 s | 7 KB | [Foley_Creak_Wood_Floor_Sequence_Stereo](https://freesound.org/s/822745/)（截取 8.28–9.1 s） | Nox_Sound | CC0 1.0 |
| col1.mp3 | 建筑倒塌：墙体整片倒下（一次性） | 5.5 s | 43 KB | [S30-08 Wall falls down from fire damage.wav](https://freesound.org/s/675899/)（截取 8.7–14.2 s） | craigsmith | CC0 1.0 |
| col2.mp3 | 建筑倒塌：瓦片、石块、金属砸落（一次性） | 4.7 s | 37 KB | [Big falling debris (crash)](https://freesound.org/s/703247/) | xkeril | CC0 1.0 |
| col3.mp3 | 建筑倒塌：木结构快速垮塌（一次性） | 5.1 s | 40 KB | [S37-15 Wooden building collapses quickly.wav](https://freesound.org/s/675900/) | craigsmith | CC0 1.0 |
| col4.mp3 | 建筑倒塌：低沉的整体坍落（一次性） | 3.0 s | 24 KB | [building collapse / demolition](https://freesound.org/s/712918/) | greyfeather | CC0 1.0 |
| thump1.mp3 | 低沉闷响（叠在爆炸 / 倒塌下面，降调、低通） | 5.6 s | 33 KB | [low mid afar explosion 1.wav](https://freesound.org/s/264031/) | Logicogonist | CC0 1.0 |
| thump2.mp3 | 低沉闷响 | 5.3 s | 31 KB | [distant explosions](https://freesound.org/s/320788/)（截取 41.95–47.2 s 的一声） | Kostrava | CC0 1.0 |
| thump3.mp3 | 低沉闷响（短） | 1.1 s | 7 KB | [cannon_boom5.wav](https://freesound.org/s/186945/) | ReadeOnly | CC0 1.0 |
| alarm1.mp3 | 汽车报警：喇叭急促鸣叫（循环） | 8.5 s | 67 KB | [Car Alarm.flac](https://freesound.org/s/185474/)（美国政府机构视频里的喇叭声，公有领域） | qubodup | CC0 1.0 |
| alarm2.mp3 | 汽车报警：上下扫频、急促交替的电子警报（循环；高通 900 Hz 去掉街道噪声，循环长度取报警图案一个完整周期 14.4 s，按频谱自相关对齐） | 14.9 s | 117 KB | [Car Alarm Siren](https://freesound.org/s/383219/)（截取 1.0–15.4 s，Freesound 128 kbps 预览版；2026-10-13 起替换原来的 CC BY-NC 录音） | Kinoton | CC0 1.0 |
| alarm3.mp3 | 汽车报警：高音电子嘀嘀（循环，约 50 m 外的街道录音） | 8.5 s | 67 KB | [260222_093528_FR_Car_alarm_in_calm_street](https://freesound.org/s/849001/)（截取 5–13 s） | kevp888 | **CC BY 4.0** |
| alarm4.mp3 | 汽车报警：喇叭 + 警笛交替（雪佛兰 Cruze，循环） | 9.5 s | 75 KB | [Car Alarm.wav](https://freesound.org/s/685526/)（截取 0–9 s） | theplax | **CC BY 4.0** |
| scr_c3.mp3 | 单人尖叫（一次性，行人惊慌时在其位置播放，随机变调）：小女孩尖叫 | 4.2 s | 101 KB | [Little girl screaming.mp3](https://freesound.org/s/397686/) | piermic | CC0 1.0 |
| heli.mp3 | 直升机旋翼（循环，按距离衰减、变闷；高通去风噪，-20 dBFS 均方根） | 6.5 s | 77 KB | [Helicopter over quiet n.ogg](https://commons.wikimedia.org/wiki/File:Helicopter_over_quiet_n.ogg)（截取离得最近的 18–24 s，首尾交叉淡化成无缝循环） | ezwa | 公有领域 |

合计约 3.1 MB（实际加载的；停用的 crowd.mp3 不计）。原来的 q_dish.mp3（杯碗叮当）已删除。

## 署名（CC BY 素材）

- “Bonfire burning” by Work With Sounds / Werstas, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)，经剪辑、混成单声道并做成循环。
- “Fire engine siren” by Work With Sounds / Konrad Gutkowski, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)，截取一个音调周期并做成循环。
- “Explosion” by Michel Baradari (apollo-music.de), [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)，混成单声道并重采样。
- “260222_093528_FR_Car_alarm_in_calm_street” by kevp888, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)，截取一段、混成单声道并做成循环。
- “Car Alarm.wav” by theplax, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)，截取一段、混成单声道并做成循环。

2026-10-11 起所有声音都用录音：原来实时合成的地鸣、物件磕碰、结构吱嘎、汽车报警器、爆炸 / 倒塌的低频冲击都已换成上表的录音，只在对应文件载入失败时才回到合成后备；远处人群的嘈杂底噪（共振峰滤波噪声）已删除（没有找到能确认不含说话、笑声的人群录音，人群只用单人尖叫）。
