'Je jouais, d'un seul coup plus de son.' Every static check said fine: SuperCollider up with nrestarts=0 and a clean log, Tidal's GHC alive and holding 6010, the PipeWire graph fully linked SuperCollider -> Ardour -> UMC, Ardour's master at -0.2 dB reaching both interface channels, the UMC reporting 48000 Hz momentary on both directions. Nothing to find, if you only look once. The tell came from PLN's ear instead: the system volume beeps had gone 'legato 0.2' — truncated. A device that eats the head off a short sound is a device being stopped and restarted, and no lens in this repo could see that, because each one samples a moment and this fault lives strictly between moments. trigger_time is what exposes it. It changes only when a PCM stream is (re)started, so it is a restart counter that nothing else in the stack publishes: no log line, no error, and PipeWire reports the node 'running' on both sides of the event. Reading it twice showed the UMC's PLAYBACK stream had restarted while the CAPTURE stream had been up for 33 minutes straight — and since pw-top shows the capture node is the graph DRIVER, the graph keeps clocking serenely through an output that has gone away. That asymmetry is the whole bug, and it is invisible to every one-shot check. So the tool watches over time and reports what a snapshot cannot: stream restarts with the lifetime of the stream that died, effective rate from hw_ptr deltas (RUNNING with a frozen hw_ptr is a stall, and a rate off nominal is the 'everything plays fast' flavour of the same complaint), state transitions, and device presence across an unplug. Two deliberate choices. It resolves the card BY NAME on every poll rather than caching a number, because a replug can move the UMC from card1 to card2 and a lens pinned to card1 would report 'gone' forever and miss the entire after-half of the replug test this was built for. And it is strictly passive — opens no PCM, plays nothing, captures nothing — because this rig has already had one investigation where the probe's own capture caused the xruns being blamed on the rig. Verified: --once reads card1 with playback age 198s vs capture 2192s, the exact asymmetry above; a 45 s watch over a quiet stretch correctly reported zero restarts (the fault is intermittent, which is itself the finding); the unknown device path lists the cards present instead of failing bare.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| at | Loading commit data... | |
| bridge | Loading commit data... | |
| foundry | Loading commit data... | |
| pulsar-parvagues-hud | Loading commit data... | |
| pvlint | Loading commit data... | |
| tests | Loading commit data... | |
| README.md | Loading commit data... | |
| analyze_samples.py | Loading commit data... | |
| audio-lens.py | Loading commit data... | |
| bank-check.py | Loading commit data... | |
| button_roles.py | Loading commit data... | |
| cheat-sheet.py | Loading commit data... | |
| check-audio-graph.sh | Loading commit data... | |
| check-boot-blocks.py | Loading commit data... | |
| check-boot.sh | Loading commit data... | |
| check-drift.sh | Loading commit data... | |
| check-mix.py | Loading commit data... | |
| check-preload.sh | Loading commit data... | |
| check-tracks.sh | Loading commit data... | |
| control-lens.py | Loading commit data... | |
| deshadow-helpers.py | Loading commit data... | |
| fader-baseline.py | Loading commit data... | |
| fan_check.sh | Loading commit data... | |
| fix-button-roles.py | Loading commit data... | |
| fix-mute-roles.py | Loading commit data... | |
| gen_tokens.py | Loading commit data... | |
| gen_ts_types.py | Loading commit data... | |
| gig-log.py | Loading commit data... | |
| gig-metadata.py | Loading commit data... | |
| gig-up.sh | Loading commit data... | |
| gig_record.sh | Loading commit data... | |
| lcxl-init.py | Loading commit data... | |
| lcxl-leds-watch.service | Loading commit data... | |
| lcxl-leds.py | Loading commit data... | |
| lcxl_grid.json | Loading commit data... | |
| lcxl_grid.py | Loading commit data... | |
| migrate-columns.py | Loading commit data... | |
| mock-lcxl.py | Loading commit data... | |
| mute.tidal | Loading commit data... | |
| orphan-orbits.py | Loading commit data... | |
| parvagues-samples.service | Loading commit data... | |
| parvagues-sc-watchdog.service | Loading commit data... | |
| probe-chain.py | Loading commit data... | |
| pvbanks.py | Loading commit data... | |
| sample-watcher.py | Loading commit data... | |
| sample_tfidf.py | Loading commit data... | |
| sc-watchdog.sh | Loading commit data... | |
| set-coherence.py | Loading commit data... | |
| setlist.py | Loading commit data... | |
| setlist_samples.py | Loading commit data... | |
| shipowiz.py | Loading commit data... | |
| silent-eval.py | Loading commit data... | |
| solo.tidal | Loading commit data... | |
| surface-columns.py | Loading commit data... | |
| take-lens.py | Loading commit data... | |
| take-master.py | Loading commit data... | |
| take-segments.py | Loading commit data... | |
| tempo-lens.py | Loading commit data... | |
| tidal-remote.py | Loading commit data... | |
| tools.png | Loading commit data... | |
| unmute.tidal | Loading commit data... | |
| unsolo.tidal | Loading commit data... |