v0.2.8 — Hide Source Audio File picker + Audio Analyze fix
Two changes, each verified live before shipping.
1. Source Audio File picker hidden from the op UI
The Source Audio File picker confused users into thinking it was the audio input — but the real source is the CHOP you wire into the COMP. TouchDesigner can't programmatically hide a custom parameter (Par.hidden is read-only), so the build now simply doesn't create it.
New ui_hidden flag on the parameter schema: the entry stays in params.py (so internal lookups and _has_source_audio() still resolve to its "" default), it just isn't rendered. Runtime behavior is byte-identical — the build already reset this par to empty on every rebuild, so the pre-flight was already passing via wired-CHOP detection, not via this picker. Connection is unaffected.
2. Audio Analyze now receives an audio-rate stream
User report: "audio analyze chop isn't getting anything." Diagnosed in two stages from live logs:
Why it was silent: Python Audio Out plays the generated audio by reading the internal loop buffer directly via PortAudio, so nothing in TouchDesigner pulls audio_out. And critically — even with an Audio Analyze CHOP wired to the COMP's out, the pull does not propagate across the Base COMP boundary (telemetry showed audio_out_cooks=0). So audio_out wasn't cooking at all.
The fix (two pieces):
- Force-cook
audio_outevery frame fromframe_exec'sonFrameStart— guarantees it cooks regardless of the broken cross-COMP pull. audio_clockWave CHOP carrier (Time Slice, 48 kHz) wired asaudio_out's input. The earlier (long-reverted) force-cook produced frame-rate cooks (numSamples=1) becauseaudio_outhad no audio-rate input. With a Wave CHOP feeding it, each forced cook now spans one frame's worth of audio samples (~800 at 48k/60fps).OnCookRecvreads the carrier's sample count as the authoritative block size, ignores its values, and fills that many samples from the loop buffer.
A Debug-gated diagnostic in OnCookRecv reports the cook rate (out.numSamples / carrier.numSamples → AUDIO-rate / FRAME-rate) so this is verifiable from the textport.
Wire the COMP's out → an Audio Analyze CHOP and your audio-reactive material now responds to the generated audio.
Verification
- Source Audio File picker is gone from the Session page; Connect works exactly as v0.2.7.
- Build log:
audio_out inputs=1 (waveCHOP audio-rate carrier). - Telemetry
audio_out_cooks=> 0; Debug showsOnCookRecv ... → AUDIO-rate. - Audio Analyze populates — confirmed live.
Tests: 71 passed. Drift: clean against demon-public-demo @ f2be73b. BUILD_MARKER = v0.2.8-hide-sourcefile-forcecook-wave-clock