Found during the audio meter spike on the P4 (2026-09-25), on current main (TinyUSB v0.21.0.1-micropython1, the ISR re-arm from #47).
With the meter off, delivery from Windows WASAPI at 48 kHz settles near 99.8 % a window or two into any stream when soundcard.py runs the I2S wire at the host's 48 kHz (#46). uac_stream_check.py on a 24 kHz wire holds 100.00 %. So the 48 kHz wire itself costs about one packet in 500. It passes the 99.5 % gate, but it isn't the 100 % the ISR re-arm reaches elsewhere.
Not investigated. The suspects: the I2S DMA writes at double the rate competing with the USB interrupt, or the pump's per-block work at 48 kHz. Measure it the #37/#39 way (uac_pump_clock() against 8,000 packets/s, 10 s windows).
Found during the audio meter spike on the P4 (2026-09-25), on current main (TinyUSB v0.21.0.1-micropython1, the ISR re-arm from #47).
With the meter off, delivery from Windows WASAPI at 48 kHz settles near 99.8 % a window or two into any stream when
soundcard.pyruns the I2S wire at the host's 48 kHz (#46).uac_stream_check.pyon a 24 kHz wire holds 100.00 %. So the 48 kHz wire itself costs about one packet in 500. It passes the 99.5 % gate, but it isn't the 100 % the ISR re-arm reaches elsewhere.Not investigated. The suspects: the I2S DMA writes at double the rate competing with the USB interrupt, or the pump's per-block work at 48 kHz. Measure it the #37/#39 way (
uac_pump_clock()against 8,000 packets/s, 10 s windows).