memlnaut-nisps/playground/js/shapeseq
w1n5t0n aec58537db feat(pattern): add midiNote field + trigger-aware merge
Replace the pitch*127 encoding hack with a dedicated midiNote field on
pattern steps. IntervalLock now writes integer MIDI notes to step.midiNote
while preserving the original [0,1] pitch for other consumers. The clock
and sequencer bridge pass midiNote through the event pipeline.

Also reworks mergePatterns to be trigger-aware: when only one generator
fires at a step, use its values directly instead of averaging with the
other generator's defaults.
2026-04-06 23:28:01 +01:00
..
tests feat(pattern): add midiNote field + trigger-aware merge 2026-04-06 23:28:01 +01:00
chain-ui.js feat(shapeseq): implement Layer 3 — chain builder UI and sequencer core 2026-03-24 02:10:04 +02:00
chain.js feat(shapeseq): implement Layer 2 — all 8 primitives and chain runner 2026-03-24 02:06:17 +02:00
clock.js feat(pattern): add midiNote field + trigger-aware merge 2026-04-06 23:28:01 +01:00
event-bus.js refactor(event-bus): extract to shared module 2026-04-06 23:18:47 +01:00
param-map.js feat(shapeseq): implement Layer 0 foundation modules 2026-03-24 01:57:59 +02:00
pattern.js feat(pattern): add midiNote field + trigger-aware merge 2026-04-06 23:28:01 +01:00
primitive.js feat(shapeseq): implement Layer 1 modules 2026-03-24 02:02:01 +02:00
primitives.js feat(pattern): add midiNote field + trigger-aware merge 2026-04-06 23:28:01 +01:00
prng.js feat(shapeseq): implement Layer 0 foundation modules 2026-03-24 01:57:59 +02:00
projection.js fix(shapeseq): fix 6 bugs found in fresh-eyes review 2026-03-24 11:42:25 +02:00
seq-iml.js feat(shapeseq): implement Layer 0 foundation modules 2026-03-24 01:57:59 +02:00
sequencer.js feat(pattern): add midiNote field + trigger-aware merge 2026-04-06 23:28:01 +01:00
step-viz.js feat(shapeseq): implement Layer 1 modules 2026-03-24 02:02:01 +02:00