AUTHORED AUDIO / OFFLINE CPU / OCTOBER 15, 2026
MP3 to MIDI.
A hold. Three attacks.
Our held tone exported 2 / 2 events in WAV / MP3. Three touching, separately enveloped source events exported 4 / 4. With 662-sample gaps, they exported 5 / 6. These are actual offline CPU MIDI counts, not a rule for deciding musical intent. The authored envelopes and exact source intervals remain downloadable.
The source count
is not the output count.
| Generated control | Input | Source spans | MIDI events | Pitch 60 | Other pitches |
|---|---|---|---|---|---|
| Held span | WAV | 1 | 2 | 2 | 0 |
| Held span | MP3 | 1 | 2 | 2 | 0 |
| Repeated / touching | WAV | 3 | 4 | 4 | 0 |
| Repeated / touching | MP3 | 3 | 4 | 4 | 0 |
| Repeated / 662-sample gaps | WAV | 3 | 5 | 5 | 0 |
| Repeated / 662-sample gaps | MP3 | 3 | 6 | 6 | 0 |
| Repeated / 2646-sample gaps | WAV | 3 | 6 | 6 | 0 |
| Repeated / 2646-sample gaps | MP3 | 3 | 5 | 5 | 0 |
Held span / WAV
Declared source events: 1. Parsed MIDI: 2 events; 2 at pitch 60; 0 at other pitches.
Held span / MP3
Declared source events: 1. Parsed MIDI: 2 events; 2 at pitch 60; 0 at other pitches.
Repeated / touching / WAV
Declared source events: 3. Parsed MIDI: 4 events; 4 at pitch 60; 0 at other pitches.
Repeated / touching / MP3
Declared source events: 3. Parsed MIDI: 4 events; 4 at pitch 60; 0 at other pitches.
Repeated / 662-sample gaps / WAV
Declared source events: 3. Parsed MIDI: 5 events; 5 at pitch 60; 0 at other pitches.
Repeated / 662-sample gaps / MP3
Declared source events: 3. Parsed MIDI: 6 events; 6 at pitch 60; 0 at other pitches.
Repeated / 2646-sample gaps / WAV
Declared source events: 3. Parsed MIDI: 6 events; 6 at pitch 60; 0 at other pitches.
Repeated / 2646-sample gaps / MP3
Declared source events: 3. Parsed MIDI: 5 events; 5 at pitch 60; 0 at other pitches.
The held control contains one authored span; each repeated control contains three. WAV and MP3 are separate actual inference runs. The table does not equate a matching event count with correct boundaries, and it does not silently treat an upper pitch as another attack at the reference pitch. The reference-pitch column counts only MIDI pitch 60. The other-pitch column contains every remaining exported event.
The touching repeated control has no positive silent gap between its declared spans, yet each span has its own edge envelope and phase restart. The two positive-gap controls retain that construction and move the starts. The 662-sample case has a gap of 30.023 ms; the 2646-sample case has a gap of 120.000 ms. A count difference here belongs to this source construction and this pipeline. It cannot establish a universal separation threshold.
Read the boundaries,
not just the total.
| Source control | Declared intervals / seconds | Gap / ms | Source RMS |
|---|---|---|---|
| Held span | 0.200000 to 2.600000 | Not applicable | 0.213728 |
| Repeated / touching | 0.200000 to 1.000000 1.000000 to 1.800000 1.800000 to 2.600000 | 0.000 | 0.212529 |
| Repeated / 662-sample gaps | 0.200000 to 1.000000 1.030023 to 1.830023 1.860045 to 2.660045 | 30.023 | 0.212529 |
| Repeated / 2646-sample gaps | 0.200000 to 1.000000 1.120000 to 1.920000 2.040000 to 2.840000 | 120.000 | 0.212529 |
Held span
Declared intervals / seconds: 0.200000 to 2.600000. Gap / ms: not applicable. Source RMS: 0.213728.
Repeated / touching
Declared intervals / seconds: 0.200000 to 1.000000; 1.000000 to 1.800000; 1.800000 to 2.600000. Gap / ms: 0.000. Source RMS: 0.212529.
Repeated / 662-sample gaps
Declared intervals / seconds: 0.200000 to 1.000000; 1.030023 to 1.830023; 1.860045 to 2.660045. Gap / ms: 30.023. Source RMS: 0.212529.
Repeated / 2646-sample gaps
Declared intervals / seconds: 0.200000 to 1.000000; 1.120000 to 1.920000; 2.040000 to 2.840000. Gap / ms: 120.000. Source RMS: 0.212529.
The MIDI fields below expose each event's start and duration, including events at other pitches. They are the actual quantized seconds read by the MIDI parser, not detector frames relabelled as milliseconds. The result JSON additionally retains ticks, duration ticks, PPQ, velocity and the original frame-event fields. Rounded text is for reading; the downloadable JSON retains the numeric fields used to generate it.
- Held span / WAVpitch 60 / start 0.196875 s / duration 2.334375 s; pitch 60 / start 2.532292 s / duration 0.104167 s
- Held span / MP3pitch 60 / start 0.196875 s / duration 2.334375 s; pitch 60 / start 2.532292 s / duration 0.104167 s
- Repeated / touching / WAVpitch 60 / start 0.196875 s / duration 0.801042 s; pitch 60 / start 0.998958 s / duration 0.812500 s; pitch 60 / start 1.811458 s / duration 0.720833 s; pitch 60 / start 2.532292 s / duration 0.104167 s
- Repeated / touching / MP3pitch 60 / start 0.196875 s / duration 0.801042 s; pitch 60 / start 0.998958 s / duration 0.801042 s; pitch 60 / start 1.800000 s / duration 0.732292 s; pitch 60 / start 2.532292 s / duration 0.104167 s
- Repeated / 662-sample gaps / WAVpitch 60 / start 0.196875 s / duration 0.835417 s; pitch 60 / start 1.033333 s / duration 0.742708 s; pitch 60 / start 1.776042 s / duration 0.092708 s; pitch 60 / start 1.868750 s / duration 0.720833 s; pitch 60 / start 2.590625 s / duration 0.104167 s
- Repeated / 662-sample gaps / MP3pitch 60 / start 0.196875 s / duration 0.742708 s; pitch 60 / start 0.940625 s / duration 0.092708 s; pitch 60 / start 1.033333 s / duration 0.742708 s; pitch 60 / start 1.776042 s / duration 0.092708 s; pitch 60 / start 1.868750 s / duration 0.720833 s; pitch 60 / start 2.590625 s / duration 0.104167 s
- Repeated / 2646-sample gaps / WAVpitch 60 / start 0.196875 s / duration 0.789583 s; pitch 60 / start 0.986458 s / duration 0.139583 s; pitch 60 / start 1.126042 s / duration 0.789583 s; pitch 60 / start 1.915625 s / duration 0.129167 s; pitch 60 / start 2.044792 s / duration 0.731250 s; pitch 60 / start 2.776042 s / duration 0.092708 s
- Repeated / 2646-sample gaps / MP3pitch 60 / start 0.196875 s / duration 0.789583 s; pitch 60 / start 0.986458 s / duration 0.139583 s; pitch 60 / start 1.126042 s / duration 0.789583 s; pitch 60 / start 1.915625 s / duration 0.129167 s; pitch 60 / start 2.044792 s / duration 0.823958 s
This comparison declares source events by construction. It does not claim that a human listener would assign those same event identities to arbitrary audio. A source onset is defined by the start sample of its authored span, even though the fade begins at zero amplitude. Model detection and serialized MIDI need not reproduce that sample boundary exactly.
One model.
One extraction protocol.
Each source is a mono, 16-bit PCM WAV with 70560 samples at 22050 Hz, lasting 3.2 seconds. The first declared onset is sample 4410, or 0.2 seconds. The held span lasts three times the repeated segment length; a repeated segment is 17640 samples, or 0.8 seconds. All controls use MIDI reference pitch 60 and the generator frequency formula 440 * 2 ** ((pitch - 69) / 12).
The pre-quantization peak amplitude is set to 0.35. Every declared span uses a linear edge envelope of 220 samples and a sine phase that restarts at its first sample. The held control has one pair of edges; repeated controls have three. More fades and phase restarts make this more than a gap-only intervention. We do not normalize all controls to equal RMS or claim identical energy. The measured RMS column shows the source difference instead of hiding it.
Native FFmpeg encodes each WAV to 128 kbps MP3, then decodes both formats to mono float32 samples at the selected rate. Each input's bytes, decoded float32 bytes, decoded sample count, RMS and peak are recorded. WAV and MP3 may differ after encoding and decoding; they are not interchangeable captures. A gzip file retains each input's actual frame, onset and contour matrices. Capture hashes and model hashes are checked before extraction.
The offline backend is cpu, using Basic Pitch 1.0.1, MIDI writer 2.0.28 and v24.19.0 on win32. Both detection thresholds are 0.25; the extraction minimum is 5 frames. These are the existing converter source parameters, not settings tuned after viewing this experiment. We apply the same note-time conversion and MIDI construction: start at least zero, duration at least 0.03 seconds and velocity clamped between 0.05 and one.
Model manifest SHA-256: 1ed1aaee3409ec1dc098c8b01f430c0911f6fe9412e7af8086750f9e8f302f68. Combined weight SHA-256: b142a95737a52e1e412d5f92e73d8bb80dfe8d04941acc0702f11f4524fb377c. Converter source SHA-256: e42f9b0b60bb6fd73b2539a1ae9ca3b09f34ab874e35423162b384df68c19660. The retained model outputs are independent across inputs and fixed within each export. We parse every saved .mid back and compare its fields, counts and hashes; no output is replaced with an expected result.
Belonging is still
a separate question.
MP3MIDITool's repair guidance makes belonging to a held note the condition for fragment merging. This experiment follows that observed distinction with generated audio and actual inference. The retained-MIDI joining test measures a disclosed edit rule; its repeated-note counterexample establishes that close same-pitch MIDI events can be intentionally separate. Today's audio controls do not overwrite either result.
Nothing here validates that competitor's converter, natural vocals, a musical instrument, a physical phone or a DAW. The live browser converter was not used for these CPU runs and remains unchanged. We did not listen to or score musical performances. The source-event labels come from our generator, not an automatic intent detector. No count is an accuracy percentage, and none of the selected gaps is offered as a safe musical boundary.
A lower count could merge separate authored attacks; a larger count could include short fragments or other pitches. The exact files and note fields let readers investigate those alternatives. They do not license a recommendation to merge every nearby event, or to change settings for an untested recording.
Keep the inputs.
Keep the inference.
Full measured results retain the source schedule, all parsed notes, the actual environment and SHA-256 fields. Reproduction code runs inside this project's locked dependency environment as node scripts/measure-held-rearticulated.cjs. With retained captures, --replay checks input and model hashes before re-extraction. This is not a dependency-free standalone program.
- Held span / WAV inputInput SHA-256:
8780cec3dd86f263829c64ef4360cc70c8133db21b1ee09298efc7516bde82de. Captured inference SHA-256:7402d7905c52780f7838efd1814986016e497721480aa53dc517a3bf5f1435ac. Actual MIDI SHA-256:517ba4fc4edf6258dc8a2359f9a37017df78046f66419911de134899baea2edb. - Held span / MP3 inputInput SHA-256:
de975586ddefd73e0c23fef8e8a217deefa212d87a8832a9380e52c232ad59d5. Captured inference SHA-256:5995abca2f4ff5d64774c40ff8ae5ce1af6a5de575c6e9e059b47d91974c6fb8. Actual MIDI SHA-256:9f320d15b46ba27b7359b640a63fa4db56ca714a73fb0bf6f239b3b5813fb3bb. - Repeated / touching / WAV inputInput SHA-256:
56a7d4dc215780e1f885041e9787b1972a710eafd1b24419c9645e39d955a13c. Captured inference SHA-256:aac1d1667a6f7d221a9f1ebfa045b1c05411acb118f273c7ace560124d4082da. Actual MIDI SHA-256:b6696518c69192d79572a366ceb54bef9bd66c819faa7ac0c332ae67f0ac48c6. - Repeated / touching / MP3 inputInput SHA-256:
8a69d6b23a6ff7693686b2f8f0f23f38dbebfeea115a2fac2a20d7fe24b302e8. Captured inference SHA-256:8c9955b3c9a2d50767c3a1c51c70650a3514b331f78977034cfad4be4bca5b5c. Actual MIDI SHA-256:68cd20497cc7710fc988e4e914d6b82cce93cb5f68d0bc5a3a52fd92579221c9. - Repeated / 662-sample gaps / WAV inputInput SHA-256:
2529942f2e82c376a718a2d8d7871a0d7dd00a81e9bdbb9cbcd459fb3c036034. Captured inference SHA-256:790ce6e7a18c8fd782da5784c2d852580ca0ae7dadf3d3996b01b034770300b4. Actual MIDI SHA-256:8a57ffbd686b974e08dfd67e883653595a97579efb29ee0a0b8fc8b266e48645. - Repeated / 662-sample gaps / MP3 inputInput SHA-256:
9239a51438bd681ae97dd427ca4aa02e4ba1c1f967daaa22fe300b9c9cdfa5ce. Captured inference SHA-256:ecd080e1888bc3b17415d3dc2f7da66ec06f24823abc6a628a4df25c19dc547f. Actual MIDI SHA-256:269081c8d9064c173983702d1cfe7ca8e0d7c48d1d6c9e92da82d562c9560d83. - Repeated / 2646-sample gaps / WAV inputInput SHA-256:
1d1d578626caf370356962e1a5dca0393e62610e16b6c91626173fca31cea30b. Captured inference SHA-256:a6857492f688e2a00b62542c40cbfef701af507818864ecaa8e915c815c2d771. Actual MIDI SHA-256:9ba28a77ad2cb1b12b7eaaf7067745869eb39cbbb26c8ee01c8e43edf307d848. - Repeated / 2646-sample gaps / MP3 inputInput SHA-256:
96c175ab8ebd8177aaf1cbd8892f8ec1e75bd2ec5a01fc939846f9d9212a25c0. Captured inference SHA-256:b9660f37618692ad35853991b86634f5360948bb15f0a0184f0d11eb0d04d103. Actual MIDI SHA-256:99d607ae368816a021174de72ff6449aed51c2651dd4793969662deea34b852b.
All source files are project-authored synthetic controls. No visitor recording is accepted or sent to any outside service by this experiment. Downloading an evidence file is distinct from uploading your own audio; the public tool still processes visitor media in the visitor's browser.