Sound guide
Choose sounds and shape your loop
Start with a few parts that leave room for each other. Choose an instrument, listen in context, then adjust the mix. These suggestions are starting points you can change to suit your music.
Start from a part
Add offers four kinds of part: a Beat, a Chords progression, a Bass line, and a Lead melody. They come from the same corpus the Soundfish skill ships to agents, so a part you add in the browser is the part your agent applies from the terminal.
Chords, bass, and lead are voiced in the loop's key. A bass line or melody can follow the loop's chords, taking each bar from that bar's chord rather than from the key alone. A part repeats or is cut to fit your bar count. An empty loop takes the part's tempo, a loop with no swing takes a groove's swing, and a loop with no key records the key the part was voiced in.
Key and chords
A key is a root and one of eight modes: major, minor, dorian, mixolydian, lydian, phrygian, harmonic minor, and aeolian. Naming one lights the notes that belong to it on every notes track and labels the roots down the pitch axis. The chord names on the ruler and the shaded chord tones are read from the parts that play them, or from a progression you name yourself.
A key and a progression describe a loop; neither alters a note on its own. Both travel inside the composition, so an agent reading your link sees the key and chords you see. Changing a key can move the music, and turning on snapping keeps new notes inside the key; the getting started guide covers both controls.
Voices that carry a loop
The instrument picker includes sounds such as Wurlitzer EP200, Black Fingered Bass, Etherealwinds Harp, and VSCO strings, brass, and winds. The instrument picker shows those names and searches them alongside the GM catalog. Filter by family, pause playback, then use arrow keys to preview and Enter to choose. Bass previews use a low register; pipe instruments use a higher one.
| Role | First choice | What it is for | Alternatives |
|---|---|---|---|
| Bass | gm:34 Electric Bass (finger) | Rounded and steady under the chords. | gm:39 Synth Bass 1, gm:40 Synth Bass 2, gm:33 Acoustic Bass |
| Chords | gm:5 Electric Piano 1 | Warm keys that leave room above them. | gm:1 Acoustic Grand Piano, gm:17 Drawbar Organ, gm:90 Pad 2 (warm) |
| Pad | gm:90 Pad 2 (warm) | Soft and wide; sits behind everything. | gm:89 Pad 1 (new age), gm:92 Pad 4 (choir), gm:51 Synth Strings 1 |
| Strings | gm:49 String Ensemble 1 | A whole section, bowed. | gm:50 String Ensemble 2, gm:45 Tremolo Strings |
| Lead | gm:82 Lead 2 (sawtooth) | Bright and cutting over a full mix. | gm:81 Lead 1 (square), gm:74 Flute, gm:57 Trumpet |
| Stabs | gm:63 Synth Brass 1 | Short, hard hits between the chords. | gm:62 Brass Section, gm:6 Electric Piano 2 |
The picker leads with this table. Open it from a track that already plays a bass line, chords, or a melody and the suggestions for that role come first, with the whole catalog below them; a track named Pad, Strings, or Stabs is taken at its word. A sawtooth lead usually wants its cutoff between 4,000 and 7,000.
The role choices are starting points, not quality measurements. The current MuseScore General 0.2.0 and SpessaSynth release includes 40 sampled melodic overrides, and the picker marks each one Sampled so the recorded voices are told apart from the bank’s own synthesis. Audition each part in context. gm:N is the conventional 1-based General MIDI number; the stored program is N − 1.
Drum kits
Choose from twelve drum kits. Their CLI program numbers are: Acoustic 0, Room 8, Lo-fi 9, Breaks 10, Techno 11, House 13, Rock 16, Electronic 24, 808 25, 909 30, Orchestra 48, Ethnic 49. Every kit answers on every percussion pitch. Playing a closed, pedal, or open hi-hat cuts off the previous hi-hat sound.
Loop size and limits
- BPM 40 to 240; pitch 0 to 127 (C4 is 60); velocity 1 to 127; bars 1 to 16; swing 0 to 100.
- Canonical bytes are the binding limit: 24,493 per loop. The event cap (832) is secondary;
soundfish analyzeprints bytes used andlintwarns above 80%. - A loop is one idea that repeats. A song is sections that differ in arrangement, built from loops that share one tempo, one swing, and one track roster.
Evolving loops
Choose Evolve this loop in the editor, or start an Evolving loop from MIDI. Set each part's behavior, seed, change rate, and pinned notes, then play, hold a phrase, or restart. The same recipe produces the same phrases.
Keep this phrase opens editable notes; Capture recent cycles keeps whole phrases started during playback, including the current phrase even when paused midway. It captures notes, not a partial audio recording. Export next cycles as MIDI renders a finite passage from the displayed recipe cycle. Save a recipe link or JSON to retain its rules. Controls, bounds, and agent commands: evolution.md.
Balance the parts
Try alternating strong and soft hi-hats, keeping bass below the chords, and changing one part near the end of the loop. Lower track volumes if the mix feels crowded. Keep reverb and delay light on kick and bass. These are musical suggestions, not requirements.
| Delay time (milli-beats) | Note value |
|---|---|
| 250 | sixteenth |
| 333 | triplet eighth |
| 500 | eighth (default) |
| 750 | dotted eighth |
| 1,000 | quarter |
Mix numbers
- Reverb send 2,000 to 3,500 on keys and pads, 1,500 to 2,500 on leads, 0 on kick and bass; delay send 1,500 to 3,000 on leads and stabs. Delay times are in the table above.
- Pan 0 left to 10,000 right; keep kick, snare, bass, and the lead centered. Cutoff is a 200 Hz to 20 kHz log low-pass: 2,500 is about 630 Hz, 5,000 is 2 kHz, 7,500 about 6.3 kHz; pads 5,000 to 7,000, leads 4,000 to 8,000.
- Swing 15 to 35 loosens boom-bap and breaks; 55 to 66 is a shuffle or triplet feel.
Details: mixing.md.
The working loop
For an existing loop, inspect and verify its exact URL first and preserve unrelated tracks and lineage. For new music, start from a template (soundfish templates list, soundfish templates apply grooves/house-basic --key Am --bpm 124), write or edit compose text, compile it with soundfish compose, read lint and analyze, fix with transforms (fill, variation, accent, humanize, duck, transpose, set-volume, set-send, set-cutoff, thin), then save the final CLI URL output and use handoff to generate and check the actual reply against it. From a repository checkout, render --dry adds per-track band statistics. The compose grammar is in the API reference.
Reference files
The Soundfish skill includes these references. Open a file for instrument numbers, drum maps, mixing examples, or CLI instructions.
- gm-programs.md: Every General MIDI program with a mark for how it sounds in this release and a table of first choices per role.
- drums.md: The percussion map with compose aliases, the twelve drum kits and their GS programs, default rows per kit, and velocity habits.
- mixing.md: Register per role, accents, volume and headroom, sends and returns, delay presets, pan, cutoff, swing, and the byte budget.
- critique.md: The thirteen-line rubric a loop is read against, aligned with the lint codes and the verb that fixes each.
- cli.md: CLI procedure: exit codes, stdin rules, operations, templates, songs, export and import, and the local song importer.
- evolution.md: Deterministic evolving loops: ALGAL recipes, pins and per-track rules, finite capture, MIDI, variation comparison, and checked file and link delivery.
- audio.md: Audio publishing procedure: tokens, album and track verbs, uploads, revisions, cover art, embeds, exit codes, and the HTTP API.
Genres
- house: House: a compose skeleton, a before-and-after transform pair, and the stage order.
- boom-bap: Boom bap: a compose skeleton, a before-and-after transform pair, and the stage order.
- half-time: Half time: a compose skeleton, a before-and-after transform pair, and the stage order.
- breakbeat: Breakbeat and jungle: a compose skeleton, a before-and-after transform pair, and the stage order.
- jazz: Jazz: a compose skeleton, a before-and-after transform pair, and the stage order.
- orchestral: Orchestral: a compose skeleton, a before-and-after transform pair, and the stage order.