Skip to content

EIII/ESI: a duplicate directory name double-lists, and one arm points at a blank-named header #47

Description

@bmxcode

Context

Found while closing #43 (D24, ADR-0031). That deliverable recovered five EIII/ESI banks whose header carried a mistyped copy of the directory name. Measuring #43's "second copy of a bank written twice" hypothesis turned up a real, separate mechanism on the same two discs — one that D24 deliberately does not touch.

What was found

_bank_offsets returns located as one address per bank name. Where a directory lists the same name on two entries, both resolve to the single header that name owns and read the same records twice:

Disc Name Both entries read Files each
Vol. 10 – Elements of Sound 1MB Harpsichord X records at 56981833, 57061251, … 13
Vol. 17 – Heavy Guitars HvyGtr Maj.Open records at 305233485, 306590905, … 6

Two volumes, one name, byte-identical record addresses. This is the ADR-0021 "no two volumes may claim one record" invariant (asserted disc-wide on protozoa) failing on these two discs — it is simply not asserted on them yet.

It is a different mechanism from #43: those five read nothing (a header the name-keyed lookup could not reach); these read the same thing twice (a name the lookup can only represent once).

The heavy arm has a second mystery

HvyGtr Maj.Open is listed at directory start 51 and 292. The entry at 292 name-matches a header actually called HvyGtr Maj.Open . The entry at 51's placement predicts an address holding a real EMULATOR 3X header — but its +16 name is blank ( X), declaring a 6.3 MB run of its own. So one arm of the pair points at a genuine, differently-named bank the directory does not name; what that bank is, and whether start=51 should read it rather than double-listing 292's records, is unestablished.

Why this is not #43 and is deferred

#43/D24 recovers a header the directory names once and the mastering mistyped. This is a name the directory writes twice, and fixing it means resolving a header per directory entry rather than per name (so each Harpsichord X reads its own header, and the blank-named arm of heavy is read or noted on its own terms) — plus reverse-engineering the blank-named 6.3 MB header. That is its own change with its own ADR.

Scope

Small and bounded — two names on two discs, both under SAMPLERDISC_TEST_DISCS (archive/vol.-3-orchestral/). D24 pinned elements1mb and heavy in tests/test_discs.py including this double-count; a fix here is expected to move those two sample totals, and the pin comments say so. Not being worked on now; filing so it is not rediscovered.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions