Split kit and keys; KEYS GEN with MOTIF, 303, TURING, ARP
Some checks failed
check / check (push) Has been cancelled
Some checks failed
check / check (push) Has been cancelled
- genome(seed, salts) now has three parts with their own RNG streams: shared (steps, form, swing, arc, layback, fill odds, phase offset), kit (density, frame, accent cycle, free snare) and keys (scale/root, progression, motif, hocket, bass tone, note lengths, range). ROLL KEYS now renews the harmony too; ROLL KIT leaves the keys alone. - Keys generators share one signature and can fix note lengths: MOTIF (the old line), 303 (acid bass, answers in the rests, drone or silent pad), TURING (8/16-bit shift register, DRIFT flips bits, 16-bar window), ARP (triad/7th arpeggio, roots on kicks). - Pages: KIT GEN, KEYS GEN; ROLL shows KIT / KEYS; slots keep both gens. - Flash record v3 (old settings ignored). Bring-up golden checksums updated. - C port matches; host test and ASan/UBSan pass. Intended music change: every seed sounds different (genome split, new generators). Vectors regenerated with npm run vectors; the case grid now crosses all kit and keys generators, with TURING runs past its window. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -24,17 +24,13 @@ The synth runs in poly mode on one channel, so bass, melody and pad share one vo
|
||||
|
||||
## The genome
|
||||
|
||||
`genome(seed)` picks, once per seed:
|
||||
`genome(seed, salts)` picks, in three parts. Each part has its own random stream, so ROLL KIT and ROLL KEYS each renew one half only.
|
||||
|
||||
- **steps**: 16 most of the time, sometimes 12, 14 or 20 (bar length = steps × 16th)
|
||||
- **form**: AAAB, AABA, ABAB, AAAA, ABAC or ABAA over a 4-bar phrase
|
||||
- **scale and root**: any of the 21 scales below, any root. The ROOT and SCALE pages override them; AUTO keeps the seed's pick.
|
||||
- **progression**: one chord root per bar of the phrase (e.g. i–vi–iv–v)
|
||||
- **frame**: where the main kick and snare live (below)
|
||||
- **swing**: none, light, medium, heavy or triplet feel
|
||||
- **arc**: flat, build (bars 1–2 thin out) or break (bar 3 strips back)
|
||||
- **accent cycle**: off, or an accent every 3, 5 or 7 sixteenths running across the bar line
|
||||
- **motif length** (3–5 notes), **hocket mask**, **bass degree**, **melody phase offset**, **layback** (snares sit a little late), densities, fill odds
|
||||
| Part | Renewed by | Picks |
|
||||
|---|---|---|
|
||||
| shared | SEED | **steps** (16 mostly; 12, 14 or 20), **form** (AAAB, AABA, ABAB, AAAA, ABAC, ABAA), **swing** (none to triplet feel), **arc** (flat, build, break), **layback** (snares sit late), melody/perc phase offset, fill odds |
|
||||
| kit | SEED, ROLL KIT | kit density, **frame** (below), **accent cycle** (off, or every 3, 5 or 7 sixteenths across the bar line), free-snare settings |
|
||||
| keys | SEED, ROLL KEYS | **scale and root** (any of the 21 below; the ROOT and SCALE pages override them), **progression** (one chord root per bar, e.g. i–vi–iv–v), keys density, motif length, hocket mask, bass colour tone, note-length style, range |
|
||||
|
||||
### Frames
|
||||
|
||||
@@ -81,7 +77,7 @@ Bass, melody and pad follow the scale. Chords stack every other scale note, so t
|
||||
|
||||
## Generators
|
||||
|
||||
Selected on the GEN page. They only change the kit; the synth tracks are the same for all of them.
|
||||
Kit generators, selected on the KIT GEN page.
|
||||
|
||||
- **EUCLID**: Euclidean rhythms. Kick E(k,n) with a rotation that keeps the one, hats and perc often on their own cycle length (polymeter).
|
||||
- **SKELETON**: the frame, plus a few kick moves and hat patterns. The most "drummer-like".
|
||||
@@ -89,6 +85,21 @@ Selected on the GEN page. They only change the kit; the synth tracks are the sam
|
||||
- **AUTOMATA**: a 1-D cellular automaton decides the hits inside the frame.
|
||||
- **AMENIZER**: the four bars of the Amen break, velocities included, with its own humanising and chopping (below).
|
||||
|
||||
## Keys generators
|
||||
|
||||
Selected on the KEYS GEN page. All of them follow the bar's chord in the current scale and are split over BASS, MEL A, MEL B and PAD.
|
||||
|
||||
| Name | BASS | MEL A / B | PAD |
|
||||
|---|---|---|---|
|
||||
| **MOTIF** | the chord root on the kicks, a colour tone on alternate kicks, an approach note into the next bar | a 3–5 note motif stated and answered, hocket split | the bar's triad |
|
||||
| **303** | a 16-step acid line looped over the bar: gates, accents, octave jumps, slides; moves with the chord root | 1–2 note answers in the bass's rests | silent, or a drone on the key's root |
|
||||
| **TURING** | the chord root wherever the shift register's bit 0 is set; another bit lifts it an octave | the register read as a scale degree, hocket split | the bar's triad |
|
||||
| **ARP** | the chord root on every kick | the chord (triad or 7th) arpeggiated up, down, up-down or shuffled, alternating A / B | the arpeggio's chord |
|
||||
|
||||
- **303**: ENERGY opens more gates. DRIFT variants flip accents, slides and octaves. A slide is a note held into the next one; whether it glides is up to the synth's glide or legato setting.
|
||||
- **TURING**: an 8- or 16-bit register stepping every 16th. DRIFT flips the bit coming round (0 = locked loop, a quarter of the knob ≈ one flip a bar). Flips stick for 16 bars, then fall away.
|
||||
- **ARP**: 8ths at low density, 16ths at high, and 16ths in fill bars.
|
||||
|
||||
## Sections
|
||||
|
||||
The form says which bars are A, B or C. B and C are transformations of A rather than new patterns, so the phrase hangs together. The transforms: kick answer, hat doubling, thin the first half, perc shift, ghost pickups, snare drag, drop the one, half-time switch.
|
||||
|
||||
@@ -44,12 +44,13 @@ The Nokia 5110 has 84 × 48 pixels:
|
||||
| Page | Edit with the encoder | Push |
|
||||
|---|---|---|
|
||||
| **SEED** | scroll back through the last 16 seeds (`-1`, `-2` …; `*` = re-rolled) | load the shown seed |
|
||||
| **GEN** | EUCLID, SKELETON, SUBDIV, AUTOMATA, AMENIZER | done |
|
||||
| **KIT GEN** | EUCLID, SKELETON, SUBDIV, AUTOMATA, AMENIZER | done |
|
||||
| **KEYS GEN** | MOTIF, 303, TURING, ARP (see [Concept](concept.md#keys-generators)) | done |
|
||||
| **ROOT** | AUTO, C … B. AUTO shows the seed's pick | done |
|
||||
| **SCALE** | AUTO, then the 21 scales (see [Concept](concept.md#scales)). AUTO shows the seed's pick | done |
|
||||
| **BPM** | tempo | done |
|
||||
| **SLOT** | 8 slots for seed + salts + generator (not root or scale) | push = load, long push = save |
|
||||
| **ROLL** | KIT or LINE | push re-rolls just that half (a new drum part over the same tune, or the other way round), then goes back to page select |
|
||||
| **SLOT** | 8 slots for seed + salts + kit and keys generators (not root or scale) | push = load, long push = save |
|
||||
| **ROLL** | KIT or KEYS | push re-rolls just that half, then goes back to page select. KIT: a new drum part over the same keys. KEYS: new chords, scale (on AUTO), motif and patterns over the same drums |
|
||||
| **LEARN** | — | push, press a kit track button, hit the pad on the sampler or drum machine. Push again to cancel. |
|
||||
|
||||
## Simulator keys
|
||||
|
||||
@@ -13,6 +13,8 @@ Short record of why things are the way they are, so they don't get undone by acc
|
||||
- **Sections are transforms of A**, not new patterns. The phrase hangs together.
|
||||
- **Drift is continuous overlapping layers**, not steps. Wide knob spans used to do little. Drift adds displacement and weirdness at the top end.
|
||||
- **AMENIZER keeps its own feel.** Its humanising and chops are tuned so that DRIFT past halfway isn't too extreme. The generic layers come in later and at half strength.
|
||||
- **Kit and keys are split (2026-10-11).** One seed drives both through their own generator (KIT GEN, KEYS GEN). The keys-only choices (progression, scale, motif) moved into the keys half so ROLL KEYS renews the harmony too. Every seed changed sound; vectors regenerated. ENERGY, DRIFT, bar length, form and swing stay shared, and bass may still lock to the kicks.
|
||||
- **303 slides are overlaps only.** No portamento CCs: the synth channel is shared and poly, so a CC would bend every voice.
|
||||
- **ROOT and SCALE are global and sticky (2026-10-11).** They survive SEED, ROLL and slot loads, so a seed can be fitted to an existing idea. AUTO lets the seed pick from all 21 scales, which changed every seed's sound (vectors regenerated). Slots don't store the key.
|
||||
- **Integer-only engine** with a seeded RNG. This makes it deterministic and portable, and testable by golden vectors.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user