SOURCE BOUNDARIES / OFFLINE CPU / OCTOBER 17, 2026
MP3 to MIDI.
A reset. Or the same samples.
At 440 Hz, resetting phase after an exact 352-cycle slot gave byte-identical WAV and MP3 inputs. Those identical inputs reuse one capture per format. With one extra sample per slot, phase reset changed 35281 PCM samples and the actual event counts were 1 → 3 / 1 → 3 for WAV / MP3, continuous → reset. These source-defined boundaries are not a universal musical rule.
A phase setting
is not an audio identity.
| Construction | Format | Events | Input identical | MIDI identical | Note fields identical |
|---|---|---|---|---|---|
| Legacy C4 / retained reference | WAV | 2 → 4 | no | no | no |
| Legacy C4 / retained reference | MP3 | 2 → 4 | no | no | no |
| 440 Hz / exact-cycle slots | WAV | 1 → 1 | yes | yes | yes |
| 440 Hz / exact-cycle slots | MP3 | 1 → 1 | yes | yes | yes |
| 440 Hz / one extra sample per slot | WAV | 1 → 3 | no | no | no |
| 440 Hz / one extra sample per slot | MP3 | 1 → 3 | no | no | no |
Legacy C4 / retained reference / WAV
Events, continuous → reset: 2 → 4. Input bytes identical: no. MIDI bytes identical: no. Complete parsed note fields identical: no.
Legacy C4 / retained reference / MP3
Events, continuous → reset: 2 → 4. Input bytes identical: no. MIDI bytes identical: no. Complete parsed note fields identical: no.
440 Hz / exact-cycle slots / WAV
Events, continuous → reset: 1 → 1. Input bytes identical: yes. MIDI bytes identical: yes. Complete parsed note fields identical: yes.
440 Hz / exact-cycle slots / MP3
Events, continuous → reset: 1 → 1. Input bytes identical: yes. MIDI bytes identical: yes. Complete parsed note fields identical: yes.
440 Hz / one extra sample per slot / WAV
Events, continuous → reset: 1 → 3. Input bytes identical: no. MIDI bytes identical: no. Complete parsed note fields identical: no.
440 Hz / one extra sample per slot / MP3
Events, continuous → reset: 1 → 3. Input bytes identical: no. MIDI bytes identical: no. Complete parsed note fields identical: no.
The preceding phase and envelope matrix separated phase restarts from internal fades at one selected C4 frequency and slot length. It did not establish that every phase reset must change a waveform or split a held sound. Today's exact-cycle pair directly checks that limitation with actual source bytes. The off-cycle pair is a separately authored matched comparison, not an assumed model response.
For the new exact-cycle construction, WAV event counts are 1 → 1; MP3 counts are 1 → 1. The reset-side captures are explicitly reused because both the input and decoded-sample hashes match the continuous side. Repeating inference on an identical input would not create an independent source control. We do not count these reuse rows as new model runs.
The legacy C4 rows retain the previous counts, 2 → 4 / 2 → 4 for WAV / MP3, after exact input and decoded-hash verification. They are context, not new inference. Comparing their counts directly with the 440 Hz rows changes pitch and phase arithmetic, so it is not a single-factor test. A numerical difference across those constructions cannot be assigned to phase alone.
Declare the clock.
Then compare every sample.
The new source frequency is selected as exactly 440 Hz under this generator's rational sample-clock definition. The sample rate is 22050 Hz. An exact-cycle slot has 17640 samples, so its cycle fraction is 440 × 17640 / 22050 = 352, remainder 0. The off-cycle slot has 17641 samples: 440 × 17641 / 22050 = 352 + 440/22050 cycles. These are chosen source parameters and integer arithmetic, not values inferred from music.
The oscillator evaluates sin(2π × ((n × 440) mod 22050) / 22050). Continuous phase uses the sample index relative to the first active sample. Reset phase uses the index relative to the current slot start. For an exact-cycle slot, the frequency-weighted offset between those indices is a multiple of the denominator in this modular expression. That explains the intended equality; it does not replace checking the generated PCM. The independent checker regenerates every included sample and the WAV headers before asserting byte identity.
With one extra sample per slot, the residue shifts by 440 at the first internal boundary and twice that at the next. The actual off-cycle PCM comparison finds 35281 unequal samples with maximum absolute integer difference 2869. The corresponding exact-cycle comparison finds 0 unequal samples and maximum difference 0. Those are measured comparisons of the quantized arrays. They do not describe a hearing threshold, smoothness judgment or safe edit point in a recording.
All new clips have 70560 samples, with the first active sample at 4410. There are 3 touching construction slots, no added silent gap and one global edge envelope. The amplitude multiplier is 0.35; the fade length is 220 samples. Within each phase pair, all of those settings and the slot length are fixed. Across the exact and off-cycle pairs, the final active endpoint and edge-envelope placement shift with the selected slot length. That cross-pair contrast is descriptive, not a perfectly isolated one-sample intervention on an otherwise byte-identical whole clip.
Changed audio.
Inspect the actual notes.
For the off-cycle WAV pair, the descriptive count difference is 3 - 1 = 2; for MP3 it is 3 - 1 = 2. The inputs to these formulas are the reset and continuous counts parsed from their respective saved exports. Full parsed pitch, ticks, duration ticks, time and velocity fields are identical in WAV: no; in MP3: no. MIDI byte hashes are compared separately above.
A total count cannot tell us whether the complete event boundaries match. Conversely, even identical exported MIDI does not imply identical source audio; the actual source comparison is a separate check. These fixtures let a reader distinguish the source construction, encoded-file identity, decoded-sample identity, captured model output and final note file instead of letting one count stand in for all five.
We do not turn the exact-cycle equality into a general musical rule. The identity is tied to this rational generator, selected frequency, sample clock, quantization and global envelope. A real instrument, different frequency, resampling path or different arithmetic may not share it. The legacy C4 reference deliberately retains its original floating-point sine expression, not the new modular expression. Changing that implementation and calling it the same anchor would erase the provenance boundary we are testing.
Construction slots are bookkeeping boundaries, not a claimed number of audible attacks. This experiment does not listen, identify a performer's intended notes, score transcription accuracy or recommend a fragment-joining tolerance. It is offline Node CPU inference, not a live conversion in this page, a browser-backend equivalence test, a physical-phone trial or a DAW test. The converter and prior experiment bodies remain unchanged.
A reused row
is not a new inference.
The record contains 12 input rows: 6 fresh offline input inferences, 4 prior captures retained after exact checks and 2 same-input capture reuses within this run. WAV and MP3 are paired encodings, not independent statistical replicates. Native FFmpeg encoded MP3 at 128 kbps and decoded each input to mono float32 at the declared sample rate.
Each reuse requires the actual input hash, decoded float32 hash and model hashes to match. The original capture timestamp stays intact. The legacy rows point back to the Oct16 matrix, whose continuous/global cell itself retains the Oct15 held control; they are not relabelled as fresh Oct17 captures. The saved reproduction code re-extracts the matrices, writes the MIDI and parses the export back; a separate check requires the exact MIDI byte hash and all parsed fields to agree.
Basic Pitch 1.0.1, TensorFlow.js 3.21.0, MIDI writer 2.0.28, v24.19.0 on win32, CPU backend. Onset and frame thresholds remain 0.25 and 0.25; minimum extraction length remains 5 frames. Model manifest SHA-256: 1ed1aaee3409ec1dc098c8b01f430c0911f6fe9412e7af8086750f9e8f302f68. Combined weights: b142a95737a52e1e412d5f92e73d8bb80dfe8d04941acc0702f11f4524fb377c. Unchanged converter source: e42f9b0b60bb6fd73b2539a1ae9ca3b09f34ab874e35423162b384df68c19660.
MP3MIDITool's repair guidance distinguishes fragments belonging to a held note from the editable note draft. That observed distinction motivated the experimental sequence. This is not a benchmark of that converter. Only the opened comparison pages were reviewed; this article makes no claim that every page elsewhere lacks an equivalent experiment.
- legacy-c4-continuous / WAVPrior capture retained. Capture time: 2026-10-14T19:05:22.338Z. Reused from 2026-10-16 / continuous-global / wav.
- legacy-c4-continuous / MP3Prior capture retained. Capture time: 2026-10-14T19:05:32.757Z. Reused from 2026-10-16 / continuous-global / mp3.
- legacy-c4-reset / WAVPrior capture retained. Capture time: 2026-10-15T19:05:10.867Z. Reused from 2026-10-16 / reset-global / wav.
- legacy-c4-reset / MP3Prior capture retained. Capture time: 2026-10-15T19:05:22.022Z. Reused from 2026-10-16 / reset-global / mp3.
- exact-440-continuous / WAVNew offline CPU inference. Capture time: 2026-10-16T19:09:02.120Z.
- exact-440-continuous / MP3New offline CPU inference. Capture time: 2026-10-16T19:09:12.599Z.
- exact-440-reset / WAVSame-input capture reused today. Capture time: 2026-10-16T19:09:02.120Z. Reused from 2026-10-17 / exact-440-continuous / wav.
- exact-440-reset / MP3Same-input capture reused today. Capture time: 2026-10-16T19:09:12.599Z. Reused from 2026-10-17 / exact-440-continuous / mp3.
- off-440-continuous / WAVNew offline CPU inference. Capture time: 2026-10-16T19:09:26.370Z.
- off-440-continuous / MP3New offline CPU inference. Capture time: 2026-10-16T19:09:37.103Z.
- off-440-reset / WAVNew offline CPU inference. Capture time: 2026-10-16T19:09:48.603Z.
- off-440-reset / MP3New offline CPU inference. Capture time: 2026-10-16T19:09:58.775Z.
The fields behind
the total.
These lines come from re-parsing the actual Standard MIDI files. Display seconds are rounded to six decimal places; the result JSON retains full numeric time, ticks, duration ticks, PPQ, velocity and pitch. A matching displayed time is not used as an exact-equality test: the complete numeric fields and file hashes are compared instead.
- legacy-c4-continuous / WAVpitch 60 / start 0.196875 s / duration 2.334375 s; pitch 60 / start 2.532292 s / duration 0.104167 s
- legacy-c4-continuous / MP3pitch 60 / start 0.196875 s / duration 2.334375 s; pitch 60 / start 2.532292 s / duration 0.104167 s
- legacy-c4-reset / WAVpitch 60 / start 0.196875 s / duration 0.812500 s; pitch 60 / start 1.010417 s / duration 0.812500 s; pitch 60 / start 1.822917 s / duration 0.709375 s; pitch 60 / start 2.532292 s / duration 0.104167 s
- legacy-c4-reset / MP3pitch 60 / start 0.196875 s / duration 0.801042 s; pitch 60 / start 0.998958 s / duration 0.823958 s; pitch 60 / start 1.822917 s / duration 0.709375 s; pitch 60 / start 2.532292 s / duration 0.104167 s
- exact-440-continuous / WAVpitch 69 / start 0.162500 s / duration 2.451042 s
- exact-440-continuous / MP3pitch 69 / start 0.162500 s / duration 2.451042 s
- exact-440-reset / WAVpitch 69 / start 0.162500 s / duration 2.451042 s
- exact-440-reset / MP3pitch 69 / start 0.162500 s / duration 2.451042 s
- off-440-continuous / WAVpitch 69 / start 0.162500 s / duration 2.451042 s
- off-440-continuous / MP3pitch 69 / start 0.162500 s / duration 2.451042 s
- off-440-reset / WAVpitch 69 / start 0.162500 s / duration 0.812500 s; pitch 69 / start 0.986458 s / duration 0.812500 s; pitch 69 / start 1.800000 s / duration 0.826042 s
- off-440-reset / MP3pitch 69 / start 0.162500 s / duration 0.812500 s; pitch 69 / start 0.986458 s / duration 0.812500 s; pitch 69 / start 1.800000 s / duration 0.826042 s
Reproduce the boundary.
Keep the provenance.
Download full results for every count, changed-sample comparison, reuse link and hash. Download the reproduction code, run in this project's locked environment as node scripts/measure-phase-boundaries.cjs. Prior Oct16 evidence is needed to validate the retained references. With existing captures, --replay refuses missing inference rather than substituting a result. Source audio, raw model captures and MIDI exports are linked individually below.
- legacy-c4-continuous / WAV inputPrior capture retained. Input SHA-256:
8780cec3dd86f263829c64ef4360cc70c8133db21b1ee09298efc7516bde82de. Captured model output:7402d7905c52780f7838efd1814986016e497721480aa53dc517a3bf5f1435ac. Actual MIDI:517ba4fc4edf6258dc8a2359f9a37017df78046f66419911de134899baea2edb. - legacy-c4-continuous / MP3 inputPrior capture retained. Input SHA-256:
de975586ddefd73e0c23fef8e8a217deefa212d87a8832a9380e52c232ad59d5. Captured model output:5995abca2f4ff5d64774c40ff8ae5ce1af6a5de575c6e9e059b47d91974c6fb8. Actual MIDI:9f320d15b46ba27b7359b640a63fa4db56ca714a73fb0bf6f239b3b5813fb3bb. - legacy-c4-reset / WAV inputPrior capture retained. Input SHA-256:
ea7b0345d322b26abe3b173f8d2352a201bc352fcaa5f25d8cad5a99eb3544da. Captured model output:5d59269775fe2520664cb47b5bf4efff8d061adc5aae857e205d4236b35a6739. Actual MIDI:9b57bc7eb70d727434d86728f62efd8e50ec16ff720ae97109bd6368c3f1caf9. - legacy-c4-reset / MP3 inputPrior capture retained. Input SHA-256:
626abf34281d873fa30543c6c2c69927d6d7864014813c0ef5160ce52401171a. Captured model output:cc43a4191f9b9ccbe897dfb837147017fa8a8ad22e2ede02fb6a180cc6f4b9b3. Actual MIDI:e71d8c9226859e365ae55c4e15d3e622c524774a279f31e09c1d37cc673e3acd. - exact-440-continuous / WAV inputNew offline CPU inference. Input SHA-256:
f58f71bc3e9b757b75cb9f553fba874a3b82f4d9be6239cca91d35a7359e9ee0. Captured model output:3758ab45e3c5dc2f8ebed095fd81f07fc35cb5157ac28711f88cef96f18546dc. Actual MIDI:ea6ff796bc7200786da544dabad30b36d1b37b88a83312b5fd5edb079d18b836. - exact-440-continuous / MP3 inputNew offline CPU inference. Input SHA-256:
7da7c8d3488bc2a4e5e5ac66c33ff160be19df26837b2ed0a4743cfaeb646ef7. Captured model output:1bc1ee4519a484a0c692ec5ddffa17c21503a8d3f868921c9925e271c09a2280. Actual MIDI:ea6ff796bc7200786da544dabad30b36d1b37b88a83312b5fd5edb079d18b836. - exact-440-reset / WAV inputSame-input capture reused today. Input SHA-256:
f58f71bc3e9b757b75cb9f553fba874a3b82f4d9be6239cca91d35a7359e9ee0. Captured model output:3758ab45e3c5dc2f8ebed095fd81f07fc35cb5157ac28711f88cef96f18546dc. Actual MIDI:ea6ff796bc7200786da544dabad30b36d1b37b88a83312b5fd5edb079d18b836. - exact-440-reset / MP3 inputSame-input capture reused today. Input SHA-256:
7da7c8d3488bc2a4e5e5ac66c33ff160be19df26837b2ed0a4743cfaeb646ef7. Captured model output:1bc1ee4519a484a0c692ec5ddffa17c21503a8d3f868921c9925e271c09a2280. Actual MIDI:ea6ff796bc7200786da544dabad30b36d1b37b88a83312b5fd5edb079d18b836. - off-440-continuous / WAV inputNew offline CPU inference. Input SHA-256:
6f50b2385ba0fc0bbbc80eb0db68534b35b15e8a587a79d9c125b82791392984. Captured model output:f0d817257d4a696d51bcf8ac1ae09f8518ec79130f0572d15a5a909f980d914a. Actual MIDI:ea6ff796bc7200786da544dabad30b36d1b37b88a83312b5fd5edb079d18b836. - off-440-continuous / MP3 inputNew offline CPU inference. Input SHA-256:
715e11704a78427cb84c0bf8b19997ecf3ac2cc53d4e7b2e1c6a6c1b8ef6c33e. Captured model output:c96e3cb192d8d5bbdf1b1207dc34efe2325efcbe5ff6a1fd5f55164978ecd70f. Actual MIDI:ea6ff796bc7200786da544dabad30b36d1b37b88a83312b5fd5edb079d18b836. - off-440-reset / WAV inputNew offline CPU inference. Input SHA-256:
1da80be5b2ec61a65415a39c34392bc058784d76d09e1ec55938ccccd8545286. Captured model output:3188fdc07f402b55f78636b33570c304b510e576c591ffb137a9d530a7d0798d. Actual MIDI:c3f549d17c4bdce2f3920f2158a6f7ab38ba41554844b378c42ba05690f94a0c. - off-440-reset / MP3 inputNew offline CPU inference. Input SHA-256:
702c1176dc3ea7bc6f3ce298052e456576c937e249fc0671b08ff43807eef4ec. Captured model output:fae79409aecec895d2d3814f58c1cd23080dc8eac3c8b397e5b1769cdd6b8e3b. Actual MIDI:e825e879d3434cfd8ddc7720973b9d45ec47d048c896c77be79ce7146566eadf.
Every source is project-authored. No visitor recording is used or uploaded. Read the phase and edge-envelope matrix for the preceding conditional comparisons, or the paired fragment-joining experiment and repeated-note counterexample for the separate MIDI-edit rule and its limitations.