Found by the TransientShaper gate-audit fix round (audiocomponents,
effects/p2b-transientshaper, 2026-09-07). This is a finding, not a
regression — the code is as it has always been, and the class ships on it.
It is filed because the class's evidence pack names it as the measured cause
of a trait it had to disconfirm, and no issue existed.
Stakes. DYN_TRANSIENT's whole promise is that it is thresholdless:
both control voltages are differences between two envelopes of the same
signal, so the level cancels and a ghost note is shaped as hard as a
rimshot. That is exactly what TransientShaper's docstring sells. It stops
being true near the floor.
The mechanism. src/shared/audioif_dynamics.c:628-630 takes
gain_to_db(env + 1e-5f) on each envelope. 1e-5 is −100 dBFS, so it is a
pedestal added before the log, and the difference of two logs is scale-free
only while both envelopes are far above it. It is 1 % of a −60 dBFS envelope
and 10 % of a −80 dBFS one.
Measured, on audiocomponents/.venv/bin/python at the pin 2f6cbc3,
48 kHz, through audioeffects.rebuilt.transientshaper:
-
peak attack gain at Attack +12, one hit at four levels:
+12.000 / +12.000 / +11.996 / +11.953 dB at −6 / −20 / −40 / −60 dBFS,
and +11.076 dB at −80 dBFS — a graded departure that tracks the
pedestal's share of the envelope, not anything in the gain law.
-
it is not only a −60 dBFS effect. The tail of a −40 dBFS note gets down
near the pedestal too, so the point-by-point spread between the same hit at
−20 and −40 dBFS depends on how deep into the decay it is read. Same
renders, read to N dB under each probe's own peak
(tools/phase2_probes/transientshaper_patches.py):
| Read depth |
patch 0 Flat (a near-wire) |
patch 2 Room Off |
patch 5 Kick Punch |
patch 6 Ambient Swell |
| 10 dB |
0.043 |
0.032 |
0.042 |
0.224 |
| 20 dB |
0.089 |
0.101 |
0.094 |
0.441 |
| 30 dB |
0.134 |
0.630 |
0.472 |
0.803 |
| 40 dB |
0.142 |
2.797 |
1.578 |
1.322 |
| 50 dB |
0.142 |
6.588 |
3.068 |
1.322 |
The bar the class's trait sets is 0.500 dB. The near-wire settles and stops;
the three working patches do not.
What the class did about it: nothing to the DSP. T1 is recorded
disconfirmed as stated and the surviving claim is bounded in the docstring
and the catalogue row to where it holds. The full record is
audiocomponents/docs/effects/TransientShaper-evidence.md §1 and §11.
The ask, if any. A smaller pedestal, or a floor applied to the ratio
rather than to each envelope, would push the departure below any level a
16-bit signal reaches. NEED: NONE — nothing in audiocomponents is blocked on
this; the class ships with the claim bounded. Filed so the number exists on
this side of the fence.
Found by the
TransientShapergate-audit fix round (audiocomponents,effects/p2b-transientshaper, 2026-09-07). This is a finding, not aregression — the code is as it has always been, and the class ships on it.
It is filed because the class's evidence pack names it as the measured cause
of a trait it had to disconfirm, and no issue existed.
Stakes.
DYN_TRANSIENT's whole promise is that it is thresholdless:both control voltages are differences between two envelopes of the same
signal, so the level cancels and a ghost note is shaped as hard as a
rimshot. That is exactly what
TransientShaper's docstring sells. It stopsbeing true near the floor.
The mechanism.
src/shared/audioif_dynamics.c:628-630takesgain_to_db(env + 1e-5f)on each envelope.1e-5is −100 dBFS, so it is apedestal added before the log, and the difference of two logs is scale-free
only while both envelopes are far above it. It is 1 % of a −60 dBFS envelope
and 10 % of a −80 dBFS one.
Measured, on
audiocomponents/.venv/bin/pythonat the pin2f6cbc3,48 kHz, through
audioeffects.rebuilt.transientshaper:peak attack gain at Attack +12, one hit at four levels:
+12.000 / +12.000 / +11.996 / +11.953 dBat −6 / −20 / −40 / −60 dBFS,and
+11.076 dBat −80 dBFS — a graded departure that tracks thepedestal's share of the envelope, not anything in the gain law.
it is not only a −60 dBFS effect. The tail of a −40 dBFS note gets down
near the pedestal too, so the point-by-point spread between the same hit at
−20 and −40 dBFS depends on how deep into the decay it is read. Same
renders, read to N dB under each probe's own peak
(
tools/phase2_probes/transientshaper_patches.py):Flat(a near-wire)Room OffKick PunchAmbient SwellThe bar the class's trait sets is 0.500 dB. The near-wire settles and stops;
the three working patches do not.
What the class did about it: nothing to the DSP. T1 is recorded
disconfirmed as stated and the surviving claim is bounded in the docstring
and the catalogue row to where it holds. The full record is
audiocomponents/docs/effects/TransientShaper-evidence.md§1 and §11.The ask, if any. A smaller pedestal, or a floor applied to the ratio
rather than to each envelope, would push the departure below any level a
16-bit signal reaches. NEED: NONE — nothing in audiocomponents is blocked on
this; the class ships with the claim bounded. Filed so the number exists on
this side of the fence.