Piano to MIDI: validate every note, not just a download.
With integer-aligned WAV sample bounds, the current detector returned all four notes in the piano-like fixture and all five notes in a second melody. A silent control returned zero. Keep the original WAV and compare the note sequence before arranging.
Three acceptance runs
| Input | Output events | Detected pitches |
|---|---|---|
| Four-note piano-like WAV | 4 | 60, 64, 67, 72 |
| Five-note validation WAV | 5 | 55, 59, 62, 67, 71 |
| Silent control | 0 | None |
What was actually fixed
The first local report of one event came from the fixture generator using fractional typed-array indexes for note start times. Those writes were ignored for four notes. The production detector was not changed to fit the fixture; the validation was corrected to use integer sample bounds, and the unchanged detector then returned four and five events. The original and corrected scripts are preserved.
Reproduce the validation
- Download run-piano-fixture-corrected.cjs for the four-note run.
- Download run-five-note.cjs for the five-note run.
- Read results.json and five-note-results.json.
- Open each MIDI beside its WAV and check pitch order and boundaries.
Piano to MIDI questions
Does a successful download prove every note was detected?
No. Count the events and compare the pitches with the source. The acceptance runs here make that comparison explicit.
What does the silent control show?
A valid silent WAV produced zero events and the “No clear notes found” status.
Does this validate chords?
No. These are isolated single-note melodies. Chord separation needs a separate experiment.