Skip to content

v0.2.1 — a visible critic, and a deck that survives a dub

Choose a tag to compare

@CharlesMod CharlesMod released this 17 Aug 22:07
· 22 commits to main since this release

Two things you could not see before, and one that stopped working when you
looked away.

You can see the critic now, and argue with it

The radio throws away most of what it generates — that is the whole point of
having a critic — but rejected takes are deleted, so the deck had no way to
show it was working. It generated for minutes, binned the result, and left a
log line nobody reads. More than one person read that silence as a broken
radio.

The deck now has a Critic panel: every verdict with its score against the
bar, the accept rate, and why that bar is where it is. Takes that missed by a
hair (within 0.03) are highlighted, because those are the ones a single nudge
would have banked.

And the bar is yours to move — stricter / looser buttons, applied without
a restart, clamped to +/-0.15. The panel suggests a direction: nothing
passing, several near misses, or everything passing.

The deck could not come back while a dub was running

Music Flamingo legitimately fills a 16 GB card. ComfyUI cannot create a CUDA
context when it is full, so it exited before serving anything and systemd
crash-looped it — 19 restarts in the case that prompted this, each one loading
torch and stealing CPU from the dub it was waiting on, with the deck down
throughout.

The music server now waits for the card instead of fighting it, and asks for
it rather than waiting on luck: it raises a flag, and the listening pass
releases its allocator cache at the next track boundary. Measured 1.6 GB free
before, 3.1 GB after — so the deck returns within one track instead of at the
end of the dub.

Capping the captioner's VRAM was tried first and reverted: on a 16 GB card any
budget that leaves real headroom starves the model, and a 12 GB cap failed
every single track on a 334 MB allocation. The comment in caption_pass.py
records why, so nobody re-derives it.

Also

  • The take counters sit on the floor of the tape window instead of floating in
    the middle of it.
  • analysis/capture.log is flushed per line. It exists for the moments a
    capture looks stuck, and it was empty exactly then.
  • A liveness probe that would have terminated the process it was checking on
    Windows.