Files
midi-tools/public/README.md
T
2026-09-01 14:22:42 +02:00

1.7 KiB

MIDI Tools

Parse, visualize, edit, audition and export Standard MIDI files locally in the browser. Files and playback never leave the device.

Features

  • Strict, bounded Standard MIDI file type 0 and type 1 parsing with running status, canonical VLQs, channel events, metadata and bounded SysEx.
  • Track/event inspection, tempo, time-signature and key-signature timelines, a piano roll and pitch-class keyboard.
  • Immediate-stop Web Audio timing preview using a small built-in sine synthesizer.
  • Transpose, note quantize, constant-tempo, crop and channel remap/remove operations with twenty-step undo.
  • Deterministic valid MIDI export plus spreadsheet-safe CSV and descriptive JSON reports.
  • Offline PWA and shared Toolbox system/light/dark shell.

Limits and editing semantics

Input and output are capped at 8 MiB, 256 tracks and 250,000 events; aggregate SysEx is capped at 1 MiB. Only PPQN timing is supported. Playback schedules at most 2,000 notes, considers the first 900 seconds and caps any sounding note at 30 seconds. It is a timing preview, not a General MIDI instrument or soundfont renderer.

Transpose updates note, note-off and poly-pressure pitches but deliberately does not rewrite key signatures. Quantize moves paired note boundaries to ticks. Crop clips overlapping paired notes, retains the latest tempo/time/key, program and controller setup, then shifts to tick zero. MIDI export writes full status bytes, canonical VLQs and one end-of-track event per track.

Development

Use Node.js 22+ and npm 11. Run npm ci, npm run check, npm run test:browser, then npm run package:release -- --force. The deterministic artifact is release/midi-tools-0.1.0.zip with a SHA-256 sidecar.

Licence

GPL-3.0-or-later.