EVOLVE — the duels
Two candidates, one question, and the machinery that turns your answer into a better next question.
The duel
Two cards, A and B. Each carries a name, an id, and its rendered waveform. The names are generated from what the patch is, so Round Wash and Gritty Swell mean something.
| 1 / 2, or ▶ SAMPLE | Play the standard five-second phrase |
| Click the card body | Load that candidate live on the keyboard |
| ← / →, or CHOOSE A/B | Vote |
| ⊕ BENCH | Send it to the workbench in PLAY without voting |
| ↻ | Deal a different pair |
| skip | This pair is uninformative; do not record anything |
Both sides play the same phrase. That is the point: audio features are only comparable across patches under an identical stimulus, so the sample is a fixed five seconds: a held C4, a C5 stab, a C4+E4 dyad, and a low C3 with a long release tail. The reference explains why each segment is there.
Clicking the card instead gives you the patch live under your hands, which is often the faster way to tell two near-ties apart.
A duel is a gut reaction. The model is built for noisy answers and averages over them; a carefully deliberated vote is not worth more than a quick one, and deliberating is how a session stops being fun. If you cannot tell, press skip. A coin flip recorded as a preference is worse than no data.
The teaching meter
The strip above the cards is the session's state of play:
The pips count down to the next refit. Between refits your votes still count: each one is folded into the model immediately by reweighting, so the next question responds to the last answer. A refit is the expensive version: full Markov-chain inference over the whole log, a few seconds, off the audio thread. When one runs, the E of the wordmark lights.
◇ unbiased probe marks a duel that was drawn at random rather than chosen. Those are the ones that can score the model's honesty without circularity. See TRUST.
Because it often is one, on purpose. A pair the model already knows the answer to teaches it nothing. The default pairing is uniformly random over the pool, which makes every duel an unbiased calibration sample. There is also an information-seeking mode that deliberately serves near-ties. Either way, "these two sound similar" frequently means "this is a question worth asking".
EVOLVE POOL
Breeds a generation.
The engine takes the ten highest-scoring patches in the pool and runs a short Metropolis–Hastings walk from each, mutating structure and parameters with the proposal distribution tilted by what your taste model has learned, then injects the children. Weakest members are evicted to make room; anything you have saved is exempt.
It is local hill-climbing on what the model believes, not a draw from the target distribution. In practice that means children resemble their parents, and a generation moves the pool rather than replacing it. The reference is precise about this.
Nothing happens if there is no fitted model yet; there is no direction to climb in. Answer some duels first.
The EVOLUTION strip
What each generation did, per step:
gen 31 ⚡ evolution on #90 → #91 · attack 0.59→0.83, decay 0.45→0.28,
release 0.13→0.82, +1 more, +noise, −distortion, −filter · Δtaste +0.65
gen 30 ✎ your edit on #49 → #90 · leaf processor→source,
mod depth 0.24→0.30, mod follower→no mod, +vco, −delay
Parameter moves are named and shown as before→after; structural moves as
+module / −module. Δtaste is how much the model's estimate of the patch
moved. The sparkline to the left is the pool's utility over generations.
Hand edits appear here too, tagged ✎ instead of ⚡. The lineage records everything that produced a patch, not only what the machine did.
A working rhythm
- Answer duels until the meter fires a refit. Ten to fifteen is a good first batch.
- Check TASTE. Has a style separated out? Is TRUST improving?
- EVOLVE POOL and listen to the children.
- Repeat. When a child is genuinely good, take it to PLAY, lock what you like, and ⚡ evolve from this for variations around it.