Repository navigation
audiomath.Multiply: a mix move walks over 20 ms - #411
Merged
Merged
Conversation
A move of Multiply's mix on a playing node now walks to the new value in a straight line over 20 ms, as the Waveshaper's, the Biquad's and the FeedbackDelay's mix already do, instead of landing at the next block. A tremolo whose depth goes to 0 or comes back from it sets this mix, and the jump stepped the output by up to 30 times the steepest step of a 110 Hz triangle going through it. The walk runs in the shared kernel, a frame at a time, rounded to the Q15 grid, and lands on mix exactly, so a node at rest renders the bytes it did before. A node's first mix, and the first block after a reset, land at once. The CPython twin keeps the walk's state in a buffer the kernel writes.
… from the build The four modules report which audiodsp source a MicroPython firmware was built from, as the other modules do, through the shared build strings. Their stubs declare both.
…n too The stubs declare both names on every target since the previous commit, and the CPython modules didn't have them, so tests/test_stubs_match_modules.py failed there. They read the extension's own, as the other CPython modules do.
…it out The control in test_binding_parity checked that audiocore had no __version__ or __revision__, which the previous commits gave it. It now checks the three upstream modules that still don't. Ran test_binding_parity and the CPython suite; the stub test passes against a unix build of this branch.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A move of Multiply's
mixon a playing node now walks to the new value in a straight line over 20 ms, the way the Waveshaper's, the Biquad's and the FeedbackDelay'smixalready do, instead of landing at the next block. An effect that sets this mix to take a tremolo's Depth to 0 and back stepped its output there: on a 110 Hz triangle the jump was 20 to 30 times the triangle's own steepest step. The walk runs in the shared kernel a frame at a time, rounded to the Q15 grid, and lands onmixexactly, so a node at rest renders the bytes it did before. A node's firstmix, and the first block after a reset, land at once. The CPython twin keeps the walk's state in a buffer the kernel writes.This also carries the
__version__and__revision__names for audiocore, audiomp3, audiopump and synthio from thelane-d-audio-audiodspbranch, with the CPython modules given the same names so the stub check holds on every target. The binding-parity control, which checked that audiocore carried no build marker, now checks the three upstream modules that still don't.What I ran:
tests/test_cpython_node_level_ramps.pywith a Multiply case (it fails with the walk turned off and passes with it),tests/test_cpython_audiomath.py, the five CI gates,tests/test_stubs_match_modules.pyagainst CPython and a MicroPython unix build of this branch, flake8, andverify_dsp.pyagainst that build: 65 comparisons, 0 failures, withmultiply_probe.pyandnode_level_ramp_probe.py(which now moves a Multiply's mix) agreeing. Not run here: the CircuitPython oracle three-way and the CircuitPython build of the spike module, which CI's build job compiles.