Skip to content

Latest commit

 

History

History
221 lines (174 loc) · 10.1 KB

File metadata and controls

221 lines (174 loc) · 10.1 KB

09 — two languages: a sixth of the bytes, and the codec had nothing to do with it

Measure: the 5.9974 : 1 byte ratio between the English and French speech factorises exactly into 4.4100 × 1.3600 — sample rate and running time — and the codec's factor is 1.0000. SDX2 and eight-bit PCM both store one byte per sample. Dropping the codec on the French saved nothing and cost eight bits of resolution.

python tools/aiffwav.py --validate
python tools/aiffwav.py _work/files/track19L.aiff _work/audio/track19L.wav
python tools/l10ncmp.py --validate
python tools/l10ncmp.py --dir _work/audio --pair-suffix .fre

The split, and it is total

This is the collection's first bilingual object and the first European one, and the audio is not localised in the sense of a translated file among untranslated ones. The whole speech track exists twice, and the two halves are encoded differently:

             files  container  rate      bits  codec   sample bytes  running time
ENGLISH        20   AIFF-C     44,100    16    SDX2     155,588,105     58:48.07
FRENCH         20   AIFF       10,000     8    NONE      25,942,520     43:14.25

Every French file is the English name with .fre inserted — /track18L.aiff and /track18L.fre.aiff — and the pairing is exact: twenty of twenty, nothing left over on either side. As a share of the user area: 39.4017 % English, 6.5698 % French.

Separating the two questions, which the brief was right to insist on

The byte ratio is 155,588,105 / 25,942,520 = 5.9974 : 1. Three things could produce it — the sample rate, the bit depth, the running time — and they are not the same kind of decision. Taken apart:

sample rate     44,100 / 10,000                        = 4.4100
running time     3,528.07 s / 2,594.25 s               = 1.3600
                                                         ------
                 4.4100 x 1.3600                       = 5.9974
measured                                                 5.9974

To four significant figures, and there is no room left for a third factor.

So the bit depth contributed nothing, and this is the finding. SDX2 is the 3DO's square-difference codec: it stores one signed byte per sample per channel and expands it to a sixteen-bit sample, which is what "exactly 2:1 against sixteen-bit PCM" means. Eight-bit PCM also stores one byte per sample. The two encodings cost identical bytes.

French, as pressed: 10,000 Hz, 8-bit PCM,  25,942,520 bytes, 8-bit resolution
French, as it could have been: 10,000 Hz, SDX2, 25,942,500 bytes, 16-bit

The same twenty-five megabytes, to within twenty bytes, and eight more bits of dynamic range for free. The disc already ships the codec — it is in the audio folio, it is named in /LaunchMe as the literal string SDX2, and the English half of the same directory uses it on twenty files. Whoever encoded the French turned off a codec that was costing them nothing.

That is the argument the session brief said was missing, and it is one sentence: the French is not cheaper because it lacks a codec; it is cheaper because it was sampled at a quarter of the rate, and dropping the codec on top of that was free damage.

What the second factor is, and only a person could say

1.3600 is the duration factor: the French speech runs 43:14.25 against the English 58:48.07. Per pair the ratio has a median of 0.7585, a minimum of 0.4813 and a maximum of 1.0003.

A shorter recording is either a shorter performance or a truncated one, and no measurement in this repository can tell those apart. The owner of this disc listened to track19L in both languages — 163.28 s English, 87.96 s French, the second-shortest ratio on the disc — and reported:

"They are the same text. The French is simply MUCH faster in delivery — it is normal speech; the English is slow, measured, very slow — not slowed artificially, the speaker himself is slow, in a Benedict Cumberbatch register."

Nothing is cut. The same words are spoken at a different pace by two actors, and the 1.3600 is a fact about two performances rather than about two builds. notes/owner-observations.txt has it in full.

This session predicted the opposite. Clause C25 of 00 predicted truncation and offered an envelope test to demonstrate it. It is wrong and it is left standing there.

Twenty pairs, and not one of them is the same recording

l10ncmp.py was written for this disc because nothing in 446 tools compares a localisation with its original. It reduces both sides to a short-term energy envelope at 1,000 Hz — the only way to compare 44,100/16-bit SDX2 with 10,000/8-bit PCM at all — and takes the maximum normalised cross-correlation over a ±5 s lag search. Its controls: a track against itself scores 1.0000, a track against itself requantised to eight bits scores 1.0000, and against an unrelated tone, silence and white noise it scores 0.0146, −1.0000 and 0.0181.

pair            EN s     FR s   ratio        r
track18L      402.53   276.58  0.6871   +0.0373
track18R      433.50   346.36  0.7990   +0.0281
track19L      163.28    87.96  0.5387   +0.0504
track19R      162.85   162.90  1.0003   +0.0557
track20L       86.56    60.16  0.6950   +0.0988
...
track29       165.34    79.58  0.4813   +0.0581

r >= 0.80 (the same signal re-encoded) : 0 of 20
r <  0.50 (different recordings)       : 20 of 20
median r                               : 0.0523

Twenty pairs, forty performances, and no pair is the same audio. Both languages were recorded, not resampled from each other.

And that dissolves the one thing the pre-briefing called out as wanting an explanation. track19R is 162.85 s in English and 162.90 s in French — the same to a twentieth of a second — and the pre-briefing said a coincidence that wants explaining. Its correlation is +0.0557, indistinguishable from the other nineteen. It is a coincidence and nothing else. Twenty pairs spread over ratios from 0.48 to 1.00 will land one of them near 1.00; this one did, and there is nothing behind it. Clause C24 predicted it was the same content re-encoded, and that is wrong too.

L and R are not two channels

Eight of the twelve numbered speech recordings exist as trackNNL and trackNNR, four do not, and every file on the disc declares one channel. The obvious reading is that a stereo recording was split into two mono files for the audio folio to spool.

It is wrong. Correlating L against R within one language:

English L vs R    r = +0.0345 .. +0.0967    0 of 8 above 0.5
French  L vs R    r = +0.0267 .. +0.1382    0 of 8 above 0.5

and their durations disagree by up to 113 seconds (track23: 198.93 against 85.19). They are sixteen different recordings, not eight stereo pairs. What the letters mean is not derived, and this chapter says so rather than guessing. Clause C22 predicted six of eight above 0.5 and got zero.

The numbering, which is one sequence and has a hole in it

The speech is track18 .. track29 — twelve numbers. The music (chapter 10) is cmus02 .. cmus17 — and cmus06 does not exist, so fifteen numbers.

02 03 04 05 __ 07 08 09 10 11 12 13 14 15 16 17   music, 15 files
                                                18 .. 29  speech, 12 numbers

One numbering space, 02 through 29, with 06 missing: fifteen plus twelve is twenty-seven, and 02..29 is twenty-eight. The audio of this game was numbered as one list of tracks and split into two containers by whether it needed translating.

The level, which is the other half of what it sounds like

The owner's third observation was that the French sounds far worse — "almost like a badly tuned radio" against an English recording so clean "you can barely hear the microphone's own noise floor." There is a measurement under that, and it is not the sample rate:

                RMS (full scale = 1.0)
English    0.0663 .. 0.1098      mean 0.0875
French     0.1660 .. 0.2191      mean 0.1757

The French is mastered 2.008 times louder — a shade over six decibels — and its range is far tighter than the English's. That is what an engineer does to eight-bit audio: eight bits give 48 dB of range against sixteen bits' 96, so the signal is pushed up to keep it off the quantisation floor, and every file is normalised to the same target. The English files were left at whatever level the recording had.

It does not work. Raising the level raises the noise with it, and the audible result is the owner's badly tuned radio.

What it would have cost to do it properly

French at 44,100 Hz with SDX2 : 2,594.25 s x 44,100 = 114,406,425 bytes
as pressed                                          =  25,942,520
                                                       -----------
                                                       +88,463,905  = 43,196 sectors

the pressing                    192,811 sectors    57.9012 % of a 74-minute CD
with the French at parity       236,007 sectors    70.8730 %

It would have fitted. The disc is 57.9 % full; parity takes it to 70.9 %, which is less than the second disc's 70.93 % arithmetic and well inside a 74-minute CD. Capacity was not the constraint, which is the fourth time this platform's notes have reached that conclusion by a fourth route.

The drive, however, is the constraint the platform notes keep pointing at, and here it is not binding either: a single-speed 3DO drive delivers 153,600 bytes a second, and SDX2 mono at 44,100 needs 44,100 — 28.7 % of the drive. Two such streams would still leave two thirds of it. Whatever decided the French half, it was not bandwidth and it was not capacity.

What this repository will not say

It will not say why. A shorter, cheaper French recording session on a disc from a French publisher is the kind of thing that has a reason, and the disc does not carry it. What the disc carries is this: the same script, two performances, one of them recorded and encoded to a quarter of the other's bandwidth and half its resolution, on a pressing with 42 % of a CD still free — and the eight bits of that were free to keep.