Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
Tidal
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PLN
Tidal
Commits
829e37f9
Commit
829e37f9
authored
Sep 06, 2026
by
PLN (Algolia)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Pre-compact cleanup: CHANGELOG + archive + memory
parent
7a54a1f8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
176 additions
and
0 deletions
+176
-0
CHANGELOG.md
CHANGELOG.md
+62
-0
completed-archive.md
armada/tasks/completed-archive.md
+64
-0
backlog.md
backlog.md
+50
-0
No files found.
CHANGELOG.md
0 → 100644
View file @
829e37f9
# Changelog — ParVagues rig
Sprint entries, newest first. Player-facing: what changed about
*playing*
, not
about the code. Task IDs reference the L'Armada board;
`n/a`
where the work was
unplanned (which, on a gig night, is most of it).
## Sprint 1 — 2026-09-06 · rose_rouge plays on a new laptop
The portable-rig thesis met a real box for the first time. Five faults stood
between a fresh XPS24 and a track, and every one of them was invisible in the
place you would look first: every check was green, every service
`active`
, every
name correct.
### Fixed
-
**The tray ignored a left click**
(n/a). GNOME turns button-1 into a
StatusNotifierItem
`Activate()`
, Qt re-emits
`activated(Trigger)`
, and nothing
was connected — so the rig's only mid-set UI did nothing on its most obvious
gesture. Its D-Bus menu was provably healthy the whole time (19 items,
`AboutToShow`
in 0.1s). Left and middle click now open it.
-
**midiviz had never been able to start on this box**
(n/a). It imports PySide6,
which was absent from every interpreter here. Installed 6.11.2.
-
**The LCXL3 went dark on every unplug/replug**
(n/a) — and PLN replugs
constantly while setting up. It now re-subscribes, re-asserts DAW mode and
repaints within one reconcile tick.
-
**Ardour's "Missing File" modal cost a launch**
(n/a). 294 dead sources, so
Ardour sat 13 minutes with 0.08s of CPU and
*no window at all*
. Cleared: 270
verified alive on the 53G Freebox mirror, 24 = Take101, already written off.
The session is now a clean jig — 0 sources, 0 regions, 15 routes and 14
playlists intact.
-
**No sound anywhere, Tidal and Zoom alike**
(n/a). One cause, three symptoms:
Ardour's ALSA backend had reserved BOTH cards over D-Bus, PipeWire released
them, and the laptop fell back to a single "Dummy Output". Then the JACK
backend started a
*second*
server, jackd2 on
`hw:NVidia,3`
, sending Ardour's
audio out an unplugged HDMI port while scsynth sat in PipeWire's graph. Now one
server, verified end to end.
-
**Ardour GUI was at 150%**
(n/a) —
`font-scale`
back to 100%.
### Changed
-
`gig-up.sh`
launches Ardour through
**pw-jack**
, so its JACK backend takes
PipeWire's libjack instead of jackd2's.
`launch_bin`
gained an optional
`LAUNCH_WRAPPER`
, empty for every other app.
-
`gig-up.sh`
sweeps dead session references
**before**
Ardour opens, gated on
the mirror being mounted. Idempotent; never blocks the gig.
### Infra
-
`rig-doctor.py`
was asking the wrong interpreter about the wrong binding: it
probed
`sys.executable`
, so a pyenv shim answered for an interpreter no unit
uses, and its table credited midiviz to PyQt5 — the binding midiviz does not
import. It cried wolf on
`mido`
and
`PyQt5`
while both worked, and could not
see the one dep that was genuinely gone.
### Doctrine
-
**A green check is not a working rig.**
Every fault tonight passed its own
check. The doctor asked the wrong interpreter;
`reconcile()`
watched the one
leg that survives a replug; a
`linked`
unit looked identical to a broken one.
-
**Any-subscription is not a health signal.**
A replug leaves debris: aconnect
kept printing the board wired to clients that no longer existed. Health means
*our*
client, on both ends.
-
**One audio server.**
jackd2 and pipewire-jack both installed, with ldconfig
preferring jackd2's libjack, is a trap that presents as three unrelated faults.
-
**Never throw a launched app's output away.**
`>/dev/null 2>&1`
in
`launch_bin`
is why a 13-minute modal was invisible.
armada/tasks/completed-archive.md
View file @
829e37f9
...
@@ -7,6 +7,70 @@ snapshot in `board-archive.md`. Newest first.
...
@@ -7,6 +7,70 @@ snapshot in `board-archive.md`. Newest first.
---
---
## n/a — rose_rouge on a new laptop: five green checks, five real faults
-
**Description:**
First real test of the portable-rig work on a fresh XPS24, mid
gig-setup. Asked to play
`rose_rouge.tidal`
with the full viz stack (LCXL3, Pulsar,
HUD, midiviz) and to explain an unresponsive tray icon. Five independent faults stood
in the way, and none was visible where you would look first.
-
**Done:**
rose_rouge played. Commits
`8a69bbf`
(tray left-click),
`f8593e0`
(rig-doctor
interpreter + PySide6 row),
`4128a03`
(fresh-jig plan + a stale command caught),
`a887029`
(LCXL3 replug resilience),
`3d4c798`
(gig-up session sweep + cheatsheet
gotchas),
`5d050dd`
(Ardour via pw-jack). PySide6 6.11.2 installed; session cleared to
0 sources / 0 regions with all 15 routes intact;
`font-scale`
150% -> 100%. Plan in
`docs/2026-09-06-ardour-fresh-jig.md`
; setup gotchas in
`docs/GIG-CHEATSHEET.md`
.
-
**Learnings:**
*A green check is not a working rig — every fault tonight passed its own check.*
`rig-doctor`
probed
`sys.executable`
, so PLN's pyenv shim answered for an interpreter
no unit runs (all five use
`/usr/bin/python3`
): it reported
`mido`
and
`PyQt5`
MISSING
while both worked, and still could not see the dep that was actually gone. A check
that cries wolf is a check nobody reads the day it is right.
*A stale dependency table hides a crash loop indefinitely.*
The doctor credited midiviz
to PyQt5 — the binding midiviz does not import (it has been PySide6 since
`30a704e`
).
So it asked about the wrong binding, found it, and reported green while midiviz
crash-looped at
`RestartSec=5`
for a whole session. Two GUIs, two bindings, two rows.
*Ask about the thing that breaks, not the thing that survives.*
`reconcile()`
watched
the virtual-port -> SuperCollider leg, which is virtual-to-virtual and survives a
replug untouched. The board-side legs, which do not, were unwatched — so it reported
healthy through the exact event that killed the LEDs.
*Names cannot detect a replug.*
The kernel destroys the sequencer client and rebuilds
it, dropping subscriptions, and rtmidi is never told. The board came back as client
**24 — the same number**
— so
`find_ports()`
answered and every string matched while
nothing was delivered. Only the subscription knows.
*Any-subscription is not a health signal; it can be satisfied by ghosts.*
The first
detector asked "does the DAW port have a subscriber?" and returned True on the very
state it existed to catch: a replug left debris, and aconnect kept printing the board
wired to clients 132/133 that no longer existed. Caught only by testing it against
the live fault. Health = OUR client (match
`pid=`
vs
`os.getpid()`
), on BOTH ends.
*One audio server, and the trap has three faces.*
jackd2 and pipewire-jack both
installed, with ldconfig resolving
`libjack.so.0`
to jackd2's and no ld.so.conf.d
preference, means: the ALSA backend reserves BOTH cards and drops the laptop to "Dummy
Output" (no Tidal AND no Zoom); the JACK backend starts a
*second*
server on
`hw:NVidia,3`
and sends audio out an unplugged HDMI port; and qjackctl shows a graph
that is not the one the rig is in.
`pw-jack`
is the whole fix, and it is the same
mechanism the SC unit already used (
`LD_LIBRARY_PATH`
-> pipewire jack dir).
*Never discard a launched app's output.*
`launch_bin`
's
`>/dev/null 2>&1`
is precisely
why Ardour blocking on a modal for 13 minutes with 0.08s of CPU was undiagnosable.
*A refusal can be correct and its documented remedy still wrong.*
`043`
recorded the
modal fix as
`--apply`
alone; since then eleven takes' audio moved to the mirror, so
the tool now sees 270 recoverable sources and rightly declines. The doc was right when
written and wrong by that night — drift a plan should catch instead of a gig.
*`--allow-archived` is safe only for a caller that verified the copy itself.*
The
refusal it overrides is right for an accident and wrong for deliberate archival, and
only the mirror's presence distinguishes them — hence gig-up's mount gate.
-
**Deps.**
None. Unblocks the visuals last mile (blocked on xps22, unreachable:
resolves to
`192.168.1.3`
, "No route to host").
---
## #85 — Pack-level sample grouping (the grouping above the folder)
## #85 — Pack-level sample grouping (the grouping above the folder)
-
**Description:**
The Dirt-Samples FOLDER is a loose convention, not the true grouping —
-
**Description:**
The Dirt-Samples FOLDER is a loose convention, not the true grouping —
`rample*`
is one bank sliced A0..S57,
`808bd/cy/hc/mc`
is one drum machine per voice,
`rample*`
is one bank sliced A0..S57,
`808bd/cy/hc/mc`
is one drum machine per voice,
...
...
backlog.md
View file @
829e37f9
...
@@ -2038,3 +2038,53 @@ url: "/home/pln/Work/Art/GLITCHWAVE/outputs/bg_live4.gif"
...
@@ -2038,3 +2038,53 @@ url: "/home/pln/Work/Art/GLITCHWAVE/outputs/bg_live4.gif"
url: "/home/pln/Work/Art/GLITCHWAVE/outputs/digital_flow.gif"
url: "/home/pln/Work/Art/GLITCHWAVE/outputs/digital_flow.gif"
url: "/home/pln/Work/Art/GLITCHWAVE/outputs/sunrise_flow.gif"
url: "/home/pln/Work/Art/GLITCHWAVE/outputs/sunrise_flow.gif"
url: "/home/pln/Work/Art/GLITCHWAVE/outputs/glitch_ocean_compressed.gif"
url: "/home/pln/Work/Art/GLITCHWAVE/outputs/glitch_ocean_compressed.gif"
# Rig — opened 2026-09-06 (gig night on the new XPS24)
Floated during the session that got rose_rouge playing, not done. Full context:
`
armada/tasks/completed-archive.md
` (top entry) + `
docs/2026-09-06-ardour-fresh-jig.md
`.
## Blocking the visuals last mile
- **Every scene asset is missing on this box.** `
rose_bloom.gif
` is nowhere under
`
~/Work
` or `
~/Pictures
`, and `
~/Work/Art/GLITCHWAVE/
` does not exist at all — so
**16 dangling `
-- url:
` refs**: 11 `
.tidal
` files point into `
~/Downloads
` (transient,
which is how rose_bloom vanished) and 5 into `
GLITCHWAVE/outputs/
`. PLN: "lets move it
to one repo ahah and ensure gifs are decently compressed". Plan: one home
(`
visuals/scenes/
`), compress before committing (gifs in git are permanent weight —
check whether the HUD accepts webp/mp4 first), rewrite all 16 refs repo-relative so a
fresh clone gets visuals like it gets code. **Blocked: needs the files off xps22**
(`
192.168.1.3
`, "No route to host" — PLN restarting it) or the Freebox.
## Sound / mix
- **`
Tidal 12
` fader is at `
-inf dB
` — SILENT.** Caught by gig-up's readiness gate.
rose_rouge's d12 is "LE JAZZ C'EST DU PIANO", so that orbit reaches nothing. Decide
mistake-vs-intent, then `
tools/fader-baseline.py --restore
` or `
--capture
` (Ardour
closed). Same shape as decision 1 in `
armada/tasks/043
`.
- **`
/usr/local/sbin/perf-audio
` not deployed**, so gig-up cannot set performance mode
and the box played at `
gear: None, mode: silent
` with the CPU capped at powersave.
Needs the root-owned perf.sh + sudoers rule (README "Deploy mode-switching").
- **Block size 1024 (~21 ms)** — high for livecoding. Worth tuning the PipeWire quantum.
- **No ld.so.conf.d preference for PipeWire's libjack**, so `
libjack.so.0
` resolves to
jackd2's. `
pw-jack
` works around it per-app; a system-wide preference would also make
qjackctl show the graph the rig is actually in, instead of an empty jackd2 one. Needs
sudo, and would leave jackd2 effectively unused — which is the point.
- **The headset mic auto-connects into `
SuperCollider:in_1/2
`** on every SC boot
(`
SC_JACK_DEFAULT_INPUTS=system
`). `
check-audio-graph.sh
` prunes it, but it recurs.
- **Re-run `
check-audio-graph.sh
` at the venue with the UMC plugged in** — it cannot
prove the last monitor hop until the interface exists (2 warnings tonight, both that).
## The jig, second half
- **Only the reference-clearing half of the fresh-jig plan is built.** The stem sweep
(copy -> verify -> clear, idempotent, at launch as well as close) is designed but not
implemented. Three open questions still need PLN: per-gig sessions vs one stable jig;
where swept stems land (`
take-master.py
`/`
take-lens.py
` should own it, not a new tool);
whether the local 53G ever comes back or the mirror stays the archive of record.
## Housekeeping
- **`
rig-doctor
` does not check LV2 plugins** — the same gap class as the PySide6 miss.
The missing `
lsp-plugins-lv2
` / `
zynaddsubfx-lv2
` only surfaced via Ardour's own dialog.
- **The rig now carries two Qt bindings** (PyQt5 for perf-tray, PySide6 for midiviz).
Documented in the doctor rather than unified; a PyQt5 port of midiviz is ~30 refs but
would move it off the Qt6 it was written and tested against.
- Untracked: `
start_minimal.scd
`, `
sandbox/debug.tidal
`. Also `
BootTidal.hs.broken
` and
`
BootTidal.visuals.broken.hs
`
are still sitting in the repo root.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment