Skip to content

audioverb.Tank: one Reverb setting renders differently on ESP32 boards than on any desktop build, cause not found #183

Description

@bdbarnett

At v0.6.3 (5afe010), audiocomponents' rebuilt Reverb at patch 7 ("Dark Chamber") renders a different digest on the boards than on any desktop build. It is the only cell of 76 measured on the boards whose difference has no known cause.

Build sha256 prefix of the first 128 blocks, 48 kHz stereo
ESP32-P4 and ESP32-S3 (they agree) 9750d1eaf6a95a0d
desktop CPython and desktop MicroPython, double-precision Python floats 8e6e35910777df41
desktop MicroPython built with single-precision Python floats 5f503d4f7f4f9adb

What is ruled out. Handing the desktop Tank the exact float32 settings the P4 computed reproduces the single-precision desktop digest, not the boards'. So the difference is not in what the class hands the node: it is inside the node, or in the C library under it, on the boards.

What is not known. How large the difference is in samples (only digests were taken), and which line produces it. Reverb's nine other patches on the boards are each reproduced exactly by the single-precision desktop build, so whatever it is depends on this patch's values.

Where to look first. A libm call in the node's C whose result differs between newlib and glibc at one argument, a float-to-integer conversion that lands on a boundary, or a multiply-add the board compilers fuse (#79 fixed that class of difference in the shared kernels; the tank's code changed in #172).

To reproduce. tools/measure_effect_cost.py in audiocomponents, target rebuilt:Reverb@7, on a board and on a desktop build. Dumping the first differing block on both would size it.

Cost and real time are fine at that cell on both boards. Found by the effects Phase 5 board session, 2026-09-29. It belongs with the node batch that follows Phase 5 (#166, #176 to #181).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions