Rework an existing SonicForge composition in a different genre while keeping its harmonic structure.
Produce a genre variant of an existing composition that keeps the harmonic skeleton (key, chord progression, section layout) and changes the sound-design layer (instruments, rhythm, tempo, effects, modulation).
/remix <path> <genre> — both positional args optional/remix <genre> — use the most recently modified file in compositions//remix — ask for source and targetResolve the source. If no path given, glob compositions/*.json and pick the most recently modified. If ambiguous or the user clearly meant a different file, ask.
Read and map the source. Extract and write down (for yourself) before touching anything:
metadata.key, original bpm, original (first tag is the source's primary genre)tagsThis map is the invariant. Every structural choice in the remix should trace back to it.
Consult the library snapshot — lightly. Read tools/composition-index/snapshot.txt — the pre-rendered digest the PostToolUse hook keeps current. Remixes are inherently specified (source + target genre), so the snapshot's role here is narrower than in /compose:
progressive-trance, psy-trance, or uplifting-trance rather than another generic four-on-the-floor.Library gaps section. If the target genre itself shows up as a gap, that's a free signal to commit to the request without second-guessing — the library is actively missing it.Silent integration — do not verbalize the snapshot reasoning to the user in the final response. The snapshot already excludes verification fixtures tagged demo.
Load target-genre reference. Always read:
.claude/skills/compose/gm-samples.md — for any sampled instruments.claude/skills/compose/genre-guide.md — for target-genre conventionsIf the target genre is one of house, bass house, dubstep, drum & bass, future bass, or trance, also read:
.claude/skills/compose/genre-templates.md — and use the target genre's template as a sound-design starting pointIf the target involves synths, effects, modulation, or one-shot drums, also read:
.claude/skills/compose/synth-presets.md.claude/skills/compose/effects-reference.md.claude/skills/compose/modulation-patterns.md.claude/skills/compose/oneshot-hits.mdPlan the transformation. Decide before writing any notes:
Preserve these exactly.
metadata.keyRework these freely.
metadata.bpm, metadata.title (append " (Genre Remix)" or similar)metadata.tags — new primary tag (target genre) first, followed by remix-relevant modifiers. Optionally include "remix" and a reference to the source genre as a modifier (e.g., ["trance", "remix", "dubstep-source", "uplifting"]).instruments[] — new list per the swap tablemasterEffects, automation, lfos, modulation, sidechainGenerate the composition JSON. Follow composition-format and music-theory rules. Every note written out — no placeholders. Vary velocity. Keep instruments in their natural registers (bass C1–G3, melody C4–C6, pads C3–G5).
For long remixes or heavy genre reworks, reach for the helper library at tools/compose-helpers/ for repetitive scaffolding (drum grids, bass patterns, pad sustains, arpeggios, humanization). Write a throwaway scratch script that imports primitives, builds repetitive tracks, and leaves melodies and fills hand-written. Helper output is a starting point — hand-edit for expression. New helpers are encouraged if a primitive you need doesn't exist yet.
Rigidity pass. Before finalizing, scan the generated remix for mechanical uniformity and adjust. Applies regardless of whether helpers were used:
Write the JSON — draft-first. Author to /tmp/composition-draft-<source-stem>-<genre-slug>.json throughout generation. Validate against the schema. Then run pnpm finalize-composition <source-stem>-<genre-slug> as the final step (e.g., pnpm finalize-composition subterra-trance) — the helper copies the draft to compositions/<source-stem>-<genre-slug>.json and updates the composition index in one atomic operation. Do not overwrite the source composition. See .claude/rules/composition-drafts.md for the full convention and rationale.
Describe the remix briefly. New title, new BPM, instrument swap summary, what was preserved, and what the rigidity pass adjusted (or "rigidity pass clean" if no adjustments were needed). A few sentences max.
Before outputting, verify:
version is "1.0"instrumentId references match an instrument id