Gee 346c820b10
Some checks failed
check / check (push) Has been cancelled
Split kit and keys; KEYS GEN with MOTIF, 303, TURING, ARP
- 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>
2026-10-11 21:50:41 +03:00

Seedbox

A generative rhythm and melody machine for a Raspberry Pi Pico 2 W. One 32-bit seed grows a whole tune: a drum part for any sampler or drum machine and a bass, melody and pad line for a poly synth, both over MIDI. Built and tested with a Roland SP-404MKII and an Arturia MiniFreak. You don't program steps. You pick a seed, turn tracks on and off, and steer it with two knobs.

Status: v0.1. The engine and the controls are settled in a browser simulator that drives the real gear over Web MIDI. The stripboard layout has been checked by script and by an independent review. The Pico firmware is not written yet: that's the next step.

What's in the box

Part
Brain Raspberry Pi Pico 2 W (RP2350), powered and flashed through its own USB port at the back
Screen Nokia 5110 LCD (PCD8544, 84 × 48)
Controls Encoder with push, ENERGY and DRIFT pots, SEED button, 11 track buttons in a 4 × 3 grid, with the RUN toggle in its top-right corner
MIDI IN (for learning drum pads), OUT KIT (sampler or drum machine), OUT SYNTH. 3.5 mm TRS (Type A), MIDI 1.0 3.3 V spec.

Repo map

sim/            the browser simulator: index.html, engine.js (portable engine), app.js (UI, Web MIDI)
test/           golden vectors and the scripts that make and check them
hardware/       layout.js (the stripboard, one source of truth) and check-layout.js
tools/          bench pages: wiring.html, bom.html (tick-off parts list), panel.html (panel layout)
docs/           concept, controls, MIDI setup, hardware (BOM, pinout, wiring, panel, SVG drawings)
firmware/       the port plan for the Pico (C, Pico SDK)

Run it

The simulator is a static page. Web MIDI needs a secure context, so serve it over localhost or HTTPS rather than opening the file directly:

npx serve .            # or: python3 -m http.server
# open http://localhost:3000/sim/   (Chrome or Edge; Firefox needs a Web MIDI add-on)

GitHub Pages works too: enable Pages for the repo and open /sim/.

Checks (Node 18 or later, no dependencies):

npm test               # golden vectors + stripboard netlist

Docs

Licence

None chosen yet. Add a LICENSE file before making the repo public (MIT for code and CC BY-SA for the hardware docs is a common pairing).

Credits

The track model leans on Eric Lyon's paper "Techno Counterpoint", an analysis of Aphex Twin's tracking practice. The AMENIZER plays a re-voiced Amen break pattern (The Winstons, "Amen, Brother", 1969).

Description
on demand drums + keys ideas with separate midi outs and midi in for learning pads.
Readme 890 KiB
Languages
JavaScript 35.1%
HTML 32.4%
C 29.9%
CMake 2.4%
Makefile 0.2%