# 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.