Beat-aligned multitrack editor for slicing songs into named Parts and exporting them as audio stems, per-Part MIDI, or Synthstrom Deluge songs.
Features
- Import MIDI (single or multitrack) and audio stems/loops into a strict bar/beat grid.
- Define non-overlapping Parts (Intro, Verse, Chorus, etc.), reorder them, and toggle inclusion per export.
- Per-Part playback modes: sequential, single-part loop, and triggered.
- Per-track, per-Part overrides (mute, gain, transpose) while keeping a single global track timeline.
- Export to per-Part audio stems, per-Part MIDI, and Deluge-compatible
SONGxxx.XML+ samples.
Project Structure
- Core logic:
src/core(IR types, parts engine, MIDI import, Deluge export, timing helpers). - UI:
src/ui(React + Tailwind layout: TopBar, Parts sidebar, timeline, detail panel). - Utilities:
src/utils. - Domain spec:
docs/SONG_PARTS_SEQUENCER_SPEC.md(authoritative behaviour and IR).
Getting Started
Prerequisites: Node 18+ recommended.
npm install npm run dev # start Vite dev server npm run build # production build npm run preview # preview built assets
Development Notes
- Keep the Internal Representation independent of Deluge specifics;
src/core/exportDeluge.tsis a pure translator. - Parts are global bar-aligned slices and must not overlap; tracks keep a single
globalRegion. - MIDI parsing should rely on a robust library rather than ad hoc parsing.
- Refer to
AGENTS.mdanddocs/SONG_PARTS_SEQUENCER_SPEC.mdfor invariants, UX layout, and exporter expectations before adding features.
Status
Early-stage; UX and exporters are evolving. Contributions should include minimal test coverage for new core logic where feasible.