# Sound/Tidal

ParVagues' main livecoding workspace.

## Layout

- `live/` — current set material; per-collab subdirs (`raph/`, `micka/`, `cookie/`, `baba/`, `ccc/`, `nova/`, `rhadamanthe/`)
- `copycat/` — algoraoke (cover/remix) sketches
- `tools/` — perf scripts, sample analyzers (analyze_samples, shipowiz, fan_check)
- `backlog.md` — track backlog, setlists, gig prep notes
- `perf.sh` — performance-mode optimizer (CPU governor, etc.)
- `test.tidal` — scratchpad
- `armada/` — media/marketing toolbox (catalog, distribution, diffusion, gigs); see `armada/README.md`

## Sister projects

- **`../tidal-ears/`** — audio analysis + **post-prod mastering** tooling
  (Python). See `../tidal-ears/MASTERING.md` for the canonical mastering
  recipe; `tidal-ears master {analyze,boundaries,mix}` is the workflow.
- `../Ardour/Tidal Multi/` — single Ardour session, records all orbits as stems
- `../Prod/` — Audacity projects + rendered masters
- `../../Tools/pulsar-parvagues-hud/` — Pulsar HUD package

## Conventions

- **One track = one standalone `.tidal` file** (e.g. `live/collab/raph/punkachien.tidal`).
  There is no "set file" — a live set is performed by loading per-track files in sequence.
  To find a track's score, look for its own `.tidal`; it always exists.
- The `.tidal` file lists a track's samples/synths and `dN` → orbit mapping, but **never
  infer a sound's role/register/pitch from the name or code** — validate by analysis.
  **EDA on stems (spectral centroid, fundamental, band energy, level, time-activity) is a
  required first step of mastering.** (e.g. `meth_bass` is a noisy wobble, not a sub.)
- Channel/orbit mapping documented in `live/` patterns; LCXL CC map in memory
- Stems exported from Ardour as `Montreuil26_Tidal 01.wav` style (one per orbit)
- Visuals composited in post; OBS captures clean code only
- Rhadamanthe's master-chain notes: `live/collab/rhadamanthe/layering.tidal`
- **L'Armada — document as you go:** every achieved task gets a lean log entry in
  `armada/tasks/` (format in `armada/tasks/README.md`). This salvage op is a
  documentary in disguise — the logs are source material for blog posts & videos.
- **Be a good archivist of PLN's ear-feedback:** carefully capture every reaction to
  recordings / performances / samples / transitions / mistakes (with track + timecode)
  in `armada/tide-table/performance_notes.md`. This corpus feeds better sampling,
  effect choices, and auto-mastering heuristics — log even small reactions, durably.
- Catalog distinction: a **gig/live-set** (CosmicFest, Opal…) is not a **track**;
  a gig's `tracks.json` enumerates the tracks it contains.
- **Mastering ≠ metadata. Never invent gig metadata.** Audio/mastering work references
  takes by **Take-ID + date** only; gig metadata (venue, set title, poster, lineup) is
  canonical in `../../Web/www/next/content/lives/{year}/{slug}.md` + `/tracks.json`.
  Verify there and cite the path — don't copy strings from intermediate scripts (e.g.
  `split_bandcamp.py`'s ALBUM was wrong). If a fact isn't in the canonical source, ask.

## Design system (armada tools)

The armada UIs share one design language — **the Ship's Bridge**. Canonical:
`armada/PRODUCT.md` (strategic: register=product, principles) + `armada/DESIGN.md`
(visual: Google-Stitch format — brand magenta reserved, role-family colors for orbits,
lifecycle status, Geist + Geist-Mono). Managed with the **impeccable** skill
(`.claude/skills/impeccable`; run its commands from `armada/`). Stack for new UI =
**Vite + React + TS + Tailwind + shadcn** in `armada/ui/` (Node ≥18 — `nvm use 22`),
served static by `armada/serve.py` (LAN, Range-capable, for phone audition).

## See also

`../tidal-ears/CLAUDE.md` for the analysis/post-prod tooling docs.
