876 Commits

Author SHA1 Message Date
clement b8098de39e merge: matrix-only boot gate
CI build oscope-of / build-check (push) Has been cancelled
Bring the MATRIX_ONLY boot gate (origin/main 46c8823) into the feature
branch. With MATRIX_ONLY set, boot skips the concert/body-play scene so
only the matrix arranger plays. Clean auto-merge.
2026-06-28 19:04:26 +02:00
L'électron rare 46c88236f6 feat: matrix-only boot via MATRIX_ONLY env
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 19:03:38 +02:00
clement 2bfa846631 docs: matrix instrument + capture-effect plans 2026-06-28 19:03:18 +02:00
clement 128bc3f1b4 merge: creative matrix presets
Bring the 16 full-kit creative matrix presets (origin/main 6482baf)
into feat/matrix-instruments alongside the capture-effect design doc.
Disjoint changes, clean auto-merge. Loader reads the preset dir live,
so the new presets are listable without an SC reboot.
2026-06-28 18:58:53 +02:00
L'électron rare 6482baf22c feat: creative full-kit matrix presets
CI build oscope-of / build-check (push) Has been cancelled
Replace the 14 sparse starter grids with 16 hand-authored arrangements
that use all 16 voices and evolve over the 32 bars via sections
(intro / build / drop / break / final) with fills and accents.

- Styles: techno_drive, acid_journey, trance_euphoria, psytrance_roll,
  detroit_soul, industrial_grind, hardcore_punk, dub_techno, breakbeat,
  minimal_hypno, ambient_intro, peak_drop, rave_stab, tribal_perc,
  bass_science, melodic_builder.
- Every voice featured across the set (ride/rim/tom/reese/bells/sweep
  now used, not empty); peak_drop activates the full kit on the drop.
- generate_presets.py reworked with a sections DSL; prints a voice-
  coverage report (16/16).
2026-06-28 18:54:05 +02:00
clement cff42d0863 docs: matrix capture-effect modulation design 2026-06-28 18:49:50 +02:00
clement d5a1de0938 merge: persistence presets into matrix glow
CI build oscope-of / build-check (push) Has been cancelled
Bring matrix file persistence + 14 morceau-inspired presets (origin/main
16adac4) into macm1 main which had the audio-reactive glow + an extra
matrix-instrument-selection design doc. Disjoint changes, clean auto-merge.

Result: glow + persistence + presets + save/load UI all together.
2026-06-28 18:45:17 +02:00
L'électron rare 16adac4bec merge: matrix glow with persistence presets
CI build oscope-of / build-check (push) Has been cancelled
Reconcile two parallel matrix features built since 3ce4c38:
- macm1 main: matrix audio-reactive glow (/matrix/trig, triggerGlow,
  matEmitTrig, --glow CSS var, matrix_glow.js).
- gitea main: matrix file persistence + 14 morceau-inspired presets
  (/matrix/save|load|list, web save/load UI).

Conflict resolution kept BOTH features:
- control.js: /matrix/list + /matrix/grid handlers AND /matrix/trig.
- control.css: glow-enhanced .mcell.playing AND persistence-bar styles.
- test_matrix.scd: persistence round-trip AND matEmitTrig/matGlow tests.

Verified: SC headless test_matrix TEST PASS (both suites), matrix.scd
P:0 B:0, node --check control.js OK.
2026-06-28 18:41:45 +02:00
clement b65d16843e docs: matrix instrument selection design 2026-06-28 18:39:20 +02:00
L'électron rare b141127a13 feat: matrix presets inspired by morceaux
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 18:32:42 +02:00
L'électron rare c81f3d8587 feat: web matrix save load ui 2026-06-28 18:31:11 +02:00
L'électron rare 2ed077bbf5 feat: matrix save load presets in sc
CI build oscope-of / build-check (push) Has been cancelled
Add durable file-based persistence for the 16x32 arrangement matrix:
~matSave / ~matLoad / ~matNames helpers with OSC routes /matrix/save,
/matrix/load, /matrix/list; ~matGridPush sends full 512-int grid dump
on load; preset dir scaffolded.  Root-causes fixed during development:
String.== is identity-based in SC (use Symbol storage + \sym literals),
String.copyFromTo -> copyRange, Pipe/pathMatch unreliable headless.
Headless test round-trip: save -> clear -> load -> verify.
2026-06-28 18:24:22 +02:00
clement 9c8c271113 test: cover matGlow path through matVariation 2026-06-28 18:21:06 +02:00
clement b80ba66d4c refactor: use MATRIX_VOICES.length in glow loop 2026-06-28 18:14:18 +02:00
clement 6c7cd45ecd feat: render audio-reactive glow on matrix grid 2026-06-28 18:09:09 +02:00
clement 0069b82875 test: align glow decay test name with bound 2026-06-28 18:06:46 +02:00
clement c483977c34 feat: add matrix glow decay helper 2026-06-28 18:03:12 +02:00
clement f9d64cd7a5 feat: emit per-note matrix trigger for glow 2026-06-28 17:56:58 +02:00
clement df2bceca74 docs: matrix glow implementation plan 2026-06-28 17:53:09 +02:00
clement a484ab943c docs: matrix audio-reactive glow design 2026-06-28 17:47:32 +02:00
clement 3ce4c38f1c Merge remote-tracking branch 'origin/main' into refactor/sc-finish
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 17:13:21 +02:00
clement 7ca9fd98ff docs: namespace, OSC registry, boot modes 2026-06-28 17:10:30 +02:00
L'électron rare 6843e5aafc fix: matrix re-source only on color change
CI build oscope-of / build-check (push) Has been cancelled
Track last-applied color per voice in ~matLastColor; ~matApplyBar
skips Pdef re-source and re-play when color is unchanged and non-zero,
eliminating envelope re-attacks on sustaining pads/subs/reese/sweeps.
~matStop resets ~matLastColor to -1 so subsequent play re-applies all.
~matVariation now returns nil for color 0 instead of the base pattern.
loadMatState validates each cell is an integer 0..6.
2026-06-28 17:07:04 +02:00
clement 015374af38 fix: keep shared clock alive on scene stop 2026-06-28 17:00:13 +02:00
L'électron rare 2d927107f1 feat: web matrix arranger tab
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 16:55:59 +02:00
L'électron rare ee7f349359 feat: load matrix after sections
CI build oscope-of / build-check (push) Has been cancelled
Adds step 6i to data_only/boot.scd: loads matrix.scd after
sections.scd, matching the additive load pattern used by every
other data_only feature file.
2026-06-28 16:48:40 +02:00
L'électron rare 2250fe347f feat: matrix arranger engine in sc
Adds sound_algo/data_only/matrix.scd: a 16-voice x 32-bar
song-arrangement matrix with a bar-by-bar playhead Routine.

- Reads base Pdefs from launchpad.scd (additive, does NOT modify them)
- Colors 1-6 map to Pchain overlays: stretch (half/double-time),
  octave shift, amp accent; color 0 = Pdef.stop
- ~matBaseFor captures each voice's source once (lazy cache)
- ~matVariation, ~matApplyBar, ~matPlay, ~matStop, ~matSetCell,
  ~matClear exposed as environment functions
- OSCdefs /matrix/{cell,play,stop,clear} with \mat_* unique keys
- Nil-guarded, idempotent reload; TouchOSC feedback via ~toscSend

Adds test/test_matrix.scd: headless sclang assertions (no server
boot), verifies API wiring, cell write, Pchain return type,
out-of-range guard, and ~matStop no-raise.
2026-06-28 16:48:36 +02:00
clement 53f9111ed8 refactor: scenes and morceaux use setTempo 2026-06-28 16:45:10 +02:00
clement fe7b25e536 refactor: route data-only tempo to setTempo 2026-06-28 16:42:16 +02:00
clement 8d95f3e455 refactor: route live tempo writers to setTempo 2026-06-28 16:39:53 +02:00
clement e9022fab7d refactor: alias secondary clocks to default 2026-06-28 16:37:17 +02:00
clement 222c087610 fix: keep engine boot clean, test owns try
Remove the try-catch wrapper added around s.waitForBoot in
sound_algo/engine.scd — it swallowed real boot errors in
production. Move boot-failure tolerance into
sound_algo/tests/test_tempo.scd instead, where it belongs.
data_only/engine.scd was not affected (no wrapper added).
2026-06-28 16:34:40 +02:00
clement 141ed0e122 feat: single coordinated setTempo 2026-06-28 16:31:26 +02:00
L'électron rare 2f4a80ce2b fix: relay scene feedback to web clients
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 16:17:36 +02:00
L'électron rare 495c5680bf feat: tosc sections page for song build
CI build oscope-of / build-check (push) Has been cancelled
Add SECTIONS (page 4): 8 slot launch+save buttons, PREV/NEXT nav,
/scene/state receive on the GROUP so sections.lua colors slots
(green=current, blue=filled, dark=empty). Update pager to 4 pages,
add 4 new tests (26 pass), rebuild dist/av-live-control.tosc.
2026-06-28 16:16:14 +02:00
clement 90ded48a57 docs: lot C clocks plan 2026-06-28 16:15:04 +02:00
clement 62957f09d5 docs: lot C clocks unification design 2026-06-28 16:12:00 +02:00
L'électron rare 7b90acf80e feat: web sections tab for live song build
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 16:10:02 +02:00
L'électron rare 1990fc692f fix: guard scene clear bounds and lparm nil
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 16:05:55 +02:00
clement 17d78127f6 refactor: fpResolve delegates to noteFor 2026-06-28 15:57:37 +02:00
L'électron rare d7c1049661 fix: valueArray for melody state echo
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 15:56:42 +02:00
L'électron rare ab88b0f6df feat: load sections after touchosc feedback
Adds boot step 6h: sections.scd loaded after touchosc_feedback.scd
so ~toscSend is available. Net-zero paren balance change (P:-8 B:0).
2026-06-28 15:56:42 +02:00
L'électron rare ca21a4216d feat: live section scene slots in sc
8 snapshot slots (clips armed + seq presets + harmony).
Quantized recall via ~lpArm diff, next/prev chaining,
/scene/state feedback via ~toscSend. Headless test passes.
2026-06-28 15:56:42 +02:00
clement 562ac45d13 refactor: lpNote delegates to noteFor 2026-06-28 15:54:28 +02:00
clement 2777243d5c refactor: ccNote delegates to noteFor 2026-06-28 15:52:31 +02:00
clement 77249049c9 feat: load note helpers in all boot paths 2026-06-28 15:48:54 +02:00
clement fab35a5520 feat: unified note/scale source of truth 2026-06-28 15:43:57 +02:00
clement 2aac8f57f6 docs: lot A plan, unified note helpers 2026-06-28 15:26:34 +02:00
clement 9ad0ddda13 docs: SC harmonization refactor master design
Decompose into 6 incremental lots (A-F), live concert stays
playable. Lot A (unified music helpers) detailed first.
2026-06-28 15:22:21 +02:00
clement bb11311720 Merge remote-tracking branch 'origin/main'
CI build oscope-of / build-check (push) Has been cancelled
2026-06-28 15:18:44 +02:00