Methodology

Principle

Nothing on this site was typed by hand. A program reads the original selectorconve.xls workbook and produces the data files the calculators use; the same tools check that the site’s calculation engine returns the original’s results. The file and its code are not published: the data, the rules and the evidence are.

Extraction

  1. Catalogue. The sheet diam_mono holds the plain-string series (gauge in %mm and reference) and the five wound-string families (linear weight and reference). The columns are read as they are, quirks included: one linear weight with two references (BFA482 and BFA484), or series that end in “NO”.
  2. Formulas. The workbook’s formulas are stored as defined names in Excel’s binary format (tokens in reverse Polish notation). A purpose-built decoder evaluates them directly on those bytes, without transcription; this recovers the coefficients (150, 156.9767, 162.6506, 170, 155), the tier thresholds (100 and 150) and the PUL constant 24500.
  3. Tunings and instrument rules. The 31 instrument sheets provide notes, positions and frequencies; the base tunings at A 415 of the lute, vihuela, viols and baroque guitar were embedded as lists in the macros and are extracted from there. Which strings each instrument computes as plain and which as wound is a fixed rule of the program, transcribed as data and flagged as such in the report.
  4. Routines. Part of the calculation lived not in formulas but in Visual Basic macros. Those routines were re-expressed preserving their semantics: 32-bit variables for nylon and gut, tension read as text with two decimals, a fixed KF coefficient in the instrument sheets. Every quirk is noted in the extraction report shown below.

Verification

The calculators’ JavaScript engine is compared against two things. First, a Python reference model that evaluates the original formulas over a grid of frequencies, lengths and tensions. Second — and this is what proves fidelity — cells that Excel itself computed at the time and left stored in the Renaissance lute sheet: nineteen gauge and PUL values reproduced bit for bit. All of this is part of an automated test battery that runs before every release, together with the accessibility audit and the per-page weight budget.

What is not replicated

Reproducibility

The project repository includes the extractor, the tests and a make check that regenerates the data and checks that it does not change. Anyone with a copy of the original file can redo the extraction and verify that they obtain exactly the same JSON (the file’s SHA-256 fingerprint is shown below).

Source

SHA-256
cb761067d4aa2c920494acdaf9c39273e766d2264a6dc1b0339d45d45b724601
bytes
2717696
sheets · defined names
50 · 430

Fidelity evidence

Extraction counts

Extraction counts
DatasetCount
monoGUT: 38 · KF: 43 · NYLON: 37
woundGUT_AG: 41 · GUT_CU: 35 · NYL_AG: 23 · NYL_CU: 24 · NYL_PLAS: 21
instruments31
strings344
goldenexcelObserved: 19 · instrumentFromTension: 17 · instrumentTension: 6 · monoDiameters: 79 · monoTension: 56 · transpose: 19 · woundPul: 79 · woundTension: 79

Quirks of the original (reproduced as is)

Detected anomalies

Data provenance

Broken defined names in the original

COEF_KF, DIAMETRE_KF, DO0_415, DO2_440, DO3_440, DO4_440, DO5_440, DO6_440, DO7_440, FA2_440, FA3_440, FA4_440, FA5_440, FA6_440, FA7_440, INF2, INT1, INT2, LA1_440, LA2_440, LA3_440, LA4_440, LA5_440, LA6_440, LA7_440, MI2_440, MI3_440, MI4_440, MI5_440, MI6_440, MI7_440, NOTE1, PIN1, PIN2, RE2_440, RE3_440, RE4_440, RE5_440, RE6_440, RE7_440, SI1_440, SI2_440, SI3_440, SI4_440, SI5_440, SI6_440, SI7_440, SOL1_440, SOL2_440, SOL3_440, SOL4_440, SOL5_440, SOL6_440, SOL7_440