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>
16 lines
658 B
C
16 lines
658 B
C
/* Settings in the last flash sector: slots, learned pads, BPM, kit and keys generators, root, scale, synth channel and octave,
|
|
plus the current seed and track on/off (as app.js keeps them). Erasing a sector stalls both cores for tens of
|
|
milliseconds, so main.c only saves while stopped. */
|
|
#ifndef SEEDBOX_STORAGE_H
|
|
#define SEEDBOX_STORAGE_H
|
|
|
|
#include "app.h"
|
|
|
|
typedef struct { uint8_t used, gen, keys; uint32_t seed; uint32_t salts[2]; } slot_t;
|
|
|
|
void storage_defaults(live_t *L, slot_t *slots);
|
|
int storage_load(live_t *L, slot_t *slots); /* 1 if a valid record was found */
|
|
int storage_save(const live_t *L, const slot_t *slots);
|
|
|
|
#endif
|