{
  "date": "2026-11-03",
  "site": "https://midilot.com",
  "pipeline": "Prepared four-note MIDI -> production MIDI-to-MP3 local render -> production WAV-to-MIDI local transcription -> native MIDI download and independent parse.",
  "source_note_events": [
    "C4",
    "D4",
    "E4",
    "G4"
  ],
  "formula": "duration_seconds = beats * microseconds_per_quarter_note / 1000000",
  "tests": [
    {
      "bpm_label": 120,
      "source_midi": "samples/tempo-loop-120-source.mid",
      "source_midi_sha256": "dad5adb0311a633416accb26556a429044ef006c07ae148f22c0a77c620f419c",
      "source_midi_bytes": 69,
      "input_tempo_us_per_quarter": 500000,
      "ppq": 480,
      "input_note_starts_seconds": [
        0.0,
        0.5,
        1.0,
        1.5
      ],
      "input_music_duration_seconds": 2.0,
      "rendered_wav": "samples/tempo-loop-120-source.wav",
      "rendered_wav_bytes": 110294,
      "rendered_wav_sha256": "c28eb83929274b7f6f79195addce08aaef39d130d9c18071f16a021e3d2a754e",
      "rendered_wav_format": "mono PCM16 22050 Hz",
      "rendered_wav_frames": 55125,
      "rendered_wav_duration_seconds": 2.5,
      "rendered_mp3_bytes": 40960,
      "rendered_mp3_sha256": "76f8aaf608c1f398ad9d80a1ccc5215969c0cc0631ab7d69645043153b293559",
      "rendered_mp3_metadata": "mono MPEG-3 22050 Hz, 128000 bit/s, 98 packets, estimated 2.56 seconds",
      "transcription_ui_status": "Ready: 4 pitched notes · 2.50 seconds · local mono render.",
      "transcription_note_count": 6,
      "transcription_midi": "samples/tempo-loop-120-actual-output.mid",
      "transcription_midi_bytes": 99,
      "transcription_midi_sha256": "cb37785a832aca3f9ce6856bfb1efb5b868a4dd7b3d3462da0099efce9c42138",
      "transcription_file_metadata": "format 0, one track, 480 PPQ, tempo meta 500000 us/quarter (120 BPM)",
      "transcription_notes": [
        {
          "pitch": "C4",
          "midi": 60,
          "start_tick": 0,
          "end_tick": 357,
          "start_seconds": 0.0,
          "end_seconds": 0.371875
        },
        {
          "pitch": "C#4",
          "midi": 61,
          "start_tick": 357,
          "end_tick": 468,
          "start_seconds": 0.371875,
          "end_seconds": 0.4875,
          "extra": true
        },
        {
          "pitch": "D4",
          "midi": 62,
          "start_tick": 468,
          "end_tick": 847,
          "start_seconds": 0.4875,
          "end_seconds": 0.8822916666666666
        },
        {
          "pitch": "D#4",
          "midi": 63,
          "start_tick": 847,
          "end_tick": 936,
          "start_seconds": 0.8822916666666666,
          "end_seconds": 0.975,
          "extra": true
        },
        {
          "pitch": "E4",
          "midi": 64,
          "start_tick": 936,
          "end_tick": 1315,
          "start_seconds": 0.975,
          "end_seconds": 1.3697916666666667
        },
        {
          "pitch": "G4",
          "midi": 67,
          "start_tick": 1427,
          "end_tick": 2028,
          "start_seconds": 1.4864583333333332,
          "end_seconds": 2.1125
        }
      ],
      "matched_pitch_onsets_seconds": [
        0.0,
        0.4875,
        0.975,
        1.4864583333333332
      ],
      "matched_pitch_input_onsets_seconds": [
        0.0,
        0.5,
        1.0,
        1.5
      ],
      "onset_error_seconds": [
        0.0,
        -0.0125,
        -0.025,
        -0.013541666666666785
      ],
      "onset_mae_formula": "sum(abs(output_onset - input_onset) for four expected pitches) / 4",
      "onset_mae_seconds": 0.012760416666666698
    },
    {
      "bpm_label": 90,
      "source_midi": "samples/tempo-loop-90-source.mid",
      "source_midi_sha256": "e828882a76e337fb775d58386174506867b0ef562578a4eecc405fc7a21fac80",
      "source_midi_bytes": 69,
      "input_tempo_us_per_quarter": 666667,
      "ppq": 480,
      "input_note_starts_seconds": [
        0.0,
        0.666667,
        1.333334,
        2.000001
      ],
      "input_music_duration_seconds": 2.666668,
      "rendered_wav": "samples/tempo-loop-90-source.wav",
      "rendered_wav_bytes": 139696,
      "rendered_wav_sha256": "c7c1f372cf024fcb39c06c259128bc9e9f41720725bfab75d3d5ffafa63fd78a",
      "rendered_wav_format": "mono PCM16 22050 Hz",
      "rendered_wav_frames": 69826,
      "rendered_wav_duration_seconds": 3.16671201814059,
      "rendered_mp3_bytes": 51826,
      "rendered_mp3_sha256": "82a0a65b945c15c9c06c259128bc9e9f41720725bfab75d3d5ffafa63fd78a",
      "rendered_mp3_metadata": "mono MPEG-3 22050 Hz, 128000 bit/s, 124 packets, estimated 3.239125 seconds",
      "transcription_ui_status": "Ready: 4 pitched notes · 3.17 seconds · local mono render.",
      "transcription_note_count": 6,
      "transcription_midi": "samples/tempo-loop-90-actual-output.mid",
      "transcription_midi_bytes": 100,
      "transcription_midi_sha256": "0e040e9271b2c9dc8542076a1f5feff747f4131114ddceeb8817c80b20b63da8",
      "transcription_file_metadata": "format 0, one track, 480 PPQ, tempo meta 500000 us/quarter (120 BPM)",
      "transcription_notes": [
        {
          "pitch": "C4",
          "midi": 60,
          "start_tick": 0,
          "end_tick": 535,
          "start_seconds": 0.0,
          "end_seconds": 0.5572916666666666
        },
        {
          "pitch": "C#4",
          "midi": 61,
          "start_tick": 535,
          "end_tick": 624,
          "start_seconds": 0.5572916666666666,
          "end_seconds": 0.65,
          "extra": true
        },
        {
          "pitch": "D4",
          "midi": 62,
          "start_tick": 624,
          "end_tick": 1159,
          "start_seconds": 0.65,
          "end_seconds": 1.2072916666666667
        },
        {
          "pitch": "D#4",
          "midi": 63,
          "start_tick": 1159,
          "end_tick": 1271,
          "start_seconds": 1.2072916666666667,
          "end_seconds": 1.3239583333333333,
          "extra": true
        },
        {
          "pitch": "E4",
          "midi": 64,
          "start_tick": 1271,
          "end_tick": 1783,
          "start_seconds": 1.3239583333333333,
          "end_seconds": 1.8572916666666668
        },
        {
          "pitch": "G4",
          "midi": 67,
          "start_tick": 1917,
          "end_tick": 2675,
          "start_seconds": 1.996875,
          "end_seconds": 2.7864583333333335
        }
      ],
      "matched_pitch_onsets_seconds": [
        0.0,
        0.65,
        1.3239583333333333,
        1.996875
      ],
      "matched_pitch_input_onsets_seconds": [
        0.0,
        0.666667,
        1.333334,
        2.000001
      ],
      "onset_error_seconds": [
        0.0,
        -0.016667,
        -0.009375666666666683,
        -0.0031260000000001287
      ],
      "onset_mae_formula": "sum(abs(output_onset - input_onset) for four expected pitches) / 4",
      "onset_mae_seconds": 0.007292166666666703
    }
  ],
  "observations": [
    "Both production WAV-to-MIDI runs reported six notes for a four-note programmed melody; C#4 and D#4 were additional detected events in each output.",
    "The four programmed pitches C4, D4, E4 and G4 appear in both actual output MIDI files.",
    "Both output MIDI tempo meta events are 500000 microseconds per quarter note (120 BPM), including the input rendered from the 90 BPM source.",
    "The MIDI-to-MP3 page adds a half-second render buffer as documented there; output file duration alone does not prove the audible tail length.",
    "The WAV-to-MIDI media widget had an accessibility label indicating media could not play; no preview-playback success is claimed. MP3/WAV files were downloaded and independently read with afinfo; MIDI outputs were downloaded and independently parsed from their bytes.",
    "Monthly search volume for this scenario phrase remains null / no data; no estimate is included."
  ],
  "competitor_reference": {
    "name": "Convert.Town BPM Detector",
    "url": "https://convert.town/bpm-detector",
    "scope": "Vendor page was read, not submitted to or tested. BPM detection and format/client-side handling recorded as vendor statements only."
  }
}
