+10
-4
@@ -5,21 +5,27 @@ Parse, visualize, edit, audition and export Standard MIDI files locally in the b
|
||||
## Features
|
||||
|
||||
- Strict, bounded Standard MIDI file type 0 and type 1 parsing with running status, canonical VLQs, channel events, metadata and bounded SysEx.
|
||||
- Disposable module-worker parsing, editing and MIDI/CSV/JSON export with
|
||||
progress, explicit cancellation and stale-result suppression.
|
||||
- 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.
|
||||
- Immediate-stop Web Audio timing preview using a small built-in sine synthesizer,
|
||||
plus explicitly enabled Web MIDI output without SysEx permission.
|
||||
- Click-to-edit paired notes, transpose, note quantize, constant-tempo, crop and
|
||||
channel remap/remove operations with twenty-step undo.
|
||||
- Bounded local SF2/SF3 RIFF structure inspection. SoundFont rendering is
|
||||
deliberately not claimed until a vetted local synthesizer is bundled.
|
||||
- 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.
|
||||
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. Web MIDI is an explicit browser permission and sends only channel note messages to the selected output. SF2/SF3 inspection is capped at 128 MiB and never loads a remote bank. The built-in player 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.
|
||||
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.2.0.zip` with a SHA-256 sidecar.
|
||||
|
||||
## Licence
|
||||
|
||||
|
||||
Reference in New Issue
Block a user