feat(pvlint): PV009 — gain MULTIPLIED by a control that seeds to zero, i.e. a layer that never arrives PLN, mid-run, working it out himself: "d9 on wap didnt take effects on 17 and 19? ok no its the 17 superimpose that melts too !! does our xfade screw the superimposes?💡 " The xfade is innocent. wap.tidal:91 is $ superimpose ( (# "acidOto3091") . (|- note 12) . (|* gain "^17") . (# cut 91) ) and ^17 seeds to 0 under BootTidal's policy ("A/B knobs -> 0, effect amount off"). Gain MULTIPLIED by 0 is silence, so the superimposed layer is not quiet — it does not exist. The 4-cycle dN crossfade then eases from the previously-audible state into that silence, which is what reads as a melt and is exactly why the xfade looked guilty. It was the messenger. The distinction the rule encodes: `#` ASSIGNS and survives a 0 seed (`# crushbus 51 (range 16 4.5 "^53")` at seed 0 is simply crush 0), while `|*` and `|/` ANNIHILATE. Only the multiplicative form can delete a pattern, which is why flagging `#` sites would bury the real finding under hundreds of false ones. SEVERITY IS `info`, DELIBERATELY. This idiom is usually correct — it is a bring-in fader for a layer, and PLN uses it that way. The rule does not exist to call it wrong; it exists so nobody hunts it BY EAR. Making it a warning would fire on a normal, intended idiom and get the whole gate ignored, the mistake already made once in check-drift's first draft. It shows under `pvlint --info`. WHY IT MATTERS MOST RIGHT NOW: a remap moves the CC, but it does not move the KNOB. Physical positions survive across a surface change, so a knob left at 0 silently acquires a new victim. That is the single root cause behind everything PLN heard this session — d9's layer gone on wap, and the same class of staleness behind the d4/d5/d8 symptoms (latched buttons whose orbit changed under them). It is the identical failure to the very first question he asked today: Ardour's fader raised by mouse while the physical fader sat at 0. There are no motors, so the surface never follows the map. SCOPE, measured (both forms — `|* p (range 0 hi "^NN")` and the bare `|* p "^NN"`, which my first scan missed and which is the worse of the two): 33 sites across 25 files corpus-wide 2 in the OPAL setlist: wap.tidal:91 (bare), desire.tidal:75 (range 0 1.5) Notable elsewhere: scratchomatic multiplies gain by "^84" — an ARDOUR-learned fader — and computer_riddim/computer_riddub/anniv multiply by "^50", the gF2 DJ filter knob. 6 new tests. The negatives carry the weight, as always: `range 1 1.5` (the prescribed neutral-low-end fix) must NOT flag, `#` assignment must not flag, and C1-C3 must not flag because they seed to 0.5 (centre), not 0. 496 pass.
| Name |
Last commit
|
Last update |
|---|---|---|
| .gitea/workflows | Loading commit data... | |
| armada | Loading commit data... | |
| blocks | Loading commit data... | |
| blog | Loading commit data... | |
| copycat | Loading commit data... | |
| docs | Loading commit data... | |
| gifts | Loading commit data... | |
| lib-parvagues | Loading commit data... | |
| live | Loading commit data... | |
| output | Loading commit data... | |
| releases | Loading commit data... | |
| sandbox | Loading commit data... | |
| study | Loading commit data... | |
| test | Loading commit data... | |
| tools | Loading commit data... | |
| utils | Loading commit data... | |
| visuals/slop | Loading commit data... | |
| viz | Loading commit data... | |
| .gitignore | Loading commit data... | |
| BootTidal.hs | Loading commit data... | |
| BootTidal.hs.broken | Loading commit data... | |
| BootTidal.visuals.broken.hs | Loading commit data... | |
| CLAUDE.md | Loading commit data... | |
| FOH_MASTER.md | Loading commit data... | |
| LICENSE | Loading commit data... | |
| MORNING.md | Loading commit data... | |
| PatchBay_MultiChannel.xml | Loading commit data... | |
| PatchBay_Perf.xml | Loading commit data... | |
| PatchBay_Perf5.1.xml | Loading commit data... | |
| README.md | Loading commit data... | |
| RUNBOOK.md | Loading commit data... | |
| SHOPPING_LIST.md | Loading commit data... | |
| backlog.md | Loading commit data... | |
| bullet_train.tidal | Loading commit data... | |
| collide.sh | Loading commit data... | |
| debug.tidal | Loading commit data... | |
| didacticpatternvisualizer.pde | Loading commit data... | |
| gig-up.sh | Loading commit data... | |
| gpu-mode.sh | Loading commit data... | |
| hello.sc | Loading commit data... | |
| init_midi.sh | Loading commit data... | |
| intro.md | Loading commit data... | |
| library.txt | Loading commit data... | |
| link_jack.sh | Loading commit data... | |
| link_samples.sh | Loading commit data... | |
| link_samples_all.txt | Loading commit data... | |
| main_fairbanks.scd | Loading commit data... | |
| notes.md | Loading commit data... | |
| parvagues-sc.service | Loading commit data... | |
| perf-audio.sudoers | Loading commit data... | |
| perf-tray.py | Loading commit data... | |
| perf.sh | Loading commit data... | |
| samples.txt | Loading commit data... | |
| setlist_opal2026.txt | Loading commit data... | |
| start_and_midi.scd | Loading commit data... | |
| test.tidal | Loading commit data... |