Song Parts Sequencer

Beat-aligned multitrack editor, designed for splitting audio or midi into segments that can be looped, triggered or rearranged

Song Parts Sequencer

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.ts is 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.md and docs/SONG_PARTS_SEQUENCER_SPEC.md for 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.