Commit Graph

640 Commits

Author SHA1 Message Date
L'électron rare 2908dc4c28 feat: 28 matrix presets, 22 voices x 64 bars
CI build oscope-of / build-check (push) Has been cancelled
Rewrite the 16 classic presets and add 12 new (electro/EBM/
synthwave, DnB/jungle/footwork, melodic techno/progressive) as
22-voice x 64-bar arrangements with section arcs (intro/build/
rise/drop/plateau/break/outro) and per-preset machine kits
(909/808/303/juno/supersaw/minimoog/dx7/sp1200...). The generator
now emits the Event (grid+instruments) format. All load + valid.
2026-06-29 00:51:00 +02:00
L'électron rare 042da7faa0 feat: matrix v2 - 22 voices x 64 bars
CI build oscope-of / build-check (push) Has been cancelled
Wire 6 new tracks (melody, chord, fx, snare, crash, shaker) into
~matVoices and extend the grid to 64 bars. Per-voice dicts (mod
targets, neutral cut, instrument choices) gain the new voices.
~matLoadFile auto-migrates any legacy grid (tile bars, pad voices)
so the old 16x32 presets still load. Web grid/mixer/timeline +
handlers de-hardcode 16/32/512 to MATRIX_VOICES.length/MATRIX_BARS.
Headless test assertions made dimension-dynamic.
2026-06-29 00:42:28 +02:00
L'électron rare 7b458b8b58 feat: voices for new matrix tracks
CI build oscope-of / build-check (push) Has been cancelled
Add synthdefs (lp_snare, lp_crash, lp_shaker, lp_fx) and base
Pdefs (lp_melody, lp_chord, lp_fx, lp_snare, lp_crash, lp_shaker)
for 6 new matrix tracks. Foundation only -- not yet wired into
matVoices/the grid (the 22-voice x 64-bar core change + preset
migration + web overhaul comes next).
2026-06-29 00:30:04 +02:00
L'électron rare dc766fe896 feat: more classic machine emulations
CI build oscope-of / build-check (push) Has been cancelled
Web-researched the iconic machines per style and added 7 more:
Minimoog (ladder bass/lead), Roland JP-8000 supersaw (trance/
progressive), Juno-106 (chorus pad), Yamaha DX7 (FM), E-mu
SP-1200 (12-bit drum crunch), Akai sampler (lo-fi grit) and
Roland System-100. Standard UGens only (MoogFF/Latch/DelayC).
Wired per voice into the choices + web mirror; all kit/test
instrument targets kept in the choice lists.
2026-06-29 00:20:34 +02:00
clement 25ce6e0139 docs: keep live row instrument select in plan 2026-06-29 00:15:26 +02:00
L'électron rare c535367817 feat: classic-machine instrument emulations
CI build oscope-of / build-check (push) Has been cancelled
Add faithful-ish TR-909 (kick/clap/hat/ride), TR-808 (kick/clap/
hat/cowbell), TB-303 (acid), Korg MS-20 and Roland SH-101 as extra
matrix instrument choices. All note-terminating (perc+doneAction
or gated ASR), Pbind-safe, with pan + reverb send; standard UGens
only. Wired into ~matInstChoices and the web mirror per voice.
2026-06-29 00:08:25 +02:00
clement a87044f698 docs: per-color pattern implementation plan 2026-06-29 00:03:53 +02:00
clement be02a71bde docs: per-color pattern restructure design 2026-06-29 00:01:24 +02:00
clement 74e43d6915 chore: remove dead css and polish
Remove dead per-row .minst/.mmod CSS rules (moved to modal).
Add self-healing guard in renderPoses for malformed localStorage.
2026-06-28 23:55:54 +02:00
clement 8c7a1aee00 merge: reconcile per-instrument editor with main
Context: main added a richer capture-modulation palette (more mod sources
and targets in matrix.scd, control.js, launchpad) in parallel with the
complete per-instrument editor build. Both touch the mod/matrix surfaces.

Approach: git auto-merged cleanly (disjoint hunks); validated semantically.

Changes:
- matrix.scd unions the new mod-source/target palette with the step-sequence
  engine, pose bindings, and colorDefs steps.
- control.js: the modal Assign pane iterates the enriched MATRIX_MOD_SOURCES,
  so the new sources appear automatically; row consolidation and the step and
  pose tabs are intact.

Impact: the per-instrument editor (instrument, colors, 16-step per-color
sequencer, capture assignment with the richer palette, pose bindings) coexists
with main's mod palette. SC test PASS, P:0 B:0, node --check OK.
2026-06-28 23:51:18 +02:00
clement 2d64e8d6aa fix: clamp step degree and gate drum freq 2026-06-28 23:47:58 +02:00
L'électron rare 68e5c5c8a8 feat: richer matrix capture-modulation palette
CI build oscope-of / build-check (push) Has been cancelled
Add horizontal position sources (bodyX, lHandX, rHandX) and make
pan + a per-voice reverb send (rev) modulatable on every voice,
plus cutoff on perc and reese. All lp_ synthdefs gain pan + rev
(send to the reverb bus, nil-safe); perc/reese gain a cutoff
control that keeps their freq-tracking timbre when unmodulated.
matrix.scd mod sources/targets/neutral-cut + a rev modPairs
branch (in the color-editor overlay); web mod mirror updated.
2026-06-28 23:42:29 +02:00
clement 8e6434cf2a feat: web matrix pose bindings tab 2026-06-28 23:35:28 +02:00
clement 25acb50e59 feat: web matrix step sequencer grid 2026-06-28 23:28:24 +02:00
clement d1c9485904 feat: unified per-instrument editor modal
Consolidate per-row instrument select and mod controls into a
tabbed modal (Instrument, Colors, Sequence, Assign, Poses tabs).
Remove .minst/.mmod/.minst-head/.mmod-head from matrix rows;
.minst-edit stays as modal trigger. WS echo handlers repointed
to modal elements (#cd-inst-sel, .cd-mod-src/tgt/dep), updating
JS state regardless of modal visibility. Steps/poses panes are
empty stubs, requesting /matrix/steps/get and /matrix/poses/get
on open (wired in Tasks 6-7).
2026-06-28 23:20:22 +02:00
clement 74b1ccfa1a fix: guard pose fire and test gate
Adds nil-guard to ~matPoseFire's per-voice binding loop to prevent
raised when ~matPoseBindings[vi] is nil. Adds gate binding test in
test_matrix.scd to verify \gate action is stored correctly.
2026-06-28 23:14:51 +02:00
clement 07268dd8f3 feat: matrix pose bindings and fire 2026-06-28 23:09:27 +02:00
clement 89d201b068 feat: persist matrix step sequences 2026-06-28 22:58:46 +02:00
clement 3d38b1006e fix: live steps read and stepped glow 2026-06-28 22:48:16 +02:00
clement 296dc99435 feat: matrix per-color step sequence engine 2026-06-28 22:41:12 +02:00
clement 39ac9406a8 fix: guard matrix steps push bounds 2026-06-28 22:36:39 +02:00
clement 8f6886f44e docs: fix step push size in plan 2026-06-28 22:32:52 +02:00
clement 9f7f8558d4 feat: matrix per-color step state and push 2026-06-28 22:31:44 +02:00
clement 3eb6426f61 docs: complete per-instrument editor plan 2026-06-28 22:24:58 +02:00
clement 8a3e7fa5cb Merge branch 'feat/matrix-followups' into feat/matrix-instruments 2026-06-28 22:18:11 +02:00
clement 162eab3d2e docs: complete per-instrument editor design 2026-06-28 22:16:09 +02:00
clement 2a03a40270 fix: matrix follow-up polish
- pass base into matVariationOverlay (no double matBaseFor call)
- add nil fallback (? 1.0) on spec[\amp] in mod-amp Pfunc
- push colorDefs for all voices after matLoadFile
- guard Pdef.play to fire once in matAudition routine
- beforeunload stops audition if active (tab close)
- add color-1 identity assertion to test_matrix.scd
2026-06-28 22:00:20 +02:00
clement 0edaf7b2ba Merge commit '05f16aa' into feat/matrix-instruments 2026-06-28 21:53:39 +02:00
clement 05f16aa886 merge: reconcile color editor with main
Context: main advanced in parallel (octave->freqRatio variation rework,
drone-instrument free fix, mixer/loop/seek) while the per-instrument
color-editor feature was built on an isolated branch. Both heavily edited
~matVariation, producing a semantic conflict.

Approach: keep the color-editor's per-voice editable ~matColorDefs as the
variation source, but adopt main's freq-multiply scheme for octave colors
so editable octaves transpose voices that compute \freq via Pfunc.

Changes:
- ~matVariationOverlay drops \octave; derives freqRatio = 2**octave and adds
  a pitched-only \freq multiply, appended with instPair, cdPairs and modPairs
  (mod last so live capture overrides static color cutoff/pan).
- ~matVariation reads ~matColorDefs[vi][color] (per-voice editable) instead
  of main's hardcoded freqRatio table.
- test_matrix.scd unions the color-editor and loop-region test blocks.
- control.js/control.css/index.html union the mixer/timeline and color-editor
  modal additions (auto-merged).

Impact: per-voice editable colors (variation, sound, audition) coexist with
main's freqRatio transpose, per-voice mixer volume, loop/seek, presets, glow,
instrument selection and capture-effect. SC test PASS, P:0 B:0, node --check OK.
2026-06-28 21:51:22 +02:00
clement d11addea4a fix: clear color instrument via string default 2026-06-28 21:45:26 +02:00
clement 532b23735c docs: coerce color inst string in plan 2026-06-28 21:44:02 +02:00
L'électron rare 684ea5d4d3 fix: matrix drops never-freeing drone instruments
CI build oscope-of / build-check (push) Has been cancelled
The instrument-override / kit feature offered continuous \do_
drones (do_drone, do_body_drone, do_body_gran, do_weather,
do_geo) that have no gate and no doneAction. Driven per-note by
the Pbind they never free and pile up forever (observed 5+
do_body_drone stacked, surviving /matrix/stop).

Drop them from ~matInstChoices, ~matKits and the web mirror;
substitute gated \lp_ sustained voices. ~matApplyInstrument and
~matLoadFile validate against the choices, so saved presets and
kits referencing the drones now fall back to the default voice.
2026-06-28 21:39:56 +02:00
clement 96ea70a645 fix: color editor loop and header align
Extract renderColorDefRows so WS handler never triggers
colordefs/get; add minst-edit-head spacer (22px); clear
cd-audition .on class on modal close.
2026-06-28 21:37:44 +02:00
clement f5527369ca docs: fix color editor loop and header in plan 2026-06-28 21:36:28 +02:00
clement b90d0ad802 feat: web matrix color editor modal 2026-06-28 21:29:32 +02:00
clement a95db5efd7 feat: persist matrix color defs in presets 2026-06-28 21:24:57 +02:00
clement a17e417fa3 feat: matrix color audition loop 2026-06-28 21:19:23 +02:00
clement 51f5bff1bf fix: color def echo uses plural push 2026-06-28 21:16:26 +02:00
L'électron rare ce46a27903 feat: concert launcher boots matrix mode
CI build oscope-of / build-check (push) Has been cancelled
Repurpose AV-Live Concert.app to launch the matrix arranger:
boot SC with MATRIX_ONLY, keep the pose pipeline (feeds the
/pose/* capture-modulation sources), drop the morceau button,
and load a preset (MATRIX_PRESET, default techno_drive) + start
the playhead instead of switching to the concert scene.
2026-06-28 21:16:00 +02:00
clement b154d1cbd4 feat: matrix color def set and push 2026-06-28 21:04:44 +02:00
L'électron rare 7675c2ac11 fix: matrix octave colors and sustained lead
CI build oscope-of / build-check (push) Has been cancelled
Matrix colors 3/5 pushed a dead \octave key; every pitched Pdef
sets \freq directly so the transposition was inaudible. Replace
with a base-\freq multiplier (x2/x0.5) over the Pchain, gated to
pitched voices so drums and instrument overrides keep their pitch.

Add a dedicated sustained \lp_lead SynthDef (gated ASR) and point
Pdef(\lp_lead) at it with \legato so lead notes hold; arp and stab
stay on \lp_pluck.
2026-06-28 21:00:47 +02:00
clement daeb1e6c1e feat: per-voice editable matrix color defs 2026-06-28 20:53:43 +02:00
clement a6dce8e712 docs: matrix color editor implementation plan 2026-06-28 20:42:04 +02:00
clement 1df8b89ac3 merge: reconcile instrument and capture with main
Merge main (presets, loop/seek, per-voice mixer) into the SDD branch.
matVariation combines main per-voice volume amp with the instPair and
modPairs spread; volume is propagated into the mod amp formula. Both
OSCdef sets (mod/capture + loop/seek) and both test blocks are kept.
2026-06-28 20:35:07 +02:00
clement 210a224e68 fix: add matrix mod header spacer
Add .mmod-head spacer to header row to align with voice row's
sticky-right .mmod block, matching .minst-head pattern on left.
Width: 192px (64+64+56 children widths + 4px padding-left).
2026-06-28 20:23:31 +02:00
clement a01d09287b merge: matrix mixer + per-voice volume fix
CI build oscope-of / build-check (push) Has been cancelled
Bring the per-instrument mixer (web) and the matrix \amp respecting
per-voice volume (matrix.scd) from origin/main 6a14b3b. Disjoint from
local commits, clean auto-merge.
2026-06-28 20:16:51 +02:00
clement 8bb1b778ed feat: web matrix capture mod controls
Add per-voice mod controls (source select + target select + depth range)
sticky-right in each matrix row. WS handlers for /matrix/mod (single)
and /matrix/mods (bulk 48-flat). Persist mod state in localStorage
alongside grid/inst. MATRIX_MOD_TARGETS mirrors SC ~matModTargets.
2026-06-28 20:16:12 +02:00
L'électron rare 6a14b3b67d feat: web matrix mixer per-instrument strips
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 20:10:30 +02:00
clement fd60783047 feat: persist matrix mods in presets 2026-06-28 20:09:35 +02:00
L'électron rare 29e0df3378 fix: matrix variations respect per-voice volume
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 20:07:06 +02:00