Skip to content

effects Phase 2: Expander's ratio law is the RMS detector's — patch 5 ships the peak position, where the slope is 29 % short #50

Description

@bdbarnett

Stakes. Expander patch 5 Hard Downward is the class's own
gate-adjacent patch and the one its evidence pack names for the board run. At
its shipped settings the trait the class is graded on — E1, "the output falls
ratio dB for every dB the input falls, within 5 %"
— reads −29.33 %,
with the worst point 3.753 dB off the fitted line against a 0.5 dB bar. A
player who sets 8:1 there gets about 5.65:1.

Cause, and it is not a bug. The Detector toggle at peak makes the
follower ride each cycle of the waveform, so the gain is modulated inside the
period and the settled slope falls short. It is what a peak detector does and
it is what patch 5 is for. What was wrong was the claim, which read as if E1
held at both positions of a toggle the class ships.

Measured (tools/expander_evidence.py --only sweeps, 48 kHz, cpython,
branch effects/p2b-expander), Ratio × Threshold × Detector, 24 cells:

Ratio Threshold rms peak
1.5 −20 dBFS +0.51 % −0.25 %
4 −20 +0.98 % −2.48 %, residual 1.383 dB
8 −20 +1.02 % −7.52 %, residual 3.098 dB
8 −40 +1.90 % −16.03 %, residual 2.446 dB

Worst cell with the Detector at RMS — its default, and five of the seven
patches — is +1.92 %, residual 0.103 dB: green everywhere.

Done on the branch, so this issue is the decision and not the work. E1's
verdict now reads demonstrated with the Detector at RMS, disconfirmed at
peak
; the class docstring and the lib/audioeffects/README.md catalogue row
carry the two numbers a player would notice; and
tests/test_cpython_effects_expander.py::TheDetectorBoundsTheLaw asserts both
halves so it cannot silently widen again.

The decision left. Whether patch 5 should keep the peak detector at
ratio 8 — the sound it is named for — or whether a class whose headline trait
does not hold at one of its own patches should move the patch. The pattern
revision's §3 says a shipped patch is the product; this is the case where the
product is deliberately the exception, and somebody other than the fixer
should say so.

Found by the patch sweep the revised evidence template asks for
(docs/effects-phase2-pattern-revision.md §3, "Station C's first run should
be the patch sweep"). It was the first thing that sweep found.

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