docs(phase-10): record visualizer tuning landing — eight-knob controls, server-only smoothing, spec shipped
This commit is contained in:
@@ -6,6 +6,20 @@ Newest entries at the top. Group by phase/wave header (mirroring `PLAN.md` / `CM
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Phase 10 — Mix Visualizer Reframe: Waves R1–R4 (Lava tuning + eight-knob controls)
|
||||||
|
|
||||||
|
**Landed:** 2026-06-17 on dev.
|
||||||
|
|
||||||
|
- **What:** A major reframe of the Mix visualizer's effects, controls, and color model, built on the landed WebGL2 Phase 10 renderer infrastructure. Four waves:
|
||||||
|
- **Wave R1** — removed the static noise/frost texture (Daniel: "makes the screen look dirty"); implemented dynamic footer-height clip so the lava stops cleanly above the player bar; redrawn `DDIcons.LavaLamp` to the classic 1970s silhouette (wide truncated-cone base, bulbous→roundedly-pointed teardrop glass body, small cone cap — navy fluid + moss blobs, body `currentColor`).
|
||||||
|
- **Wave R2** — CPU-side per-frame physics step (~16–32 Lagrangian wax blobs: position/velocity/temperature/radius), uploaded as uniforms each frame; `smin` SDF metaball render producing a **flat, coalescing fluid** (not blobs with radial hotspots); energy-coupled dynamics (high heat → many small turbulent bubbles; low heat → fewer large calm masses); 2D elastic collision on both blob↔waveform and blob↔blob pairs; collision strength knob sweeping from genuine soft mush to a high-elasticity upward-and-outward throw; waveform collision always on regardless of heat. Loudness profile smoothed with a **~50 ms envelope-follower at preprocessing only** (`RmsLoudnessAlgorithm.cs`); there is no decode-time smoothing (`smoothDatum` was removed). Existing vault mixes gain the smoothing only after server-side reprocessing — they do not benefit automatically. Ribbon rendered with smootherstep sinusoid reconstruction.
|
||||||
|
- **Wave R3** — replaced HSL `mixHsl`/`vivify` color with OKLab interpolation (structural fix for the cyan excursion artifact); three combined gradient motions: (1) A/B anchor rotation among three theme colors at the gradient-rotation-speed rate; (2) per-segment sinusoidal variation keyed to mix-time so colors travel with the segment as it scrolls; (3) per-bar gradient curve shifts with scroll height (mostly A at bottom → mostly B at top). Static noise texture removed. One source of truth (`DeepDrftPalettes`), no hardcoded hexes.
|
||||||
|
- **Wave R4** — `MixVisualizerControlState` widened from four properties to **eight**: `ScrollSpeed`, `GradientRotationSpeed`, `LavaGravity`, `LavaHeat`, **`FluidAmount`** (replaces the former `BlobDensity`), **`FluidViscosity`** (new — cohesion / coalescence control, the second half of the bubbles split), `CollisionStrength`, `WaveformWidth`. `MixVisualizerControls` now renders **eight** `RadialKnob`s; the `Visible` parameter `@if`-gates the knob band while the container holds a reserved min-height so content below never pops when the lamp toggles. Scroll-speed knob range tuned to 60–110% band; gravity 0–75%; heat +20% at top; width default 50% / range 10–95%. The scaffold's `TopRowCenter` slot (added in the prior reframe) carries the controls in-flow between the back link and lava-lamp toggle.
|
||||||
|
- **Why:** Daniel tested the Phase 10 effects end-to-end and rejected the visual result: lava read as "giant disconnected circles," colors drifted to cyan (HSL arc artifact), waveform and lava read as two unrelated layers. The diagnosis was that these were structural failures of the prior model (too few scripted blobs with no physics; HSL hue-arc through cyan), not tuning misses. The reframe replaced the model with CPU-physics wax blobs + OKLab gradients, fixing both root causes.
|
||||||
|
- **Shape:** `DeepDrftContent/Processors/RmsLoudnessAlgorithm.cs` — ~50 ms envelope-follower smoothing added at preprocessing (server-side only; no decode-time smoothing). `DeepDrftPublic/Interop/visualizer/MixVisualizer.ts` — smootherstep sinusoid ribbon reconstruction; wax-blob physics loop; OKLab gradient; footer-clip; noise texture removed. `DeepDrftPublic.Client/Services/MixVisualizerControlState.cs` — widened to eight properties (`FluidAmount` + `FluidViscosity` replace `BlobDensity`; `WaveformWidth` range/default updated). `DeepDrftPublic.Client/Controls/MixVisualizerControls.razor` — eight `RadialKnob`s, `Visible` parameter gates knob band via `@if` while container holds reserved height. `DeepDrftShared.Client/Common/DDIcons.cs` — `LavaLamp` glyph redrawn. Full design, acceptance criteria, and phasing: `product-notes/phase-10-mix-visualizer-lava-reframe.md`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Phase 11 — Public Site Enhancements (complete — all tracks 11.A–11.H landed 2026-06-16)
|
## Phase 11 — Public Site Enhancements (complete — all tracks 11.A–11.H landed 2026-06-16)
|
||||||
|
|
||||||
### 11.H — release `EntryKey` identifiers (terminal public-site wave)
|
### 11.H — release `EntryKey` identifiers (terminal public-site wave)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ already-shipped **Session detail** hero-overlay composition. This consolidates t
|
|||||||
meta into one overlaid block, frees vertical room for the lava-lamp visualizer behind the content, and
|
meta into one overlaid block, frees vertical room for the lava-lamp visualizer behind the content, and
|
||||||
cleans up the aesthetic so the Mix page reads as a member of the same design family as Sessions.
|
cleans up the aesthetic so the Mix page reads as a member of the same design family as Sessions.
|
||||||
|
|
||||||
The Mix visualizer + seven-knob controls layout landed in the Phase 10 reframe (`TopRowCenter` slot,
|
The Mix visualizer + eight-knob controls layout landed in the Phase 10 reframe (`TopRowCenter` slot,
|
||||||
in-flow controls container between the back link and the lava-lamp) **must be preserved unchanged** —
|
in-flow controls container between the back link and the lava-lamp) **must be preserved unchanged** —
|
||||||
this rework touches only what sits *below* that top row.
|
this rework touches only what sits *below* that top row.
|
||||||
|
|
||||||
@@ -314,7 +314,7 @@ interaction (§7).
|
|||||||
soft-secondary gradient) with metadata still legibly overlaid.
|
soft-secondary gradient) with metadata still legibly overlaid.
|
||||||
5. **Legibility.** The darkening shim keeps overlaid text readable over light and dark cover art, in both
|
5. **Legibility.** The darkening shim keeps overlaid text readable over light and dark cover art, in both
|
||||||
light and dark theme.
|
light and dark theme.
|
||||||
6. **Visualizer/controls preserved.** The lava-lamp toggle still opens the in-flow seven-knob controls
|
6. **Visualizer/controls preserved.** The lava-lamp toggle still opens the in-flow eight-knob controls
|
||||||
container between the back link and the lamp; it still grows in place, still wraps on narrow widths,
|
container between the back link and the lamp; it still grows in place, still wraps on narrow widths,
|
||||||
and the lava-lamp glyph still swaps filled/outline. No regression to the Phase 10 layout.
|
and the lava-lamp glyph still swaps filled/outline. No regression to the Phase 10 layout.
|
||||||
7. **More canvas for the visualizer.** The content block below the controls row is shorter than before
|
7. **More canvas for the visualizer.** The content block below the controls row is shorter than before
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Mix Visualizer — Phase 10 Reframe (Lava) — Design Spec
|
# Mix Visualizer — Phase 10 Reframe (Lava) — Design Spec
|
||||||
|
|
||||||
Status: **design-complete, implementation-ready.** Author: product-designer. Date: 2026-06-16.
|
Status: **shipped** (Waves R1–R4 merged to dev, 2026-06-17). Author: product-designer. Date: 2026-06-16.
|
||||||
**No code has been written by this doc.**
|
See `COMPLETED.md` for the completion record.
|
||||||
|
|
||||||
This is a **major reframe of the Mix visualizer's effects layer, controls, and color model**, folded
|
This is a **major reframe of the Mix visualizer's effects layer, controls, and color model**, folded
|
||||||
**under the still-open Phase 10** (the WebGL2 renderer) as a **reframe wave-set (Waves R1–R4)** —
|
**under the still-open Phase 10** (the WebGL2 renderer) as a **reframe wave-set (Waves R1–R4)** —
|
||||||
|
|||||||
Reference in New Issue
Block a user