# Reproduce the offline recording tests

The frozen numerical results were generated by the unchanged Node/PCM algorithm; quality-browser-verification.json separately proves five actual browser downloads equal those MIDI files, and format-browser-verification.json records all ten actual format attempts.
All five inputs contain real instrumental recordings, with explicitly declared effects and a controlled two-recording sum; they are reused performances rather than five independent performances.

Download this evidence directory preserving filenames and the `formats` subdirectory, then make a separate working copy so original MIDI and checksums remain available.
No Python packages beyond the standard library are needed; Node is also required.

In the working copy run:

```
node convert.mjs
python score-quality.py .
python diagnose-quality.py
python verify-page-claims.py
```

The first command re-executes the unchanged detector on five downloadable PCM WAVs, writes MIDI and conversion.json; the second independently reads SMF bytes, counts exact pitch/onset pairs against the included references and writes note tables and generated SVG Piano Rolls.
The third adds explicitly posthoc interval-overlap, wider-window and channel-message diagnostics; its run timestamp may differ and it does not change the frozen primary matching rule.
The final command checks the particular arithmetic used in the draft article.

The original fifty-file fresh reproduction is listed in offline-reproduction.json; the newly added portable wrappers and prose checker are not falsely included in that older fifty-file count.
The staged manifest separately hashes the actual included downloads and excludes itself.

## Rules and interpretation

Read experiment-plan.json, declared before conversion, for crop, gains, fixed Balanced mode, same-pitch nearest-unused matching in reference order within 50 ms, tail treatment and the rule against fitted shifts or octave/pitch-class credit.
Missed means reference attacks without a match; extra means output events without a match under this rule, not a diagnosis that every extra event is an acoustic hallucination.
Same-pitch overlap is exploratory, can reuse references and is not note recall; the exploratory 150 ms count is not the headline score.
Pitch Bend message count is read from actual MIDI status bytes, not inferred from a pitch list.
No overall converter accuracy percentage is claimed.

## Regenerate the controlled inputs

The downloadable generate-quality.py is the exact original Windows experiment generator with its original D:/ source paths preserved for audit.
It requires the credited GuitarSet and Vienna original files, per-string JAMS, inherited piano reference/calibration and the existing detector snapshot; source filenames, archival hashes, transformations and provenance are included.
It is not advertised as a portable self-contained raw-dataset downloader.
Use the recorded real-data source citations in ATTRIBUTION.md to obtain original datasets if reproducing input generation elsewhere; adapt source paths explicitly without changing crops, gain, reference alignment or matching rules.

## Ten format fixtures

format-fixtures.json records the existing FFmpeg encoder version, exact commands and per-file SHA256.
Offline FFmpeg decode success does not establish browser support.
The MP4, MOV and WebM images are black video wrappers around real guitar audio, not performance videos.
Five quality files and nine successful format files have actual browser MIDI downloads; the AIFF fixture failed native decoding and is retained in the table and FAQ. The Network observation is scoped from WebM file reselection through MIDI generation, before closing DevTools and saving its blob; local-network-verification.json and original screenshots document that scope. Responsive and release checks are recorded separately; this evidence does not itself certify publication.

## Frozen records and subsequent observations

The original quality-results.json offline scope and format-fixtures.json preparation-time NOT_RUN fields are retained unchanged; subsequent dated browser receipts establish what was actually observed later. The posthoc vibrato-timing-diagnostic.json compares two named exported intervals without changing primary matching or claiming the same performed attacks. Browser MIDI headers are independently parsed in the two native-browser receipts.
