re: full bank manifest -- 4114 banks, 390.9 minutes, and the durations self-validate

With the wave boundary exact and Channels read rather than assumed, every field
describing a bank can be read: path, cue, sound id, channels, rate, data bytes,
packets, samples, seconds. Duration comes from the last cumulative sample in the
seek table over the sample rate -- arithmetic, no decoding.

Nothing was fitted to an expectation, yet every category lands where its content
says it should: BGM mean 146 s, Movie mean 79 s with an 11-minute maximum,
Briefing 10.8 s, in-mission Voice 2.79 s never exceeding 7.3. If the boundary
rule, the channel field or the seek table were misread, the numbers would not
sort into those five shapes.

Incidental: 4 banks run at 44100 Hz against 48000 everywhere else, and the BGM
tracks are the stereo ones. 1021 of the 5135 FILES paths have no RIFF and are
excluded as headerless.
This commit is contained in:
Sylpheed RE agent
2026-08-26 05:39:16 +00:00
parent 0a0a0333dd
commit c8f6617620
3 changed files with 4161 additions and 1 deletions

View File

@@ -112,3 +112,40 @@ was wrong.
* **Why 55 English banks have their first `RIFF` at or before 1392**, inside
what the headerless reading treats as the header.
* **Nothing here was run.** This is a static census of the archive.
## ✅ A full bank manifest — and the durations validate the whole chain
**2026-08-26.** With the wave boundary exact and `Channels` read rather than
assumed, every field needed to describe a bank can be *read*:
path | cue | sound id | channels | rate | data bytes | packets | samples | seconds
Committed as [`../data/voice-bank-manifest.txt`](../data/voice-bank-manifest.txt)
**4 114 banks**, every one carrying a full `RIFF`/`fmt `/`data`/`seek`
structure. (1 021 of the 5 135 `FILES` paths have no `RIFF` and are excluded;
those are the headerless banks.) Duration comes from the **last cumulative
sample** in the `seek` table divided by the sample rate — arithmetic, no
decoding.
**Total: 390.9 minutes — about 6½ hours of audio.**
The reason this is worth more than a listing is that nothing in it was fitted to
an expectation, yet every category lands where its content says it should:
| directory | banks | total | mean | longest |
|---|---|---|---|---|
| root (`BGM_*`, `JNGL_*`) | 34 | 82.8 min | **146.0 s** | 277.5 s |
| `Movie` | 62 | 81.4 min | **78.8 s** | **672.7 s** |
| `Briefing` | 72 | 12.9 min | **10.8 s** | 26.8 s |
| `etc` | 1 776 | 112.9 min | **3.8 s** | 136.8 s |
| `Voice` | 2 170 | 100.9 min | **2.79 s** | 7.3 s |
Music tracks average two and a half minutes; a cutscene track runs up to eleven
minutes; briefing lines are ten seconds; and in-mission radio chatter averages
**2.8 seconds and never exceeds 7.3**. If the boundary rule, the channel field
or the seek table were being misread, these numbers would not sort themselves
into those five shapes.
Two incidental facts fall out: **4 banks run at 44 100 Hz** where everything else
is 48 000, and the `BGM_*` tracks are the stereo ones.