Repository navigation
v0.1.1
audiobusio.I2SOut.starved()reports silence on the wire, in bytes. It
used to return the engine's sink-refusal count, which needs the pump running
and the DMA full -- the one case that is not an underrun -- so it read 0
through a stall that plainly starved the wire, on both chips. It now reports
audio that should have played and did not, taking whichever of two witnesses
is further on: the DMA's own byte count, which is right when the ring runs
dry andauto_clearclocks zeros, and the wall clock, which is right when
the DMA itself stops -- which is what a flash erase does on the ESP32-S3,
measured at 1.14 seconds of audio lost from one 32 kB write with the pump
sitting level with the DMA throughout. Neither witness alone sees both. The
old number keeps its meaning under its real name,sink_timeouts(), and
_audioifgainsi2s_sink_bytes()andi2s_starved_bytes()so the
subtraction is checkable from Python. Silence that was asked for -- a
stopped or paused output -- is not charged: the count restarts wherever
feeding legitimately begins, and arms for one ring period so the wait for
the pump's first block reads as the latency it is.
(#8)_audioif.lock_probe()asks FreeRTOS whether it refuses a give of the
pump mutex from a task that does not own it, and one with nobody holding it.
ESP32 only; nothing in the audio path calls it.
(#14)__revision__says which audioif a firmware was built from: a
git describeof this repository, orunknownwithout git.
(#17)- One
include()line adds this module to your own MicroPython 1.29 build.
manifest.pynames the C module withc_module(), and the README shows the
line. (#19) micropython.cmakeskips the driver on CMake ports other than esp32, so an
rp2 build that includes it no longer fails on ESP-IDF's I2S header.
(#15)tests/run_probes.shruns CI's probes against a desktop interpreter, and
refuses one that was not built from this checkout's HEAD. CI builds against
audiodsp v0.5.1 rather than its default branch.
(#6)- A newcomer's guide in
docs/newcomers.md.
Add it to your own MicroPython build beside audiodsp with one include() line; the README shows it. It is a firmware C module, so there is nothing on PyPI or MIP to install.