# Character voice recordings

## Breathing recordings

The game plays discrete recordings for calm, winded, and recovery breathing. It changes style at the end of a take. Quiet idle breathing is enabled by default during play. All three source recordings are [CC0](https://creativecommons.org/publicdomain/zero/1.0/).

| Game files | Source and selection |
| --- | --- |
| Male `calm-*.wav` | BigSoundBank [Man Breathing, ID 2195](https://bigsoundbank.com/man-breathing-s2195.html). Two cycles from the slow nasal breathing recording. |
| Male `winded-*.wav`, `recovery-*.wav` | BigSoundBank [Breathless Man, ID 1103](https://bigsoundbank.com/breathless-man-s1103.html). Stronger and quieter cycles from sustained panting. |
| Female `calm-*.wav`, `winded-*.wav`, `recovery-*.wav` | BigSoundBank [Breathless Woman, ID 1345](https://bigsoundbank.com/breathless-woman-s1345.html). Early cycles for winded, later cycles for recovery, and the quiet tail for the calm preset. |

The build script documents the exact cut times. The takes use a gentle 55 Hz high-pass filter, edge fades and gain matching. Male idle and exertion use separate recordings. The female idle preset uses low-intensity recovery breaths from the same recording.

## Heartbeat recording

The first-person heartbeat uses six pairs of recorded heart sounds from James Heilman's [HROgg.ogg](https://commons.wikimedia.org/wiki/File:HROgg.ogg), [CC0](https://creativecommons.org/publicdomain/zero/1.0/). The cut times and processing are documented in `assets/heart/recordings.js`. The game changes the time between the recorded sounds without pitch shifting.

## Injury recordings

`hurt-grit-*.wav` plays at a nonfatal hit. `injury-moan-*.wav` can follow a recent severe hit while the player is alive. `covered-moan-*.wav` uses the same moan performances with a modest reduction in upper frequencies. At zero HP, `fatal-a.wav` plays once and cancels any pending moan. First-person injury voices mix the direct sound with a low-mid resonance from the same take. Both paths are centered and dry. Enemy injury voices use their own male bank and follow the position, distance and occlusion of the enemy.

| Voice | Source |
| --- | --- |
| Player, male | HaelDB, [Male Grunt/Yelling sounds](https://opengameart.org/content/male-gruntyelling-sounds), [CC0](https://creativecommons.org/publicdomain/zero/1.0/). Performer 3's `3grunt4.wav` and `3grunt5.wav` supply the hits. `3grunt6.wav` and the softer `3yell7.wav` supply the follow-ups. The release of `3yell1.wav` (0.940–1.895 s) supplies the fatal reaction. [Original archive](https://opengameart.org/sites/default/files/yelling%20sounds.zip) |
| Player, female | AuraVoice / Nocturnal_Vanguard, [Female Hurt Grunts & Groans](https://opengameart.org/content/female-hurt-grunts-groans), [CC0](https://creativecommons.org/publicdomain/zero/1.0/). All reactions come from `female_hurt_grunts_groans_1.ogg`. The fatal reaction isolates the second groan in a two-part take (5.568–6.105 s). [Repository mirror](https://github.com/CrankyCranton/micro-jam/blob/main/assets/sfx/female_hurt_grunts_groans_1.ogg) |
| Enemy, male | remaxim, [7 male pain voices](https://opengameart.org/content/7-male-pain-voices), [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/). The original `11.wav` and `14.wav` supply the hits. The descending end of `10.wav` supplies the fatal reaction. Source copies are the [credited mono MP3 conversions](https://github.com/Appuxif/forest-chopper/blob/HEAD/assets/audio/ATTRIBUTION.md). HUSHOT trimmed, filtered, faded and level-matched them. The adapted takes under `npc/`, their copies in `recordings.js` and `compare/npc-injury.wav` are also CC BY-SA 3.0. |

The player fatal reactions come from the same performance sets as the hit voices. Pitch is preserved. A gentle high shelf on the final reaction, short fades and consistent gain keep the transitions close in tone while preserving the natural decay.

## Rebuild and preview

Run `python assets/breath/_build_voice_clips.py --source-dir <download-folder>` with FFmpeg on `PATH`. The folder should contain the two BigSoundBank WAVs and `2195.mp3`. To regenerate injury voices, pass `--injury-source-dir <recording-folder>`. Put the male WAVs from the original archive directly in that folder, keeping their filenames. Name the female source `female-source.ogg`. Use `remaxim-10.mp3`, `remaxim-11.mp3`, `remaxim-14.mp3` for the credited mirror's `hurt_male_3.mp3`, `hurt_male_4.mp3`, `hurt_male_7.mp3`. Run the script without arguments to refresh previews from the current game assets.

| Files in `compare/` | Contents |
| --- | --- |
| `*-originals-concat.wav` | Calm → winded → recovery at their file levels. |
| `*-breath-game-level.wav` | The same progression at approximate in-game levels. |
| `male-injury.wav`, `female-injury.wav` | Two hits, two quieter follow-ups, two covered moans, and one fatal reaction, with an approximation of first-person playback. |
| `npc-injury.wav` | Two enemy hits and one fatal reaction. The game applies distance and occlusion during playback. |

The builder also regenerates `recordings.js` from the game WAVs. The page uses this PCM copy when opened directly from disk. The web version loads the WAVs.
