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

27 lines
1.7 KiB
Markdown

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