# Performance & recording notes — the archivist's log

Durable capture of **PLN's ear-feedback** on recordings, performances, samples,
transitions, mistakes and fixes. This is source material for better sampling,
effect choices, and auto-mastering heuristics — write down everything, even
small reactions. One section per take/performance; cite track + timecode.

> Convention (see project CLAUDE.md): every listening pass that yields a reaction
> gets logged here. Times are in the take's proxy/stem seconds unless noted.

---

## Take89 — Montreuil Algorave V3 "Mai Floral", 2026-05-22 (15 tracks)

> Gig metadata (venue **Les Nouveaux Sauvages, Montreuil**, org @a_f_alfl, visuals
> @shipow, poster, setlist) is canonical in `Work/Web/www/next/content/lives/2026/
> montreuil-algorave.md` + `/tracks.json` — **do not duplicate or invent here.**
> Mastering artifacts reference take-id + date only. (split_bandcamp.py's
> `ALBUM="…La Cour des Lézards"` is WRONG → fix in metadata quest.)

Boundaries (machine-readable, merged + conflict-resolved):
`tide-table/boundaries_take89_validated.json`. Calibration: proxy ≈ GT_master − 3.

### Listening pass 2026-06-05 — RESPLIT review, phone + Sony WH-1000XM5

> PLN auditioned ~half the Montreuil resplit masters on **mobile + WH-1000XM5**
> (phone playback = real mono/translation + small-driver test). Track numbers per
> canonical setlist (montreuil-algorave/tracks.json). Times = within-resplit-track.
> These drive #26 (resplit crossfade bleed), #31 (edge-detection), and a NEW
> cross-track-consistency concern (kick level, high-end harshness).

- **T2 Piment Brésilien** — *"stylé!"* BUT *"les aigus un peu trop perçants sur mobile
  quand il monte vraiment high le piment comme les keys, surtout quand les effets sont
  forts."* → **high-end harshness on mobile** when the lead/keys climb high + FX heavy.
  Fix candidate: dynamic high-shelf / de-ess tied to FX intensity; check 4–8kHz on a
  mobile-sim curve. (Tonal-balance instrument, mono/small-driver target.)
- **Boundary bleed (~T2→T3?)** — *"le début de la suivante mal cut genre 5s trop tôt?
  On entend le changement de basse AVANT le cut!"* → split point ~5s too early; the
  **next track's bass change is audible in the current track's tail**. Classic
  crossfade/boundary bleed (#26). Likely Piment→Take5Drops; confirm by ear.
- **T3 Take 5 Drops → T4 Super Sunny Side Up** — *"transition un peu abrupte: silence à
  la fin de la 3 puis 4 qui démarre direct?"* → **hard silence→onset**, no overlap.
  Needs a short crossfade or trim-to-groove rather than dead-silence butt-join.
- **T4 Super Sunny Side Up** — *"se terminerait à 0400, ou à 0409 sur un petit fade —
  moins laborieux la fin."* → **end is laborious**; trim to **4:00**, or **4:09 w/ a
  small fade**. (Outro edge-detection #31.)
- **T5 W.I.P. W.A.P.**:
  - *"commence sur 1s+ de break puis vocal? Commence direct au vocal voyons!"* →
    **trim the ~1s break intro, start on the vocal** (#31 intro-trim).
  - *"silence bizarre de 0329 à 0331 — investigate?"* → **~2s odd silence/dropout @
    3:29–3:31**; investigate source (gap in stems? mute glitch?).
  - *"ensuite c'est le bordel jusqu'à 0342 où on commence à crossfade 'Plosive."* →
    messy tail 3:31–3:42. **Proposal: crossfade directly ~3:26 → 3:45+ into 'Plosive.**
    PLN wants to **test fragments** of this transition. 😁
- **T6 'Plosive**:
  - *"au casque Sony WH5, le kick est trop fort comparé aux basses et même aux éléments
    mélodiques — ptet trop 'loud' comparé au mix du kick dans les autres pistes."* →
    **kick level inconsistent across the set** (Plosive kick hotter than others).
    Cross-track kick-gain matching needed (set-relative mastering, not per-track only).
  - *"2:59 'Plosive ends, next sound is Bogdan **Jeudrill** sample — bad cut."* → the
    resplit of 'Plosive (T6) **runs into T7 Jeudi Drill** (jeudrill.tidal, Bogdan
    sampled voice). Boundary ~5–10s late / includes next-track head (#26).

**Cross-cutting takeaways (feed the engines):**
1. **Boundaries are still bleeding both ways** — too-early (bass pre-echo) and too-late
   (next-track head). Per-orbit timbral novelty (#25) + ear-gate, not level alone.
2. **High-end harshness is mobile-specific** → need a **mobile/mono translation check**
   in the tonal instrument, not just LUFS/TP.
3. **Kick loudness must be matched ACROSS tracks** (set-relative), a new dimension on
   top of per-track −14.
4. PLN wants a **fragment-test loop** for transitions (esp. WAP→'Plosive crossfade).

### Sample / sound identity (measured + PLN)
- **PunkAChien**: core riff = **cpluck** (orbit-05, A♯/G♯) octave-dropped — the
  bass/riff spine, plays nearly throughout. **acid** = vec1_acid (orbit-04, D2),
  front-half + a build. **moog** (orbit-09) = the deep mononote **sub**, drop-only
  (enters ~242–281s of the single). `meth_bass` (orbit-06) **silent this take**
  (named like a wobble monster, plays zero seconds — verify by ear, not by name).
- **Piment brésilien**: has an **iconic g-funk "piment" sample** (entry ~6:00) —
  signature, recognisable. Outro carries a **d10 ambient** tail that lingers.
- **You My Sunshine**: built entirely on the **`no_sunshine`** sample ("Ain't No
  Sunshine" — the "I know I know" vocal on d5, guitar/chops on d7/d9/d11).
- **Take 5 Drops**: marimba/melodic riff is the recognisable entry.

### Transitions & live mistakes (per PLN, by ear)
- **→ Jeudi Drill (30:09→30:22)**: *bad live transition* — "I changed tracks badly
  this time": a weird silence then hesitant first seconds. Fix for release: start
  clean at the **marimba-riff entry 30:22**, drop 30:09–30:22.
- **→ Aria (34:21)**: clean.
- **→ PunkAChien (38:29)**: riff "suddenly steals Aria's stage" — cpluck carries
  across; kick+acid land ~38:50; perceived steal at 38:29 (= pattern re-trigger /
  break dip). Wants maybe a touch earlier — precise pin pending timbral detection.
- **→ You My Sunshine (~43:27)**: slight silence after PunkAChien; real sound at
  43:26–27 → trim the gap for the split.
- **→ Desire (~48:46)**: a few secs of silence between the last "I know I know"
  linger and Desire's synth loop — trim it.
- **Premier Septembre → Techno Orage (62:20→62:34)**: Sept1 chill pianos end ~62:20;
  **d9 at 62:31 is a MISTAKE → silence orbit-09 there, period**; start Orage at
  **62:34** on a nice fade-in of the orage drums+keys loops.
- **→ La Révolution (69:33)**: preceded by silence, claps, **encore** — trim all
  for the track release.

### Desired edits / fragment experiments
- **La Révolution — end on a BANG**: ring out the **last note of d10**; fade **d4
  OUT earlier** so it isn't lingering when d10 rings; try **larger reverb** (broader
  ring) + **a little delay**. → render a few **fragment** versions to choose.
- **Club master**: true −9 LUFS needs a limiter stage (current linear loudnorm caps
  at ~−11.5 to respect −1 dBTP).

## How ParVagues performs (perspective for the whole system)

> Why this matters for tooling: a recorded take is **one live performance**, not a
> canonical arrangement. The same track sounds structurally different take-to-take
> because the *entry* is improvised to fit the set's momentum. Our analysis must not
> assume a fixed intro/section layout — detect it per-take.

- **The intro is a live transition decision.** Where each element spawns depends on
  what came before and the floor energy. Examples of opening moves PLN uses:
  - **spawn the bass early** when transitioning *onto a hot dancefloor* from a
    previous track (skip the slow build — keep the body moving);
  - **start ambient/atmos first** (e.g. lead with `d9`) for a slow, breathing open;
  - **start on a drums transition** — e.g. HPF the incoming `jungle_breaks` and do a
    `d8`-into-`d8` file switcharoo so the groove crossfades from the prior track.
- Consequence: "where does the track really start?" and section boundaries are
  **performance-dependent**; the same single mastered from two takes will have
  different lead-ins, builds, and drop placement. This is *why* the A/B players are
  two **independent** transports (not a shared playhead) — and why intro/outro
  edge-detection (#31) must be content-driven per take, never inferred from the score.

### Instrument / controller ergonomics (affects fingerprinting!)
- **`d6` (meth_bass) is sporadic, NOT track-specific.** PLN uses meth_bass *sometimes,
  not always* — and its absence is partly a **controller-ergonomics artifact**: `d6` is
  awkward to reach/trigger on the LaunchControl XL right now. So **orbit-06 silence is
  not a discriminative fingerprint feature** — don't use it to identify a track; many
  takes drop d6 for reasons that have nothing to do with the score. (Caught me
  over-weighting "orbit-06 silent" as a PunkAChien tell, 2026-06-05.)
- **Long-run idea:** fix d6 ergonomics on the Tidal/MIDI side (remap so meth_bass is
  reachable mid-flow) so its use reflects musical intent, not reach.

### Mastering reactions (PunkAChien)
- Montreuil reads **bass-forward** (centroid ~639 Hz, dom=sub) — confirm punchy not
  boomy by ear. Montreuil is the **dynamic** take (LRA 7.4, has breakdown+drop).
- **38C3 take found = Take35** (2026-06-05): 2024-12-25, "Pitbul Punk", 4:35 standalone
  track take. Fingerprint matches on *track-specific* signals: cpluck riff (orbit-05) +
  acid (04) + percs + 4:35 length. **Pending PLN ear-verify** before `verified`.
- ⚠️ The old "Hamburg/Take87" PunkAChien was a **misidentification** (actually La Fin
  de l'Insouciance → Liquid Finale @ 39C3). Do NOT A/B against it; real second take =
  Take35 (38C3), plus Take36 (the 61:46 Toilet set) for an in-set version.

---

## Take35 — "Septième Armée" (Seven Nation Army cover), 2024-12-25

**Blind-test identification (2026-06-05).** Hunting the 38C3 PunkAChien, the take the
date-join labeled "Pitbul Punk/38C3 (±3d)" turned out — on PLN's ears, blind — to be
**Septième Armée** (`live/collab/raph/septieme_armee.tidal`), a Seven Nation Army-riff
cover at 90 BPM. Objective corroboration: the take's active orbits (1,2,3,4,5,8,9;
6/7/10/11/12 silent) match the `.tidal` orbit→sound map exactly, incl. **d4 `bassWarsaw`**
= the SNA bass riff (Take35 orbit-04 was 89% sub — the bass), d5 `FMRhodes1`, d9 `moogBass`.

Lessons:
- **Date-joins lie; the ear is the oracle** (3rd metadata miss caught by ear — see
  [[feedback_locate_matrix_method]]). Take35 ≠ PunkAChien; take_gig_map corrected.
- **Fingerprint must include SYNTHS, not just samples** — `bassWarsaw`/`moogBass`/
  `FMRhodes1` are the identity here and TF-IDF (Dirt-Samples-only) was blind to them.
  Fixed: sample_tfidf now indexes all sound-context tokens (samples ∪ synths).
- **PLN reaction:** "great one — good single, or at least a SoundCloud ébauche to push."
  ⚠️ It's a **cover** (White Stripes / Jack White) → needs a mechanical/cover license for
  paid/DSP release; SoundCloud ébauche is lower-risk. Treat like the other covers bucket.

**Open:** the real 38C3 PunkAChien ("Pitbul Punk") is still unfound — Take35 eliminated.
Candidates left: Take36 / the 61:41 "House of Tea" set, Take37/38 (Chaos Music Club),
or it was never recorded as a standalone. Hunt deferred behind the bleed-detector build.

**Foundry kit audition — superfreak/hammer (2026-07-11, PLN on-disk verify).** Ear-report
on the forged kits: (1) "lots don't loop well or are not audible — bass_deep is not
audible"; (2) "other_skank is good but seems not starting right — loops feel 'timed ok'
but cut BCDA or DABC, not at a good start"; (3) "vox superfreak/kinkygirl are very
high-pass filtered? some bass split? is this demucs?"

Measured confirmation (all three are real, none is a duration bug):
- **bass_deep inaudible** = pure-sub sample: RMS −12.8 dBFS (loud!) but 99% of energy
  <150 Hz (75% in 60–150), centroid 478 Hz. Physically invisible on small monitors —
  equal-loudness, not level. It's a sub LAYER (two-layer bass idiom), not a standalone.
- **BCDA/DABC rotation confirmed**: strongest onset beat-slot inside each loop —
  drums_dub slot 1/16, bass_deep slot 4/16, other_skank slot 2/8; other_skank's first
  30 ms is −23 dB below its loudest 30 ms (starts mid-phrase). Root cause: the PLP beat
  grid has no downbeat anchor, candidates start on ANY beat. The loops are bar-exact
  (tempo-locked) but musically rotated.
- **vox high-pass = demucs htdemucs**, not our cuts: the vocals STEMS have ~0 energy
  <150 Hz (superfreak 0.1% in 60–150, hammer 0.9%) — vocal chest/low end is routed into
  the bass/other stems by the model. superfreak bass stem holds 70% of its energy at
  60–150. Lyric cuts inherit the thinness.

Fix directions (foundry): rotate-to-downbeat export post-pass (a clean-seam bar-exact
loop can be rotated freely — the new seam is an interior continuity point → zero risk,
pick rotation with strongest attack at 0); vocals via engine2 BS-Roformer (keeps low
end far better than htdemucs) then re-cut the same phrase bounds; bass_deep → optional
harmonic-saturation "audible" variant, or accept as sub layer + in-session shape.

**Hammer kit re-listen (2026-07-19, PLN).** Ear-report on the v1 `hammer` kit:
(1) "some cases it's not even just the voices" (vox cuts carry instrumental);
(2) "06_vox_breakitdown doesn't loop well"; (3) overall "we didn't do honor to
hammer". superfreak folder judged good on re-listen.

All three measured + fixed (v2 rebuild, see catch `report.md` + `review_v2_bleed_metric.py`):
- Vox bleed confirmed: v1 cuts (demucs stem) held riff energy at only −2.4 dB
  (03) / −6.5 dB (06) below cut RMS during vocal-silence frames. v2 re-cut from
  the BS-Roformer vocals → bleed −27..−62 dB below signal.
- **New lesson beyond the 07-11 note: the CUT BOUNDS were bleed-biased too.** The
  energy-corrected bounds fitted on the bleedy demucs stem started 06 a full
  second before the word ("break" is at 202.81, cut at 201.70) and 04 450 ms
  early. "Re-cut the same phrase bounds" (07-11 fix direction) was insufficient —
  bounds must be re-anchored on the cleanest vocal render's true onsets.
- 06 "doesn't loop": it was an 8.30-beat one-shot; v2 adds 09_vox_breakitdown_loop
  (2.000 bars exact, x4 join 0.00x) and keeps 06 as a full-tail one-shot (4.95 s).
- Rotation finally promoted to the shipped kit (v1 drums/bass opened −65/−52 dB
  below peak); instruments re-cut from a roformer-instrumental→demucs CASCADE
  (no rap ghosts: source windows carried vocals at −23 dB).

## OPAL practice take 94 — first machine-trimmed mix (2026-07-29, PLN)

Listening to `mix/take94/take94_trimmed.wav` (19.15 min, uniform −16 dB, 119 s auto-trimmed).

> *"mix is total decent. i hear 3 or 4 tracks well. some moments ive been blocked in
> loops stuck practice as i was doing other things but tbh great mix itself its clean"*

> *"silence around 18 is not normal its a bad transition ahah in a real mixing work wed
> cut it proper and fade or at least trim most"*

**What this validates:** the sum + uniform gain trim is clean — no routing fault, no
bleed audible, the balance PLN performed survives a flat −16 dB. The stretches he
noticed as "stuck in loops" are exactly the `loop` kind take-lens detects and
deliberately does NOT auto-cut (hands idle + a couple of orbits droning).

**What this corrects — the rule, in his words.** A silence at a TRANSITION is junk, and
the mix answer is *cut it proper and fade*, not leave it. The 18 s gap he heard was
detected and reported, and survived anyway because `SILENT_RUN_S` was 20 s: all three
remaining gaps (17 s, 18 s, 11 s) sat just under the bar. A threshold tuned to never eat
a musical break had quietly become a threshold that keeps every bad transition.

Two changes follow, and they generalise past this take:
1. **Clamp, don't binary-cut.** A silence longer than ~8 s is not a musical rest at
   120-140 BPM (4 bars ≈ 8 s), so trim it down to a short breath rather than choosing
   between "keep all 18 s" and "remove every trace". Keeps the seam musical, removes the
   dead air. This is "or at least trim most" implemented literally.
2. **Fade every seam.** A butt-join between two takes of a live room is a click, and
   until now every cut this tool made was a butt-join. Short equal-power crossfades at
   every removal boundary.

**Ear-gate note for the future:** he heard 3-4 tracks "well" out of a ~21 min take — the
take has NO track timeline (gig-log gained `k:"track"` the same evening), so his count is
currently the only boundary data that exists for take 94.

---

## 2026-08-02 — Sunday KRK rehearsal, J-6. Track-by-track, live commentary

The one-before-last KRK-enabled run. PLN narrated as he played, track by track. This is
the densest ear-feedback session so far and almost every reaction turned out to have a
mechanical cause underneath it — logged here with the diagnosis, because the pattern
(*"a taste complaint is often a bug report"*) is the reusable part.

### The verdicts

| track | his words | what it actually was |
|---|---|---|
| bombe_dj | *"bombe goes well"* | — |
| wap | *"not bad it works even the riser!"* | the #33 safe riser passes its first hearing |
| do_it_right | *"great track banger piece of the intro, 'now we're talking' moment"* | — |
| do_it_right | *"i feel d5 loud? does it touch the red in ardour? Gosh yes!"* | see gain-staging below |
| do_it_right | *"definitely the kicks too saturate"* | `# gain 2` = **+24.1 dB**, on a line stacking TWO samples |
| do_it_right | *"not seeing effects on button 44 nor 43?"* | both genuinely unmapped, not broken |
| take_5_drops | *"i hear no d7? or its muffed"* | moogBass = a 4-pole lowpass parked at **1 kHz** |
| take_5_drops | *"arp up... its now a set of 4 muffed short notes LOL"* | `legato 2` over quarter-length arp notes |
| piment_bresilien | *"banger"* | — |
| ouais_je_funk | *"d10 scale up is shitty... the scale climb is irritating"* | a stepwise scale run 0 1 2 3 3 4 5 6 |
| ouais_je_funk | *"effects are cool sound fine its too high-ish on the crush"* | crush floor 3.5 bits + pinned an octave up half the time |
| ouais_je_funk | *"no buttons 42 43?"* | the clap had no gate at all |
| lime_tacos | *"actually weak. removed from set"* | cut. 15 tracks, then 14, then 15 with the soundcheck |

### The loudness finding — measured, and it generalises

SuperDirt amplitude is `gain^4`. That exponent is why authored gains read so innocent
and meter so hot:

| `# gain` | dB |
|---|---|
| 1.0 | 0.0 |
| 1.4 | +11.7 |
| 1.5 | +14.1 |
| 1.8 | +20.4 |
| **2.0** | **+24.1** |

Across the OPAL set the **median orbit sits at +11.7 dB**, and four orbits sit at
+24.1 dB (`gain 2`): piment d10, gimme_acid d1, do_it_right d1, bombe_dj d7.
do_it_right's kick was a **10 dB outlier against its own bassline** *and* stacked two
samples on one line, so ~+30 dB into the orbit. Dropped to 1.5.

**The general rule this suggests:** when one orbit clips, do not reach for its fader —
rank the track's orbits in dB first. A 10 dB intra-track outlier is a bug; a 2 dB one is
a mix choice. Relates to #91 (record bus ~16 dB hot) and #17.

### The pattern worth keeping

Every single "it sounds wrong" this session had a mechanical cause that was visible in
the code or the SynthDef, and **none of them were mix problems**:

- *"muffed"* → a synth's own 1 kHz filter, plus no cut group, plus a shared FX bus
- *"loud"* → `gain^4`
- *"irritating"* → a literal ascending scale used as a melody
- *"no buttons"* → unmapped CCs
- *"weak"* (lime_tacos) → the only track never touched by the column remap, so half its
  board was in the wrong place while he played it

**So: before adjusting anything by ear, run `pvlint` + read the SynthDef.** Two new lint
rules came directly out of this session (PV014, PV011-as-error) and immediately found
the same defect class in `mafia_sans_serif` — which was already carrying PLN's own note
*"FIXME ACID WEIRD NOT GOOD"* with no known cause.
