- web-ui/midi-editor.html: full piano roll MIDI editor (new tab)
- all tracks simultaneously, color-coded per channel
- note add/delete/move/resize, multi-select, copy/paste
- velocity lane, track panel (mute/solo/instrument), undo/redo
- GM reset + bank select on playback, MIDI output device select
- export to .mid, open via ?url= param or file picker
- web-ui/index.html: add ✏ 편집 button to MIDI widget (opens editor)
- GM SysEx reset + bank select before note playback
- 200ms note delay for synth init time
- getRenderFile: prefer original.midi over LilyPond output.midi
- src/gateway/music-renderer.ts: getRenderFile returns original.midi first
- LilyPond SVG render overwrites output.midi (no Program Changes)
- original.midi preserved from upload, served via /api/music/file/:id/midi
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>