w1n5t0n
|
d40711eb77
|
fix(shapeseq): fix 6 bugs found in fresh-eyes review
1. Pitch pipeline: IntervalLock stores midiNote/127, sequencer now
converts back via pitch*127. Removed pitch RangeMap from projection
presets (was double-mapping already-quantized values).
2. Clock step duration: changed from quarter-note grid (60/bpm) to
16th-note grid (60/bpm/4). 8 steps at 120 BPM now = 1 second.
3. Method name: drawWeights → randomiseWeights (matching WasmIML API).
4. Dirty-check: setSequenceInputs now skips re-evaluation when inputs
haven't changed (epsilon 1e-5). Avoids 60fps chain evaluation.
5. SwingGroove: swingGrid param now functional — selects 8th note
(period 2), 16th note (period 4), or triplet (period 3) swing grid.
6. IntervalLock base octave: starts from C3 (MIDI 48) instead of C0,
so default output is in a playable range.
|
2026-03-24 11:42:25 +02:00 |
|
w1n5t0n
|
027510a7e4
|
feat(shapeseq): implement Layer 3 — chain builder UI and sequencer core
chain-ui.js (1002 lines): Vertical stack chain builder (pedalboard-
style) with expandable primitive cards, category-colored borders,
drag-to-reorder via pointer events, add primitive palette modal,
NISPS live-param pulsing indicator, generator combine mode toggle.
All styles inline matching dark glass theme.
sequencer.js (304 lines): ShapeSeqEngine orchestrator wiring the
full pipeline: input routing → sequence MLP (16 outputs) → param
mapping → chain evaluation → projection → clock scheduling → C15
bridge. Default chain: Euclidean→ProbGate→PitchWalker→IntervalLock→
VelocityShaper. Tracks active notes to prevent orphaned noteOns.
|
2026-03-24 02:10:04 +02:00 |
|