Skip to content

Level ramps: build under CircuitPython's -Werror=float-equal - #405

Merged
bdbarnett merged 1 commit into
mainfrom
level-ramp-float-equal
Nov 10, 2026
Merged

bdbarnett merged 1 commit into
mainfrom
level-ramp-float-equal

Conversation

@bdbarnett

Copy link
Copy Markdown
Contributor

Since the level ramps landed (#400), CircuitPython firmware with audiodsp in it doesn't build: audiodsp_level_ramp_aim compares two floats with ==, and CircuitPython's espressif builds use -Werror=float-equal. The audiodynamics, delay and shaper bindings all include the header, so all four CircuitPython cells in micropython-pydevices fail at the first one.

The comparison is now !(a < b || a > b), the form SamplerVoice already uses. It gives the same answer for every number. For a NaN target the walk is left alone instead of aimed at NaN.

I checked the header compiles clean with -Wall -Wfloat-equal -Werror, and the other comparisons #400 and #403 added are on integers or pointers. The CircuitPython cells themselves get run when micropython-pydevices moves its pin to this fix.

audiodsp_level_ramp_aim compared two floats with ==, which CircuitPython's
espressif builds refuse. Every audiodynamics, delay and shaper binding
includes the header, so no CircuitPython firmware with audiodsp built at
84b8b45 or later. The test is now written with < and >, as SamplerVoice
already does; a NaN target now leaves the walk alone instead of aiming it
at NaN.
@bdbarnett
bdbarnett merged commit 8d5c4a0 into main Nov 10, 2026
62 of 63 checks passed
@bdbarnett
bdbarnett deleted the level-ramp-float-equal branch November 10, 2026 15:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant