Companion to audio-lens.py: that watches the audio DEVICE, this watches the audio ENGINE. Together they answer, in one line, the question that cost PLN three interruptions today — when the sound stops, did Tidal stop asking, or did the interface stop playing? scsynth already answers /status on the port it is listening on, and the reply carries the live synth count and peak DSP load. SuperDirt rendering silence sits at its idle floor with no synths; SuperDirt fed by Tidal spawns a synth per event and the load moves. So three states, and the middle one is the point: synths > 0 or peak above the floor -> Tidal is emitting answers but flat at the floor -> engine fine, NOBODY IS ASKING no answer -> the server is gone Nothing in this repo could produce that middle verdict before. During today's stop every existing lens reported healthy — sclang's OSC loop answered, scsynth answered, all 48 SuperCollider->Ardour links were up, the interface clocked a steady 48 kHz — and the sound was gone anyway, because Tidal had stopped emitting while its process stayed alive, threads scheduled, port 6010 held. Written with the offsets bug already paid for. The first throwaway version of this query hardcoded byte offsets into /status.reply and reported 1.68 BILLION ugens and 0.0% CPU, and I read the CPU figure off it and told PLN the engine was rendering silence. It was not: reading the typetag properly gives 91 synths at 30.7% peak. A number obviously wrong enough to notice sat right next to a number wrong enough to mislead, and I used the second one. Hence osc_parse walks the typetag, and the absurd-value story is in the docstring so the next reader distrusts hand-rolled offsets on sight. Passive: /status is a query, allocates nothing, never touches the default server object, never plays a tone.
| 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... | |
| rig-pulse.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... |