SERIAL INPUT CONTROLS / OFFLINE CPU / OCTOBER 20, 2026
MP3 to MIDI.
One encoding. Then another.
Across 4 new serial MP3 inputs, 4 exports kept their parent's event count; 1 changed pitch-and-timing geometry, and 3 changed complete note fields. All used the selected 64 kbps setting. These offline controls do not establish a safe generation limit or musical accuracy.
Encode the parent.
Not the original again.
| Input | Immediate parent | File bytes | Decoded samples | MIDI events | Capture provenance |
|---|---|---|---|---|---|
| first-only / WAV | Source | 141164 | 70560 | 2 | Retained prior capture |
| first-only / G1 | first-only-wav | 26374 | 70560 | 2 | Retained prior capture |
| first-only / G2 | first-only-g1 | 26374 | 70560 | 2 | New Oct20 serial-input capture |
| first-only / G3 | first-only-g2 | 26374 | 70560 | 2 | New Oct20 serial-input capture |
| second-only / WAV | Source | 141164 | 70560 | 2 | Retained prior capture |
| second-only / G1 | second-only-wav | 26374 | 70560 | 2 | Retained prior capture |
| second-only / G2 | second-only-g1 | 26374 | 70560 | 2 | New Oct20 serial-input capture |
| second-only / G3 | second-only-g2 | 26374 | 70560 | 2 | New Oct20 serial-input capture |
first-only / WAV
Parent: Source WAV. Actual file: 141164 bytes. Decoded samples: 70560. MIDI events: 2. Retained prior capture.
first-only / G1
Parent: first-only-wav. Actual file: 26374 bytes. Decoded samples: 70560. MIDI events: 2. Retained prior capture.
first-only / G2
Parent: first-only-g1. Actual file: 26374 bytes. Decoded samples: 70560. MIDI events: 2. New Oct20 serial-input capture.
first-only / G3
Parent: first-only-g2. Actual file: 26374 bytes. Decoded samples: 70560. MIDI events: 2. New Oct20 serial-input capture.
second-only / WAV
Parent: Source WAV. Actual file: 141164 bytes. Decoded samples: 70560. MIDI events: 2. Retained prior capture.
second-only / G1
Parent: second-only-wav. Actual file: 26374 bytes. Decoded samples: 70560. MIDI events: 2. Retained prior capture.
second-only / G2
Parent: second-only-g1. Actual file: 26374 bytes. Decoded samples: 70560. MIDI events: 2. New Oct20 serial-input capture.
second-only / G3
Parent: second-only-g2. Actual file: 26374 bytes. Decoded samples: 70560. MIDI events: 2. New Oct20 serial-input capture.
The starting files are the exact first-only and second-only controls in the fixed-source bitrate experiment. In each source chain, the saved WAV is generation zero and its existing 64 kbps MP3 is generation one. Generation two is encoded from that actual MP3, and generation three is encoded from the actual generation-two file. These are serial decode-and-encode steps, not three independent encodings of a WAV.
Every child record names its immediate parent, parent filename and complete parent SHA-256. The first-generation MP3 and WAV match the prior input, decoded sample and model hashes before their captures are retained. Their original raw capture-clock readings remain unchanged. The record contains 4 new serial-input captures and 4 retained captures; actual model executions in this run are recorded separately as 4.
The total can hold.
The fields can move.
| Child versus parent | Count difference | Decoded samples identical | Geometry identical | All note fields identical | MIDI bytes identical |
|---|---|---|---|---|---|
| first-only-g2 vs first-only-g1 | 2 - 2 = 0 | no | yes | no | no |
| first-only-g3 vs first-only-g2 | 2 - 2 = 0 | no | no | no | no |
| second-only-g2 vs second-only-g1 | 2 - 2 = 0 | no | yes | no | no |
| second-only-g3 vs second-only-g2 | 2 - 2 = 0 | no | yes | yes | yes |
first-only-g2 versus first-only-g1
Event-count difference: 2 - 2 = 0. Decoded samples identical: no. Geometry identical: yes. All note fields identical: no. MIDI bytes identical: no.
first-only-g3 versus first-only-g2
Event-count difference: 2 - 2 = 0. Decoded samples identical: no. Geometry identical: no. All note fields identical: no. MIDI bytes identical: no.
second-only-g2 versus second-only-g1
Event-count difference: 2 - 2 = 0. Decoded samples identical: no. Geometry identical: yes. All note fields identical: no. MIDI bytes identical: no.
second-only-g3 versus second-only-g2
Event-count difference: 2 - 2 = 0. Decoded samples identical: no. Geometry identical: yes. All note fields identical: yes. MIDI bytes identical: yes.
The count-difference formula is candidateCount - referenceCount, using the named child MIDI and parent MIDI. It does not subtract an assumed number of intended notes. The tally 4 of 4 counts rows with a zero difference. It is not the proportion of music transcribed correctly, and the source constructions are not statistical replicates of a performance.
Each equality asks a different question. The input-file hash compares encoded bytes; the decoded float32 hash compares actual model-input samples. Geometry compares ordered parsed pitch and timing fields. The complete note-field check adds velocity, while the MIDI hash checks the final saved bytes. A matching event total cannot replace any of these tests. Equality is evaluated at full stored precision, not from rounded labels or visual similarity.
Of these 4 new parent comparisons, 1 change geometry and 3 change at least one complete note field. The rows identify which source and generation produced each observation. They do not imply that all changes are errors, that a later generation is worse, or that an unchanged export retained every feature of its input waveform.
- first-only-g2 versus first-only-g1Parsed event 1: pitch 69 to 69; start ticks 156 to 156; duration ticks 780 to 780; velocity 0.614173 to 0.614173 | Parsed event 2: pitch 69 to 69; start ticks 947 to 947; duration ticks 1573 to 1573; velocity 0.614173 to 0.598425
- first-only-g3 versus first-only-g2Parsed event 1: pitch 69 to 69; start ticks 156 to 156; duration ticks 780 to 791; velocity 0.614173 to 0.606299 | Parsed event 2: pitch 69 to 69; start ticks 947 to 959; duration ticks 1573 to 1562; velocity 0.598425 to 0.590551
- second-only-g2 versus second-only-g1Parsed event 1: pitch 69 to 69; start ticks 156 to 156; duration ticks 1560 to 1560; velocity 0.614173 to 0.606299 | Parsed event 2: pitch 69 to 69; start ticks 1728 to 1728; duration ticks 793 to 793; velocity 0.598425 to 0.590551
- second-only-g3 versus second-only-g2Parsed event 1: pitch 69 to 69; start ticks 156 to 156; duration ticks 1560 to 1560; velocity 0.606299 to 0.606299 | Parsed event 2: pitch 69 to 69; start ticks 1728 to 1728; duration ticks 793 to 793; velocity 0.590551 to 0.590551
The numbered events above are positions in the parsed export, not claims about musical intention. Values are shown to six decimal places for legibility. The saved JSON retains complete numeric precision, tick duration, seconds and PPQ; it is the source for reproducing the equality checks.
Same selected rate.
Different sample identity.
All new encodes use the installed native FFmpeg and libmp3lame, with -b:a 64k, -ar 22050 and -ac 1. These are selected experiment parameters, not an optimal-setting recommendation. Every saved input is inspected again: the raw stream line, sample rate, channel description, reported stream bitrate, actual file length, decoded sample count, RMS, peak and sample hash are retained.
The mono/22050 Hz stream-mismatch list has 0 entries. The check treats FFmpeg's mono and 1 channels descriptions as one channel while preserving the original words. Equal declared settings alone are insufficient to establish identical streams or decoded data. The independent audit re-encodes each immediate parent with the saved options and requires the actual child-file hash to match.
File length is not file identity. In this record, every saved MP3 has 26374 bytes, but the complete input and decoded hashes are still checked separately for every parent-child pair. A repeated byte count cannot show that the compressed audio, decoded samples, captured model output or saved note velocities stayed equal.
The WAV controls are not normalized, faded again or regenerated with different phase boundaries. Their source identities are inherited unchanged. The serial encodings do change actual samples, so holding the original source and the encoder options fixed does not make every generation the same input. This experiment records that difference rather than treating the shared filename extension as a control.
Keep both comparisons.
Parent and source WAV.
A parent comparison isolates the next serial step. A WAV-reference comparison asks whether a descendant export still matches the source WAV's export. They need not give the same answer: a child can match an already-changed parent without matching the WAV reference. Both comparison families use actual exports; neither names the WAV export as a ground-truth musical score.
- first-only-g1 versus first-only-wavCount difference 2 - 2 = 0. Geometry identical: yes. All note fields identical: yes. MIDI bytes identical: yes.
- first-only-g2 versus first-only-wavCount difference 2 - 2 = 0. Geometry identical: yes. All note fields identical: no. MIDI bytes identical: no.
- first-only-g3 versus first-only-wavCount difference 2 - 2 = 0. Geometry identical: no. All note fields identical: no. MIDI bytes identical: no.
- second-only-g1 versus second-only-wavCount difference 2 - 2 = 0. Geometry identical: yes. All note fields identical: no. MIDI bytes identical: no.
- second-only-g2 versus second-only-wavCount difference 2 - 2 = 0. Geometry identical: yes. All note fields identical: no. MIDI bytes identical: no.
- second-only-g3 versus second-only-wavCount difference 2 - 2 = 0. Geometry identical: yes. All note fields identical: no. MIDI bytes identical: no.
Both full comparison arrays name candidate and reference audio files, MIDI files and event totals. The source case remains fixed within each comparison. Mixing the first-only chain with the second-only chain would introduce a different authored source construction; the audit forbids that comparison. These two source cases are distinct controls, not a larger population created by counting every generation again.
A measured chain.
Not a stopping rule.
This is not a safe generation limit. The experiment stops at the selected third generation because that is the declared protocol, not because the data establishes a universal boundary. A complete note-field match in one step does not establish a plateau, harmless compression or unchanged model predictions. A differing export is also not a listening-quality judgment or an accuracy score.
The sources are authored sine-wave controls, not voices, songs or recordings of instruments. No performer supplied an intended score. We did not run a physical phone, the public browser converter, a DAW import or a listening trial. The unchanged offline CPU model and the stated extraction settings define this particular measurement path; other devices, source audio or extraction settings are not covered.
MP3MIDITool's input and repair guide distinguishes editable notes from an original waveform. That observed workflow is the reason to inspect actual output fields here. This is a project-authored serial-encoding experiment, not a test of that converter. The fixed comparison pages were read for structure and scope, not treated as proof of current rankings or a web-wide absence of other experiments.
Old anchors labelled.
New inference recorded.
Basic Pitch 1.0.1; TensorFlow.js 3.21.0; MIDI writer 2.0.28; v24.19.0 on win32; offline CPU. Native encoder: ffmpeg version 6.0-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers. Onset and frame thresholds stay 0.25 and 0.25, with a 5-frame extraction minimum. The converter program and earlier article bodies are unchanged.
Each new capture includes its input hash, decoded float32 hash and actual frame, onset and contour matrices. The audit re-extracts those captures with the unchanged note-writing settings, re-parses every saved Standard MIDI and requires exact field and byte-hash equality. A retained capture must match the original input, decode and model identities. Re-extracting a capture is not a fresh model execution.
The JSON field capturedAtUtc remains a raw host-clock reading, not certified wall-clock UTC. The execution environment previously disagreed with the HTTP and deployment-service clocks; no timestamp offset is applied to old or new evidence. The service deployment record, converted to Asia/Shanghai, determines actual publication time. Hashes identify retained bytes; clock differences are not used to claim experiment speed.
Model manifest SHA-256: 1ed1aaee3409ec1dc098c8b01f430c0911f6fe9412e7af8086750f9e8f302f68. Combined model weights: b142a95737a52e1e412d5f92e73d8bb80dfe8d04941acc0702f11f4524fb377c. Unchanged converter source: e42f9b0b60bb6fd73b2539a1ae9ca3b09f34ab874e35423162b384df68c19660. Only project-authored controls are used. No visitor media is uploaded to an external service.
Download each generation.
Follow each parent.
Full results and provenance contain the parent chain, raw stream descriptions, encoder options, decoded sample identities, captured-output hashes and all parsed MIDI fields. Reproduction code runs in the project's pinned environment with the Oct19 source evidence present, as node scripts/measure-mp3-generations.cjs. Replay mode refuses missing captures and records actual inference executions separately.
- first-only / WAV inputRetained prior capture. Raw capture-clock reading: 2026-10-18T03:59:52.990Z. Parent: none; authored WAV. Input SHA-256:
5717d14a433763ad08676a3194a5f5cce6645149cf5cccb106e0d039f475f7c2. Decoded sample SHA-256:875936cfb58ca122635516035ade647533c9b7ae28fe0d9447a2579f45d45c17. Captured model output:0c30695f73ce52870f30cd0754294ca5bf2fe1c1c733125fa3e86de55b8f52bf. Actual MIDI:9b06b137eac75cea4c89496acf1f66874d61bc446a2d993e239161af0179600d. - first-only / G1 inputRetained prior capture. Raw capture-clock reading: 2026-10-18T19:02:17.165Z. Parent: first-only-wav. Input SHA-256:
e9a857dc9e39a8e8bbd4e8507b8ce0bd878c47b370ff60cbfc3b0295932286bc. Decoded sample SHA-256:2c5d5ed437e4c85c020f8139ba639a3838305dc84b99f59d67d6bd24c8c6a154. Captured model output:62ead923f6fee772076754401803cd0585edcbe2f9e26ad0b92f0a6c801226fc. Actual MIDI:9b06b137eac75cea4c89496acf1f66874d61bc446a2d993e239161af0179600d. - first-only / G2 inputNew Oct20 serial-input capture. Raw capture-clock reading: 2026-10-20T01:54:22.747Z. Parent: first-only-g1. Input SHA-256:
24a4c8c7aec83d34e9211321fd7144815f38c7459592a18f5d6681da9d23d431. Decoded sample SHA-256:1ee928f6f56f51f23114038e0bf66569c0e283f00ddee4260050543a2bc9e06f. Captured model output:dfcbb9c1da79031f443d420528a876343e5c36c047b1e2d30be35069b5d5954f. Actual MIDI:2c64416239e0d59f4a804e36072b49536153065719756867cfbfc0a8855b932a. - first-only / G3 inputNew Oct20 serial-input capture. Raw capture-clock reading: 2026-10-20T01:54:47.881Z. Parent: first-only-g2. Input SHA-256:
6c08000d626a1757130e053a0c18c7bab84a2eb08d42b2a6d964ace7f2fbf6d0. Decoded sample SHA-256:bf2694bf8fc8f928c51d2bd446f4d83e0b8e48b1bd329e6f82487a8ba0e4349d. Captured model output:3f605b523ff1abc296e81972186d8512983ae1b1b81b204abef50898904ca6fb. Actual MIDI:649ad44cc8934b9cc42844fe89bd5ca2e9b013dcc7f75ff7d54db40e847971eb. - second-only / WAV inputRetained prior capture. Raw capture-clock reading: 2026-10-18T04:00:55.335Z. Parent: none; authored WAV. Input SHA-256:
85d935ba4b881059cf2fb3254f2c7fc08818ebd65126d9aca12933411be51ece. Decoded sample SHA-256:099f84ce5952a53447ae5b62332a663d8fc17d10b8f9027e88600c0403d0f915. Captured model output:c1334d608de171abadfd9499a6c71e0ca7fbea595324c199b85f1b408495f0fd. Actual MIDI:d579396eb3a4f000c3cd18587271d5a0dbba44e1f6699f2d62e9697adc1270ad. - second-only / G1 inputRetained prior capture. Raw capture-clock reading: 2026-10-18T19:03:32.511Z. Parent: second-only-wav. Input SHA-256:
5c6d9d94db38c94b0e8bf811da7e9f15626cee90c28948cb2773c3eb858579fe. Decoded sample SHA-256:cf14e43d28fde131602db152f1071c44d74454bd71b1bb1d98dacce98c0a1add. Captured model output:2d04c782a3b98d5d09a856ef937de90dffa6c04afb0a47233bf1422fad8d9b16. Actual MIDI:3cca788b6844af29fc4fe9e1df3db083a02f9904842dc5a0515d8c97e7548423. - second-only / G2 inputNew Oct20 serial-input capture. Raw capture-clock reading: 2026-10-20T01:55:07.954Z. Parent: second-only-g1. Input SHA-256:
1e6d89599b1c5cdc3c2c7d02a81d18d5ecefa8c27740e7c55e9e66b8a9b1b606. Decoded sample SHA-256:8196d680836446f6a888e4bace6e97a0d0bc708c65f5d2d5d2853062f6ab9e7f. Captured model output:11a7caf09ecb18d8a33862f842a11eb11d03690ad69f8eb0b892a1520c423099. Actual MIDI:c0dc9e89af4f9aaf2ac8007813ac847360e98f110634db5a62a2de6fa3530b8e. - second-only / G3 inputNew Oct20 serial-input capture. Raw capture-clock reading: 2026-10-20T01:57:21.840Z. Parent: second-only-g2. Input SHA-256:
dfea0cd2abe0c71dd93fd6db9348e254caedbe7267045bd6b26d0624df86ce8e. Decoded sample SHA-256:d4cb8a4386c7c9f6b2bd1c71c3bac13352ab6dc265fa7c11873e4ab23b0be669. Captured model output:aed0cd2c98eb2a7034632c90ee37c926d9b380873012f92904716ea43cea8f11. Actual MIDI:c0dc9e89af4f9aaf2ac8007813ac847360e98f110634db5a62a2de6fa3530b8e.
For the preceding direct-from-WAV comparison, use the bitrate controls. For the underlying authored sources, use the independent boundary experiment. Those earlier pages keep their original evidence and claims.