| name | midi-seed-composer |
| description | Compose original melody seeds and export them as multi-track MIDI (for Logic Pro or any DAW) plus a dry rendered WAV (for Suno audio input). Use this skill whenever the user asks for a MIDI file, a melody, a musical seed, a Suno seed, a hook/riff/motif/chant/drone idea, or wants to "seed" an AI music tool with a melody — including requests phrased as "write me a melody like X", "generate MIDI for this song", "make a seed in a given key or mode", or "compose something in the style of an artist or genre". Also use it when a user with an existing song project wants melodic material rendered to files rather than described in text. |
MIDI Seed Composer
Compose an original melody to a musical brief, then deliver it as (1) a
multi-track MIDI file for the user's DAW and (2) a deliberately plain WAV
render for seeding Suno or similar audio-input AI tools. The melody is the
creative act and belongs to Claude-as-composer; scripts/seedlib.py is the
deterministic engine for pitch math, MIDI export, and audio rendering.
Workflow
1. Establish the brief
Pull from conversation context first; ask only for what's missing. A full
brief is: key + mode, tempo + meter, voice/instrument range, structure,
vibe reference, and target (Suno seed, Logic import, or both). Most users
give a vibe reference ("like The Hanging Tree", "M83-style chorus") — infer
the technical spec from it and state the inference so the user can correct
it. Don't interrogate; one clarifying question maximum, then commit.
2. Compose (read references/melody-craft.md first)
Compose the melody as explicit note events — never random generation. The
craft reference covers mode selection by vibe, folk/modal idioms, contour
templates, phrase architecture, and peak discipline. Decisions to make on
purpose: which contour, where the single peak lands, which one or two idioms
are in play, where the strophe refuses to resolve. Write the events in
(note, duration) lists with comments naming what each phrase does.
3. Generate both files
Copy scripts/seedlib.py to the working directory and write a short
generation script against it (see the reference in the module docstring).
Standard deliverable: melody track + drone/harmony track + optional
percussion pulse, with the arrangement escalation encoded in the seed
itself (solo → +drone → +pulse). Verify with check_in_mode() that any
chromatic notes are the intentional ones. Dependencies: midiutil,
numpy, scipy (pip install as needed).
Read references/daw-and-suno.md for Logic import behavior, compound-meter
tempo semantics, and why the WAV must stay dry.
4. Deliver and explain
Present both files (MIDI + WAV). Then explain the musical choices the way a
collaborator would — mode and why it fits the brief, contour shape, where
the peak is, which idioms are in play, what the arrangement escalation does
for the seeding target. The user is a creative partner making decisions;
reasoning is part of the deliverable.
5. Offer parametric revision
State explicitly that the seed is parametric and invite adjustments (peak
placement, range, mode swap, rhythm feel, structure). Keep the generation
script alive in the working directory; revisions are ~30-second edits, and
users who want to iterate locally can be given the script itself.
Scope notes
- Original melodies only. Vibe references steer mode/contour/feel — never
reproduce an existing melody, including on request; offer an original in
the same modal/structural language instead.
- If the user only wants MIDI (no Suno), skip the WAV; if only a Suno seed,
still provide the MIDI — it costs nothing and DAW users always want it.
- Chord-progression or arp seeds (no lead melody) are valid briefs: use
pluck/pad timbres and the same workflow.