Low-frequency loss investigation
The original release lost bass for two different reasons. Its inferred joint
gaps and finite source impedance produced a real, measurable passive LF pole.
Separately, the IRON control drove the small inferred winding into deep bass
saturation much earlier than its control position suggested. The second effect
was much larger at medium/high settings. Neither is an oversampling filter
problem, and neither is repaired with a compensating shelf EQ.
The original numerical implementation was frozen before production edits at
validation/lf-revision/before/. The instrumented original DLL and its SHA256
are retained in validation/lf-revision/forensics/before/. All numbers below
come from that DLL or from explicitly identified analytical linearization.
The C++ lab uses the production nonlinear solver, with test-only access for
component substitutions. Its independent linear branch is a control
experiment, not replacement production DSP.
Measurement method and artifacts
Run from the repository root:
py -3 SAK-IRON/tools/lf_investigate.py --lab SAK-IRON/build/Release/iron_lf_lab.dll --out SAK-IRON/validation/lf-revision/forensics/after --stage all
The host engine is measured at 96 kHz, with its automatic 4x oversampling.
The raw winding circuit is measured at 384 kHz. Frequencies extend from 5 Hz
to 40 kHz. IRON values are 0%, 10%, 25%, 50%, 75%, 90%, and 100% for every
core. Large-signal records use peak levels of −30, −12, and −3 dBFS; the
small-signal probe holds the internal source at 0.5 mV peak, reducing digital
level as IRON increases. Using a fixed digital amplitude at 100% would not
linearize this system.
Every final FFT record contains an integer number of periods, at least eight
cycles, after at least fifteen cycles and two seconds of settling. Two seconds
exceeds ten nominal magnetic time constants for the corrected Nickel circuit;
the original baseline was rerun with the same method. Both fundamental gain and total
RMS gain are retained. THD includes only harmonics below Nyquist; when none
are representable, it is explicitly NaN. THD at 40 kHz cannot be inferred
from a 96 kHz output. Negative fundamental gain is not by itself evidence of
passive filtering: comparison with the small-signal response at the same
control position separates magnetic compression from linear insertion loss.
The original measurement set includes:
frequency_drive_levels.csv: 1,764 exact-engine frequency/drive/level cases.
component_isolation.csv: 1,008 winding-circuit cases, with winding voltage,
magnetizing current, core B/H extrema, fundamental gain, RMS gain, and THD.
levels.csv: 540 level/drive/frequency cases.
profiles.csv and linearized_response.csv: calculated inductance, source
pole, and continuous-time equivalent-circuit response.
candidates.csv: circuit changes separated from musical drive mapping.
filter_mix.csv, internal_nodes.csv, and raw_material.csv: FIR and
dry/wet isolation, internal node trajectories, and prescribed-B core loops.
Each corresponding PNG and SVG plot remains beside the data. The isolated
linear branch removes JA history and amplitude dependence while retaining
the same winding/storage topology and backward-Euler discretization.
First-principles linearization
At the demagnetized origin, let
q = c Ms / (3 a)
mu_r,initial = 1 + q / (1 - alpha q)
Lm = mu0 N² A / (le / mu_r,initial + gap)
Geddy = le keddy / (N² A)
Zsecondary(s) = Rsecondary + Rload + s Lleak
Yparallel(s) = 1/(s Lm) + Geddy + s Cwinding + 1/Zsecondary(s)
Vload / Vsource = [Rload / Zsecondary(s)]
/ [1 + (Rsource + Rprimary) Yparallel(s)]
This follows directly from the shared JA inverse law, the magnetic series
reluctance, Faraday's law, and KCL. The approximate LF corner is
[(Rsource+Rprimary) || (Rsecondary+Rload)] / (2 pi Lm).
For the discrete linear experiment, substitute
s = (1 - exp(-j omega dt)) / dt, which is the actual backward-Euler
operator. The original shared JA law and initial permeability are unchanged.
| Quantity |
Nickel |
Alloy |
Steel |
| Bare initial relative permeability |
45,000 |
18,000 |
22,126 |
| Original Lm (H) |
11.975 |
6.077 |
5.703 |
| Original inferred gap (µm) |
2 |
3 |
5 |
| Fraction of total reluctance due to gap |
52.9% |
40.3% |
52.5% |
| Original approximate LF pole (Hz) |
2.989 |
6.389 |
8.657 |
| Lm with gap removed (H) |
25.447 |
10.179 |
12.012 |
| Pole with gap removed and source 50 Ω (Hz) |
0.803 |
2.311 |
2.215 |
Tiny distances are not tiny magnetic effects. A 2–5 µm air path is comparable
to an entire 80–100 mm path through a material with relative permeability of
18,000–45,000. The original implementation introduced those gaps as generic
joint equivalents without construction-specific measurements. They were
not numerical regularizers and are not required by the inverse solver.
Controlled component isolation
The following are measured 20 Hz gains at 0.5 mV source peak, after removing
only the predictable resistive insertion loss. These are linear-response
measurements, not saturation or loudness estimates.
| Experiment |
Nickel (dB) |
Alloy (dB) |
Steel (dB) |
| Original exact JA circuit |
−0.102 |
−0.430 |
−0.813 |
| Replace JA with initial linear Lm |
−0.102 |
−0.430 |
−0.813 |
| Remove only gap |
−0.028 |
−0.164 |
−0.255 |
| Remove only winding copper |
−0.046 |
−0.165 |
−0.360 |
| Remove leakage |
−0.102 |
−0.430 |
−0.813 |
| Remove eddy loss |
−0.096 |
−0.423 |
−0.746 |
| Remove winding capacitance |
−0.102 |
−0.430 |
−0.813 |
| Source 10 Ω, retaining original gap/copper |
−0.018 |
−0.091 |
−0.169 |
| Remove gap and use source 50 Ω |
−0.011 |
−0.063 |
−0.095 |
The exact JA circuit and a simple linear magnetizing inductance agree in the
small-signal limit. This proves the unwanted passive portion already existed
in the chosen equivalent circuit. It is not an emergent defect of hysteresis
memory, nor a nonlinear compression artifact.
An ideal voltage source across the winding eliminates this LF loss: the core
then draws whatever current its constitutive law requires without reducing
winding voltage. Saturation still exists in B/H/current but does not compress
an ideal imposed voltage. That is why retaining finite source/copper impedance
is essential for the desired transformer sound. The ideal-source experiment
is a diagnostic, not the adopted product design.
Doubling turns raises initial Lm by four while also increasing volt-second
capacity. Increasing turns or core area is a valid design option but changes
saturation onset and cannot be used as an invisible LF correction. Those
controlled substitutions keep copper/capacitance fixed to isolate magnetic
geometry; they are not complete realizable winding redesigns. The selected
revision retains the original 600 turns, area, and path length.
Source resistance and primary copper share the same series location in this
reduced circuit, so each affects the LF pole. Secondary copper and reflected
load enter through their actual secondary branch; they are not a second
source resistor. The 600 Ω load experiment is retained in the CSV with both
raw terminal gain and nominal insertion-compensated gain. Changing the load
does not justify ignoring the large accompanying insertion loss.
Leakage inductance and winding capacitance affect the high-frequency response
but are negligible at 20 Hz here. The thin-lamination eddy term becomes a
parallel conductance under voltage excitation. At a fixed winding voltage,
dB/dt = V/(N A), so this approximation contributes predominantly broad
insertion loss, not the bass pole. Steel's thicker representative sheet makes
that loss larger. The remaining roughly 0.04 dB broad steel loss is retained.
The larger effect: drive-dependent magnetic compression
At −12 dBFS peak, the original engine gave these 20 Hz fundamental gains:
| IRON |
Nickel (dB) |
Alloy (dB) |
Steel (dB) |
| 0% |
−0.13 |
−0.48 |
−0.82 |
| 10% |
−0.14 |
−0.50 |
−0.82 |
| 25% |
−0.14 |
−0.50 |
−0.84 |
| 50% |
−3.67 |
−0.53 |
−1.29 |
| 75% |
−10.57 |
−4.91 |
−2.05 |
| 90% |
−23.92 |
−18.04 |
−14.23 |
| 100% |
−35.67 |
−30.06 |
−26.27 |
These engine figures include the old drive-dependent 0–12 dB makeup. For
example, at 75% Nickel gives +5.324 dB at 1 kHz but −10.570 dB at 20 Hz:
a −15.894 dB bass-to-midrange difference. A broadband makeup scalar cannot
create or fix that ratio. It raises the absolute level of the unsaturated
midrange and confounds fair bypass comparisons, but the frequency-dependent
compression itself comes from magnetic excitation.
Originally, 50% mapped to 41.168 source volts per full-scale sample. At −12
dBFS peak this is 10.34 V peak. Ignoring the winding's eventual self-limiting
loading, Faraday's law predicts Bpeak = Vpeak/(2 pi f N A), or approximately
1.37 T at 20 Hz for Nickel/Alloy. Nickel's representative Js is only 0.78 T.
The model correctly cannot sustain the requested excursion without very large
magnetizing current and source voltage drop. Removing its gap changes that
hard-saturation loss only slightly: at 10 V peak/20 Hz Nickel changes from
−3.422 to −3.385 dB before other design changes. This decisively separates
the passive LF issue from genuine magnetic compression.
The revised musical mapping reserves more knob travel for reasonable voltage:
IRON 0–60%: drive_dB = -6 + 35 d
IRON 60–80%: drive_dB = 15 + 75 (d - 0.6)
IRON 80–100%:drive_dB = 30 + 180 (d - 0.8)
excitation = 4 * 10^(drive_dB / 20)
Its original −6/66 dB endpoints are retained. This mapping is explicitly a
musical control choice, not a newly claimed material property. The physical
system is unchanged as it is driven harder. With the selected circuit, at
50% and −12 dBFS the uncompensated 20 Hz losses become approximately 0.04,
0.14, and 0.13 dB. At 75%, Nickel still compresses its 20 Hz fundamental by
about 9.08 dB: this is intentionally the hard part of the range. Extreme
operation remains strongly frequency-dependent and destructive.
Why the corrected assumptions are more defensible
LF_RESEARCH.md records primary manufacturer specifications,
published engineering literature, and the precise limits of derived estimates.
High-quality transformers need not all have the same magnetizing inductance:
high-impedance input windings can require hundreds of henries, while a
low-resistance output winding driven by a low-impedance source can achieve
wide LF response with much less inductance. Lm without the source/load
fixture is not a sufficient quality metric.
No published construction evidence supports the old generic 2/3/5 µm gaps.
An intentionally nongapped closed-path equivalent is the more defensible
generic line-level default. The revised 50 Ω source is an explicit modern
line-driver assumption; copper resistance remains, so the total effective
source impedance is 130/150/170 Ω, not an ideal source. The revised small-signal
20 Hz response lives within the broad response scale of the published line
transformers, without claiming to reproduce any one commercial unit.
No EQ, inverse bass shelf, new saturation algorithm, or shared material fit
change is involved. Magnetic saturation, hysteresis memory, source/load
interaction, copper, leakage, capacitance, and eddy loss remain active.
Scope and limitations
The bare JA initial slopes are consistent with the implemented equations.
This investigation found an IRON design-assumption problem and a musical
mapping problem, not a demonstrated error in the shared constitutive law.
The known steel minor-loop fit mismatch remains; lower terminal LF attenuation
does not validate that fit or make the generic winding a measured device.
The published bandwidth references are LF sanity checks, not a claim that
the complete simulated bandwidth matches those devices. The retained leakage
network and backward-Euler damping still attenuate high frequencies. At 20 kHz
relative to 1 kHz, the revised small-signal engine measures −0.771/−1.213/−1.956
dB for Nickel/Alloy/Steel; at 40 kHz it measures −2.455/−3.546/−5.098 dB.
The continuous-time linear circuits predict −0.392/−0.732/−1.372 dB at 20 kHz;
the actual 384 kHz backward-Euler operator predicts −0.771/−1.213/−1.956 dB,
matching the measured result. Thus roughly 0.38/0.48/0.58 dB of the 20 kHz
loss is numerical damping. This high-frequency limitation is explicit and
unchanged by the LF repair. It must not be confused with FIR attenuation,
which is negligible at the 96 kHz host's 20 kHz test point.
The cross-plugin audit finds no shared-kernel change is
justified. BUS's terminal-calibrated transformers are already approximately
flat: its uncompressed complete path is about −0.011 dB at 20 Hz relative to
1 kHz at low level. TUBE's EL34 complete amplifier is about −5.83 dB at 20 Hz
at the audited default transformer setting; removing its output-core gap
still leaves about −4.45 dB. Its amplifier/coupling/speaker fixture and stated
inductance mapping differ from IRON's line-level objective. TUBE, BUS, and the
shared core remain unchanged, with frozen/current audio comparisons exactly
equal. The audit explicitly retains the pre-existing TUBE minor-loop fit
failure and BUS stored-baseline discrepancy; they were not hidden by changing
test thresholds.
Final production measurements
The revised exact-engine sweep is frozen at
validation/lf-revision/forensics/after/; its diagnostic DLL SHA256 is
30f54775ec07c42ec9b0df42af1afe0b8bae8197d86c6c3438d7b12a491f8ab7.
The interactive plot browser
switches between the linear probe and three fixed digital input levels.
The initial pink-only compensation dataset is preserved intact in
forensics/after-pink-calibration/. Final measurements use the shipping
equal-weight pink/brown synthetic calibration described in
AUTOGAIN_PROTOCOL.md, plus the final core-switch wet
return hold. The complete engine, circuit, and diagnostic bench is rerun;
final plots do not reuse the earlier calibration's absolute output gains.
At fixed controls, a static gain scalar cannot change LF/midrange ratios or
THD. calibration_static_parity.json separately checks that property over
the full frequency/input-level grid against the archived first calibration.
Across all 1,764 cases, the maximum variation of that gain delta within a
fixed CORE/IRON group is 1.43e−14 dB; maximum THD change is 3.98e−13 percentage
points. The final calibration therefore leaves the measured static magnetic
behavior unchanged to floating-point precision. At 100% IRON it adds
4.347/3.662/3.184 dB relative to the first calibration for Nickel/Alloy/Steel.
The table below normalizes each measurement to its own 1 kHz fundamental,
eliminating broadband autogain from the LF comparison:
| Test / revision |
Nickel 20 Hz (dB) |
Alloy 20 Hz (dB) |
Steel 20 Hz (dB) |
| Linear probe, before |
−0.0937 |
−0.4176 |
−0.7270 |
| Linear probe, after |
−0.0049 |
−0.0540 |
−0.0462 |
| IRON 25%, −12 dBFS peak, before |
−0.1332 |
−0.4902 |
−0.7571 |
| IRON 25%, −12 dBFS peak, after |
−0.0350 |
−0.1376 |
−0.0566 |
| IRON 50%, −12 dBFS peak, before |
−3.6569 |
−0.5134 |
−1.2015 |
| IRON 50%, −12 dBFS peak, after |
−0.0309 |
−0.1353 |
−0.0817 |
| IRON 75%, −12 dBFS peak, before |
−15.8941 |
−10.2317 |
−7.2929 |
| IRON 75%, −12 dBFS peak, after |
−9.0773 |
−3.7749 |
−1.7051 |
| IRON 100%, −12 dBFS peak, before |
−33.7538 |
−33.5697 |
−33.2968 |
| IRON 100%, −12 dBFS peak, after |
−33.7151 |
−33.5337 |
−33.2791 |
The extreme endpoint remains nearly unchanged in relative bass compression.
This is strong evidence that the revision retained the saturated magnetic
system, while making useful drive positions and passive LF response more
appropriate for line-level coloration.
Hysteresis and bass nonlinearity remain measurable. At 50% IRON, −12 dBFS
peak, the revised 20 Hz THD is 0.391%, 0.461%, and 0.269% for Nickel, Alloy,
and Steel. At 75% it rises to about 91.4%, 52.1%, and 22.4%. THD can exceed
100% under destructive excitation because harmonics can exceed the remaining
fundamental; this does not imply a calculation limited to a clipping curve.
The FIR-only 5–100 Hz error is below 0.000001 dB, and the 20 kHz passband
error is below 0.0007 dB at the measured rates. Original exact JA small-signal
gain and the linear branch agree within 0.000181 dB. The independent discrete
linear circuit and its backward-Euler analytical transfer agree to about
3e−12 dB on the original circuit. The corresponding revised-circuit errors
are 0.000462 dB and 0.00000114 dB, respectively, including finite settling.
All are below the recorded thresholds. Those checks rule out the resampler and constitutive root solver as
the source of the original static bass loss. Exact delayed MIX=0 and repeated
reset determinism also pass; every measured value and threshold is recorded
in the respective checks.json files.
All ten revised forensic checks pass. The zero-gap circuit also passes 36
deterministic DC/reversal/multitone stress cases at 8, 96, 384, and 768 kHz
with source peaks of 1, 100, and 10,000 V. There are zero solver failures;
the largest electrical residual is 5.96e−11 A and magnetic residual is
1.0e−12 T. This directly checks that the removed gaps were not required for
numerical stability.
Independent circuit measurements exclude the calibrated autogain scalar and
remain an auditable account of what was physically corrected. The production
engine plots include that scalar; it is not interpreted as additional
frequency-response shaping or restored dynamic compression.
Automatic gain validation
Result: PASS for scalar, state and null invariants.
Measured 189 held-out synthetic source/control combinations and 90 compression points. K-weighted mean-square differences are comparison metrics, not gated integrated LUFS.
| Invariant |
Worst measured error |
| automation_block_max_error |
0 |
| automation_peak |
0.7816678544 |
| automation_largest_sample_step |
0.6247206702 |
| mix0_max_error |
0 |
| bypass_max_error |
0 |
| reset_max_error |
0 |
| identical_stereo_max_error |
0 |
| table_max_error_db |
4.958058963e-11 |
| minimum_gain_db |
0.050664991 |
| maximum_gain_db |
9.479791027 |
| worst_scalar_relative_error |
1.866837828e-15 |
| worst_scalar_absolute_error |
4.884981308e-15 |
| worst_crest_change_due_to_compensation_db |
4.263256415e-14 |
| worst_window_gain_span_db |
2.692402287e-12 |
| worst_compression_slope_error |
1.776356839e-15 |
Residual output level
A fixed gain cannot reverse frequency-dependent compression while retaining it. These residuals are disclosed, including severe bass-sine compression; no validation render was individually normalized. The synthetic phrases are not isolated recorded stems.
| Core |
Probe |
Worst absolute K error through 50% IRON |
K error at 100% |
| Nickel |
sine_50Hz |
0.042 dB |
-15.466 dB |
| Nickel |
sine_1000Hz |
0.047 dB |
+1.262 dB |
| Nickel |
bass_envelopes |
0.044 dB |
-13.702 dB |
| Nickel |
percussion_transients |
0.025 dB |
-7.211 dB |
| Nickel |
vocal_like_formants |
0.048 dB |
+0.981 dB |
| Nickel |
heldout_broadband |
0.040 dB |
+3.644 dB |
| Nickel |
silence_transitions |
0.040 dB |
+3.642 dB |
| Nickel |
sudden_level_steps |
0.040 dB |
+3.758 dB |
| Nickel |
heldout_bright_noise |
0.131 dB |
+7.289 dB |
| Alloy |
sine_50Hz |
0.060 dB |
-13.099 dB |
| Alloy |
sine_1000Hz |
0.082 dB |
+3.386 dB |
| Alloy |
bass_envelopes |
0.066 dB |
-11.437 dB |
| Alloy |
percussion_transients |
0.022 dB |
-7.653 dB |
| Alloy |
vocal_like_formants |
0.083 dB |
+2.675 dB |
| Alloy |
heldout_broadband |
0.061 dB |
+3.023 dB |
| Alloy |
silence_transitions |
0.062 dB |
+3.027 dB |
| Alloy |
sudden_level_steps |
0.061 dB |
+3.109 dB |
| Alloy |
heldout_bright_noise |
0.205 dB |
+6.219 dB |
| Steel |
sine_50Hz |
0.115 dB |
-11.654 dB |
| Steel |
sine_1000Hz |
0.119 dB |
+4.456 dB |
| Steel |
bass_envelopes |
0.119 dB |
-10.084 dB |
| Steel |
percussion_transients |
0.008 dB |
-7.555 dB |
| Steel |
vocal_like_formants |
0.120 dB |
+3.520 dB |
| Steel |
heldout_broadband |
0.105 dB |
+2.538 dB |
| Steel |
silence_transitions |
0.106 dB |
+2.544 dB |
| Steel |
sudden_level_steps |
0.105 dB |
+2.623 dB |
| Steel |
heldout_bright_noise |
0.345 dB |
+5.353 dB |
Held-out errors | Compression proof | Steps and automation
At constant controls, 50 ms windows over silence transitions and sudden input steps retain one gain ratio. Raw magnetic settling/ring-down remains in both outputs; absence of instantaneous silence is not evidence of gain riding. Core changes use the production transition path and give identical samples with 17- and 1024-sample processing partitions at the same event times. This disclosed six-second automation probe also requires output peak <=1 FS and adjacent-sample jump <=0.8 FS; finite output alone does not pass a switching spike. The separate automation matrix extends that guard to every ordered core pair and high host rates.
The input/output crest-factor change belongs to the circuit. The additional compensation does not change that crest factor or the output-versus-input compression slope. This test does not replace the LF bench's frequency/sample-rate analysis, host validation, allocation audit or human listening. Recorded full-mix validation is separate.
TUBE / BUS low-frequency dependency audit
Recorded 2026-09-24. No production code or parameter values in SAK-TUBE,
SAK-BUS, or Shared/DSP were changed by the IRON LF revision.
The excessive IRON shelf is not a universal consequence of this JA solver.
BUS already retains essentially flat bass with its independently calibrated
transformers. TUBE is a complete tube amplifier and speaker-load model;
its larger 20 Hz loss mostly persists when its output core gap is removed.
Applying IRON's line-transformer geometry or source impedance to either
plugin would therefore be an unrelated change.
Exact production dependency map
| Product / location |
Production magnetic implementation |
Circuit and parameter ownership |
IRON, Source/DSP/IronCore.h |
canonical Shared/DSP/MagneticCore.h |
IRON's own three line-transformer equivalents |
TUBE, SAK-TUBE/Source/DSP/MagneticCore.h |
forwarding header to canonical Shared/DSP/MagneticCore.h |
four output-transformer configurations in Components.h; JA is solved inside the active tube / transformer / moving-coil load network in Amplifier.cpp |
TUBE input transformer, Amplifier.cpp |
older cubic and play-memory branch, not JA |
300 H nominal, 600 ohm source, 1450/1550 ohm copper, 12 mH leakage, 208 pF reduced shunt capacitance; nonlinear tube-grid load |
BUS, SAK-BUS/Source/DSP/Transformer.h |
independent older copy at shared/SAKMagnetics/MagneticCore.h |
two terminal-calibrated high-nickel equivalents; loaded KCL, trapezoidal leakage / winding-capacitance network |
BUS, BusCompressor.h |
input and output Transformer instances per stereo channel |
source, load, amplifiers, coupling, servo and VCA belong to BUS |
BUS's copied kernel predates the canonical kernel's newer extreme-field
bracketing and projection changes. It does not inherit edits to the
canonical header. This audit did not identify an LF formula or numerical
error requiring a kernel migration. Both kernels use SI reluctance, including
the finite material permeability and series equivalent gap; the nominal
inductance metadata is not the JA branch's executable inductance.
Archived release/source-check trees are historical copies, not additional
active plugin consumers.
Provenance and reproduction
validation/lf-revision/family/source_manifest.json freezes the original
production headers/sources and SHA-256 values. source/ retains those files.
Original BUS measurement DLL and regression executable, plus TUBE's core
validator, are copied into baseline-binaries/ with their hashes. The final
diagnostic DLL and current source hashes are in bridge_provenance.json.
Run from the workspace root:
py -3 SAK-IRON/tools/family_lf.py --build --groups parameters,bus,tube,experiments,regression
The C ABI in tests/family_lf_bridge.cpp calls the exact production engines.
BUS's private kernel is namespace-renamed only in this offline translation
unit so it can coexist with TUBE's canonical kernel. TUBE uses a 96 kHz,
1x host path; BUS full-chain uses 96 kHz, 2x oversampling. Raw BUS transformer
measurements run at 96 kHz. The carrier grid spans 5 Hz–40 kHz. Coherent,
integer-cycle windows demodulate fundamentals separately from harmonics,
up to the 20th harmonic or Nyquist. No THD interpretation is possible above
the frequency where a second harmonic fits below Nyquist.
The measurements are finite-amplitude probes, not an assertion of exact
infinitesimal linearity. Each tone receives at least eight cycles / 0.4 s
settling followed by at least four cycles / 0.2 s observation. Cosine startup
limits initial integrated-flux offset. BUS's full chain first settles four
seconds of silence, including its 0.15 Hz servo; otherwise tiny-signal
measurements are contaminated by startup offset. TUBE warms its operating
point for one second; a parallel idle run is subtracted to reject the
amplifier's zero-input settling contribution. Measured nonlinear transfer
still includes program-induced supply and bias changes.
tests/family_lf_switch.h and a generated offline copy of Amplifier.cpp
permit two TUBE experiments: zero output-core gap and replacement of the JA
branch with its initial linear inductance plus the original eddy loss. Only
the two magnetic evaluation calls are redirected. The default dispatch
matches production sample-for-sample; maximum difference is exactly zero.
This experimental code is not included in any plugin target.
BUS: gaps are significant reluctance but do not create an excessive shelf
The effective demagnetized relative permeability follows
chi_rev = c Ms / (3 a)
mu_r0 = 1 + chi_rev / (1 - alpha chi_rev)
L0 = mu0 N^2 A / (path / mu_r0 + gap).
The equivalent linear shunt branch is
Ymag = 1/(j omega L0) + eddyCoefficient * path/(N^2 A).
Source resistance, primary copper, secondary copper, load, leakage and
capacitance are included independently in the analytic loaded-circuit
response. The analytic curve is a continuous-time linearization; the
production measurements include their actual discretization.
| Quantity |
BUS input |
BUS output |
| N / area / path |
4200 / 53.980 mm² / 120 mm |
2100 / 131.989 mm² / 150 mm |
| Effective gap |
3.1041 µm |
16.6050 µm |
| Initial relative permeability |
135,670 |
89,216 |
| Initial inductance |
300 H |
40 H |
| Zero-gap inductance experiment |
1352.8 H |
435.0 H |
| Fraction of total reluctance from gap |
77.8% |
90.8% |
| Source / primary / secondary resistance |
600 / 1450 / 1550 ohm |
2 / 40 / 40 ohm |
| Load |
10 kohm |
10 kohm |
| Leakage / differential capacitance |
18 mH / 55 pF |
20 µH / 90 pF |
Even a gap-dominated reluctance need not produce meaningful audio-band
attenuation: the absolute inductance and driving/load impedances determine
the corner. At 20 Hz, the approximate inductive reactances are 37.7 kohm
and 5.03 kohm. The source plus primary winding is 2050 ohm and 42 ohm,
respectively. parameters.csv records the complete values; the source/load
sweep covers source 0–2000 ohm and load 600 ohm–100 kohm.
The measured fundamentals below are normalized to each setting's 1 kHz
fundamental, not broadband RMS or harmonic energy:
| Peak excitation |
Input 20 Hz loss |
Output 20 Hz loss |
Input / output 20 Hz THD |
| 1 mV |
0.00913 dB |
0.00030 dB |
0.000868 / 0.000048% |
| 1.736 V (about +4 dBu sine) |
0.01110 dB |
0.00105 dB |
0.00513 / 0.00201% |
| 8 V |
0.02715 dB |
0.00428 dB |
0.1356 / 0.0206% |
BUS's complete uncompressed path (threshold +12 dB, noise off) measures
20 Hz/1 kHz at -0.01053, -0.01264 and -0.03571 dB for peak input 0.0001,
0.1 and 0.5 FS. Those results do not resemble the original IRON problem.
Removing gap, eddy loss, source, copper, leakage and capacitance individually
is recorded in bus_isolation.csv.



BUS's existing terminal calibration is documented in
MAGNETIC_CALIBRATION.md.
Its reference anchors are Jensen's
JT-11P-1
and JT-11-BMCF.
The high-nickel equivalent geometry is underdetermined; these parameters
must not be presented as measurements of either manufacturer's construction.
The fact that BUS's effective gaps are terminal-calibrated is not evidence
that the same gaps should have been transplanted into IRON.
TUBE: distinguish amplifier bandwidth from line-transformer coloration
TUBE's output magnetic parameters are generated from a terminal inductance
target derived from Hammond guitar-amplifier replacement transformers.
The geometry is explicitly inferred. Its control preserves an inherited
musical mapping: strength = 0.2 + 5 * transformer,
L0 = nominalL / (1 + 0.14 * strength), and an inverse-square-root saturation
linkage mapping. The resulting gap enforces that inductance; it is not a
measured physical joint. This is disclosed behavior, not independent
identification of a real winding pack or literal spacer.
For EL34/KT88, initial L is 23.365 / 17.430 / 13.900 H at transformer
0 / 50 / 100%. The corresponding inferred gaps are 518.18 / 41.28 / 22.93 µm.
The large minimum-control gap in particular should not be described as
a measured EI joint. Eliminating it without redesigning turns and area
would increase L to 1094.9 / 81.10 / 42.11 H, violating the terminal
inductance mapping by factors as large as 46.9. The 6L6 and EL84 parameter
sets, copper, leakage and capacitance are also exported in parameters.csv.
At the measured EL34 setup (Drive 35%, Power 50%, default tone/presence,
1e-4 FS peak), the following are 20 Hz fundamental gains relative to 1 kHz:
| Transformer control |
Production complete path |
Output core replaced by initial linear L |
Output core gap removed |
Input transformer alone, in active circuit |
| 0% |
-5.223 dB |
-5.227 dB |
-4.351 dB |
-0.038 dB |
| 50% |
-5.833 dB |
-5.906 dB |
-4.445 dB |
-0.071 dB |
| 100% |
-6.515 dB |
-6.660 dB |
-4.791 dB |
-0.113 dB |
The bulk of the 20 Hz loss persists without the output core's gap. Replacing
JA with the corresponding linear inductance closely reproduces the modest
excitation response. This establishes that the low-frequency shape is
primarily the selected amplifier/coupling/load bandwidth, with finite
magnetizing inductance contributing; it is not a spurious shelf inserted
by hysteresis iteration. At 0.1 FS peak, default-transformer full-path loss
becomes -6.116 dB, with 3.07% THD at 20 Hz; this additional nonlinear
behavior must be kept separate from the linear bandwidth.



TUBE also retains a speaker-impedance resonance near 95 Hz, coupling networks,
tube gain stages and feedback. It is not designed as a flat line transformer.
The Hammond 1750N reference
has a specified 70 Hz–15 kHz response band under its rated conditions; a
20 Hz line-transformer flatness goal cannot be transferred to this complete
amplifier. TUBE's detailed source provenance, winding endpoints, actual
measurement frequencies, and approximations remain in
PASSIVE_REFERENCES.md.
This audit does not prove perfect physical identification of TUBE's inferred
geometry. It shows why changing that established model to repair IRON would
be unjustified and audible.
Regression results and retained failures
The frozen pre-investigation production files are independently compiled into
family_lf_frozen.dll; the current files compile into family_lf_bridge.dll.
Their outputs and TUBE node taps are bit-identical, maximum difference
0.0, for a composite 20 Hz / 997 Hz / 7.6 kHz signal, TUBE transformer settings
0/50/100%, and BUS quality 0/1. Audio SHA-256 pairs are retained in
frozen_audio_regression.json. This is an actual audio comparison in addition
to the unchanged production-source hashes.
TUBE's relevant CTest suite passes resampling, magnetic projection, core
mechanisms and bandwidth. Its existing material-reference test remains
failed: the smallest held-out M130 loop has H NRMSE/peak 0.319923 versus
the existing 0.15 limit. The two larger loops pass (0.132372 and 0.018360).
No threshold was changed. Full-chain LF measurements report zero solver
failures. Evidence: tube_regression.log.
BUS's C++ DSP regression passes. Running its existing Python frequency,
transformer and published-reference suite yields 15/16 checks passing. Its
current 20 Hz–20 kHz response range is 0.113552 dB, within the existing
absolute 0.5 dB criterion, but the stored implementation fingerprint is
0.065867454 dB with tolerance 0.025 dB; the 0.0476841 dB difference fails
that existing baseline comparison. This is a pre-existing baseline
discrepancy, unchanged by the IRON revision. The baseline was not regenerated
to hide it. All measured VCA reference checks and transformer solve residual
checks pass. Evidence:
REPORT.md
and bus_regression.log.
The family audit does not claim every historic validation suite passed.
It demonstrates that no TUBE/BUS audio changes were introduced and records
the two existing reference/baseline issues explicitly.
SAK-IRON low-frequency investigation: engineering evidence
Research reviewed 2026-09-24, before selecting the revised circuit. This is the
source/assumption record; production measurements and the final implementation
decision are recorded separately. No commercial transformer is being cloned.
The original circuit's inferred gaps are substantial magnetic reluctances, even
though their dimensions are small. Removing them is physically meaningful, but
cannot alone explain or cure several dB of loss at 20 Hz: the original linear
estimates are approximately -0.10, -0.42 and -0.75 dB there. A larger measured
loss requires examining signal-dependent core compression and drive mapping.
Published device constraints
These are manufacturer facts in their own fixtures. They are not equivalent to
measurements of our generic models. URLs, exact locations and retrieval hashes
are in the LF source manifest and
PDF hashes.
| Reference |
Material/construction |
Source / load |
Published LF response |
Relevant additional facts |
| Jensen JT-11P-1, pp. 1-2 |
Line input, 1:1 |
600 ohm / 10 kohm |
At +4 dBu: -0.04 dB typical, -0.15 dB minimum at 20 Hz relative to 1 kHz |
Primary/secondary DCR 1450/1550 ohm; THD 0.025% typical at 20 Hz, +4 dBu; 1% THD at +20 dBu typical, 20 Hz |
| Lundahl LL1540, p. 1 |
High-permeability mu-metal, line input |
600 ohm / 15 kohm |
5 Hz-50 kHz within +/-0.2 dB |
Normal series-series connection; each primary half 610 ohm, each secondary half 800 ohm; THD below 0.1% at +20 dBu and below 1% at +30 dBu, 50 Hz |
| Lundahl LL1517, p. 1 |
Audio C-core, line output |
10 ohm / 600 ohm |
10 Hz-80 kHz within +/-0.3 dB |
Each primary/secondary half 9.2/9.5 ohm; 0.3 mH secondary leakage in series; +24 dBu maximum before saturation at 30 Hz with series secondary |
LL1540's response specification does not state its measurement level, so it
cannot establish level-independent flatness. LL1517's sub-0.03% distortion at
+20 dBu/30 Hz is specified with mixed feedback; do not compare that number to
an unassisted passive simulation. The maker's
line-output guidance
identifies the family as silicon-iron C-cores and recommends low source
impedance. Thus low inductance can coexist with good bass when the driving
resistance is also small; the relevant engineering ratio is resistance to
inductance.
Additional published inductance examples:
- Sowter 4383, mu-metal line
transformer: approximately 12.5 H primary and 99 ohm total DCR referred to
primary, ratio 1:4.08. Its page contains mutually inconsistent distortion
entries and ambiguous reversed-use response conditions. Retain the clearly
identified inductance/DCR facts; exclude those distortion/response entries
from a calibration target.
- Sowter 1990, moving-coil step-up:
approximately 2 H with primary halves in series, 2.4 ohm primary DCR and
1500 ohm secondary DCR. This is a low-source-impedance application, not a
line-input target.
- Sowter 8665, tube-driven headphone
output: approximately 130 H primary. It uses a composite mu-metal/M6 core and
is a different application/turns ratio from our 1:1 line circuit.
The orders of magnitude are application-dependent: a few H is not inherently
incorrect, and hundreds of H is not a universal requirement.
First-principles linear prediction
This derivation is an independent calculation from the implemented topology.
All impedances below are referred to the primary. For the 1:1 IRON circuit,
ignore leakage/capacitance temporarily to isolate the LF mechanism:
R1 = Rsource + Rprimary
R2 = Rsecondary + Rload
Rth = R1 || R2
Hmid = Rload / (R1 + R2)
H(s) / Hmid = s*Lm / (Rth + s*Lm)
fc = Rth / (2*pi*Lm)
relative_response_dB(f) = -10*log10(1 + (fc/f)^2)
Lm = mu0*N^2*Ae / (le/mu_initial + gap)
q = c*Ms/(3*a)
mu_initial = 1 + q/(1-alpha*q)
The JA expression describes a demagnetized origin with frozen irreversible
state in the infinitesimal limit. It is not an arbitrary finite-loop AC
inductance. Differentiating the inverse material law gives the incremental
inductance around the instantaneous state; a finite driven loop also includes
irreversible evolution. The two must not be interchanged.
Original v0.1.0 analytic values, with the existing geometry and winding data:
| Core |
Initial relative permeability |
Lm with original gap |
Lm without gap |
Original gap's fraction of total reluctance |
Original fc |
Original 20 Hz response |
| Nickel |
45,000 |
11.975 H |
25.447 H |
52.9% |
2.989 Hz |
-0.096 dB |
| Alloy |
18,000 |
6.077 H |
10.179 H |
40.3% |
6.389 Hz |
-0.422 dB |
| Steel |
22,126 |
5.703 H |
12.012 H |
52.5% |
8.657 Hz |
-0.746 dB |
The same calculation predicts -1.33/-4.20/-6.02 dB at 5 Hz. The static loss is
real in these inferred circuits and is distinguishable from saturation. In
particular, an infinitesimal-input curve cannot be assumed to represent a
normal-level sine at minimum IRON: those are different experiments.
Reproducible script,
numeric calculations, and
counterfactual plots.
The plot is analytical, not output from the production plugin; the full circuit
bench must verify it with leakage, capacitance, eddy loss and discretization.
What the published response implies about inductance
Inverting the same first-order expression with published DCR/source/load gives
an inferred R/L equivalent, not the manufacturer's measured inductance:
| Published anchor used |
Inferred Rth |
R/L equivalent needed |
| JT-11P-1 typical -0.04 dB at 20 Hz |
1741 ohm |
About 144 H |
| JT-11P-1 limit -0.15 dB at 20 Hz |
1741 ohm |
About 74 H |
| LL1540 +/-0.2 dB at 5 Hz |
1640 ohm |
About 240 H if the negative limit is entirely R/L rolloff |
| LL1517 +/-0.3 dB at 10 Hz |
27.15 ohm |
About 1.62 H under the same assumption |
These are broad design checks. Real permeability/loss depends on excitation,
and a tolerance band is not a measured negative endpoint. The derivation omits
all other parasitics; it cannot recover winding count or magnetic geometry.
See the machine-readable inference table.
Air gaps and construction
Whitlock, printed pp. 5-6
distinguishes deliberate gaps for DC tolerance from unintended lamination
joints. Either can reduce inductance substantially; properly assembled
laminations minimize unwanted gaps, while a tape-wound toroid has no cut joint.
His discussion of source impedance and LF response on pp. 9-10 makes clear
that nonlinear magnetizing current causes output error through finite source
and copper resistance. Neither hysteresis nor high permeability requires a
fixed audible-band bass shelf.
Lundahl LL1620/1623/1627, p. 3
quantifies an intentional DC application: its LL1623 entries pair a 25 um
push-pull gap-column value with 150 H, versus 125/190/250 um single-ended
values with 46/30/23 H. The column is labelled delta/2, so these values must
not be copied as our single-path total gap. These large power-output examples
demonstrate the tradeoff, not an appropriate gap for a DC-free line transformer.
Evidence boundary: none of the inspected primary references identifies
2/3/5 um equivalent joint gaps for our three generic profiles. Those values
were assumptions, not measurements. No primary evidence was found for a
universal residual-joint gap in all EI or C-core audio transformers.
For a generic DC-free, well-closed magnetic path, zero additional equivalent
gap is a defensible idealization. It does not assert that real joints have
zero reluctance or that every construction is a toroid. An explicit nonzero
gap should come from a selected construction or a measured assembled-core
inductance. A 0.2 um sensitivity experiment is useful, but is not a newly
measured or universally correct gap. The nonlinear solver must remain stable
without a gap; adding reluctance solely for numerical stability is not a
physical validation.
Permeability and geometry constraints
VAC high-nickel data
distinguishes initial permeability measured at 0.1 A/m from maximum
permeability. MUMETALL strip has typical initial values 45,000 or 90,000 for
different specified heat treatments, and 0.78 T saturation polarization.
The 45,000 value supports an order of magnitude; it is not a fitted
infinitesimal JA susceptibility or an assembled transformer's measurement.
VAC 40-50% nickel data
lists 1.55 T saturation polarization and maximum permeability 150,000-180,000
for the relevant strip families. Maximum permeability does not justify
replacing the model's initial 18,000 with those values. The latter remains a
documented inference, and the nickel loop shapes remain unmeasured archetypes.
The steel fit's weak minor-loop accuracy also remains a separate limitation.
Faraday's law constrains the turns-area product:
Bpeak = Vrms / (sqrt(2)*pi*f*N*Ae)
Vrms at selected B = sqrt(2)*pi*f*N*Ae*Bpeak
With the original 600 turns and 1 cm^2 nickel area, N*Ae=0.06 turn m^2;
the steel equivalent is 0.072. At 20 Hz, a hypothetical 1 V RMS across the
nickel winding implies 0.188 T before source/copper drops. At 5 Hz it implies
0.750 T, close to the nickel polarization scale. This establishes why a
response change can become nonlinear in the bass even when the infinitesimal
circuit is flat. Ms is a magnetization limit, not a hard bound on total B.
Manufacturer terminal sheets do not uniquely identify turns or area.
Increasing N to improve inductance simultaneously changes N*Ae (saturation
headroom) and typically copper resistance, leakage and capacitance. Increasing
N alone without documenting the revised construction is an incomplete repair.
Defensible circuit experiment and acceptance targets
Evaluate an ungapped equivalent and a 50-ohm source, retaining the original
turns, area, path length and finite winding copper. Low source impedance is
supported by the cited line-output practice. Fifty ohms is a generic design
choice, not a measured hidden parameter of a particular reference transformer.
The isolated R/L prediction then gives 20-Hz losses of about
0.007/0.058/0.053 dB for Nickel/Alloy/Steel. The small 0.2-um-gap sensitivity
gives 0.009/0.063/0.058 dB. A useful product target is therefore less than
0.1 dB of unintended static loss at 20 Hz in the revised nominal fixture,
to be verified against the full solver rather than enforced with equalization.
This is an engineering acceptance target informed by the reference universe;
it is not a claim of equivalence to the best line-input transformer.
Lower source resistance reduces the conversion of nonlinear current into
voltage error; it does not remove finite copper, JA memory, material
dependence, or eventual saturation. Removing a series gap increases
magnetizing inductance while leaving the material law intact. Preserve and
measure actual compression separately. Changes to TUBE/BUS require evidence
that their own topology, operating point or implementation has the same
problem; a shared kernel name alone is insufficient.
Interpreting isolation experiments
- A linearized magnetizing branch must follow the calculated R/L response;
deviations implicate the electrical integration or additional network.
- Leakage inductance and winding capacitance mainly control the upper-band
response in this topology; removing them should not cure a static bass shelf.
- The existing thin-sheet eddy term is equivalent to positive shunt conductance,
Geddy = le*keddy/(N^2*Ae). It must be included when calculating exact linear
insertion gain, but is not itself a bass-only correction.
- A raw JA core has a B/H constitutive relation. It does not have a unique
audio voltage transfer function without its driving circuit. Compare its
susceptibility/current against the circuit branch, not a fabricated EQ curve.
- Record generator input, winding voltage, branch current and load voltage.
A fundamental reduction accompanied by harmonics and reduced incremental
inductance is compression; attenuation surviving vanishing amplitude belongs
to the linear circuit.
- Constant excitation cancellation or makeup changes overall gain, not the
normalized frequency response of a linear circuit. At high drive, broadband
makeup can make surviving mids/highs relatively conspicuous while the bass
is physically compressed. Correct drive allocation and static compensation
without compensating that bass compression with a shelf.
Automatic compensation boundary
Use exact/static linear excitation and insertion compensation first. Any
additional musical compensation should be a smooth, bounded drive/core curve
derived offline from fixed, disclosed reference signals. It should not depend
on the live envelope. That preserves the within-setting compression curve,
silence behaviour, and transient gain reduction: multiplying all samples by
the same gain cannot restore a flattened transient relative to its sustain.
A fixed curve cannot match loudness simultaneously for a very quiet sine, a
high-level bass tone and a dense full-band mix when nonlinear compression
differs between them. Report those residual level differences; a promise of
universal unity perceived loudness would require signal-dependent riding or
would conceal real compression. Separate calibration references from validation
tones, bursts, synthetic source-class probes and the user's recorded mixes.
Automatic compensation: protocol and evidence boundary
Written before selecting the revised circuit and compensation coefficients.
The control removal must replace the existing arbitrary +12dB high-drive makeup
with a reproducible, bounded, core/drive calibration. Excitation gain and nominal
resistive insertion loss are algebraically cancelled. Additional correction is
a fixed lookup curve, selected by CORE and IRON and smoothed during automation.
No program envelope, running RMS, detector, silence gate or adaptive loudness
feedback is allowed in the production compensation path. A constant control
setting therefore applies one constant scalar to a whole transient, preserving
the circuit's crest factor and compression slope.
Calibration and independent tests
Use repeatable synthetic, band-limited noise references, with held-out
noise seeds and spectra for validation. Reference input levels and calibration
duration are stored with the coefficient generator. Calibration is offline at
48kHz using the same C++ transformer engine. The user recordings are validation
material only, never coefficient-fitting inputs. Compensation is bounded to
avoid an unreasonable boost of a severely collapsed core. The final bound and
any residual level error are reported, not hidden by per-file normalization.
Offline measurements include unweighted RMS, K-weighted mean-square change,
peak and crest-factor change. At 48kHz the K-weighting coefficients are the
published ITU-R BS.1770 prefilter coefficients. This is a comparison metric,
not a claim of EBU-compliant integrated loudness metering: gated LUFS, surround
channel handling, LRA and a certified true-peak meter are outside its scope.
The weighting filters exist only in Python measurement tools and never filter
the plugin output.
References:
Validation must include coherent steady sines (bass and midband), bass-note
envelopes, transient percussion, harmonic/formant vocal-like probes, full mixes,
silence followed by signal, and sudden input-level changes. Generated probes are
explicitly synthetic; they are not recordings of isolated instruments or vocals.
The supplied mixes remain private and are excluded from release archives.
Compare compensated and uncompensated waveforms at fixed controls to prove the
former is a scalar multiple of the latter. Compare low/high input levels to
prove physical compression persists. Check identical compensation for silence
and sound, bounded automation transitions, reset determinism, no allocations,
no stereo-dependent gain differences, exact bypass and a MIX=0 dry null.
No static coefficient set can equalize every sine frequency, signal level and
spectrum once the core is strongly nonlinear. Document that limit alongside
the representative program results. Do not secretly add a live gain rider to
make an extreme sine test appear level-invariant.
Selected calibration ensemble
The final curve gives equal weight to two reproducible power spectra: 1/f
(pink) and 1/f^2 (brown), band-limited from 25 Hz to 18 kHz, at -24 and
-18 dBFS RMS, with independent seeds 1307 and 2311. The 63 core/drive nodes
therefore use 504 synthetic references. Each node averages the required gain
in dB; interpolation also occurs in dB. The allowed bound is -3..+18 dB.
This is a musical reference ensemble, not a claim of a universal music
spectrum or a physical material property.
The first pink-only calibration left large extreme-setting losses on
bass-weighted held-out material. Adding a second independent synthetic
spectrum balances this tradeoff without fitting the supplied recordings or
adding program-dependent gain. Preserved candidate data shows the cost:
bright, high-frequency material can become louder at extreme IRON. Isolated
bass and percussion can still become substantially quieter through genuine
magnetic compression. Through moderate settings, residual differences remain
small. Neither reference choice can make every saturated signal unity-level.
Held-out noise uses separate seeds and a third, brighter spectrum; bass,
percussion, vocal-formant, sine, silence and step probes remain validation-only.
The supplied twelve mixes also remain outside the coefficient generator.
Final reports retain both the performance improvement and the residual limits.
SAK-IRON 0.2.0 validation and release scope
The LF revision corrects IRON's inferred equivalent circuit and excitation
mapping, removes OUTPUT, and adds fixed calibrated automatic compensation.
It does not add compensating EQ or alter TUBE/BUS audio. The engineering
record is the combined local report.
Low-frequency cause and result
Unsupported additional joint gaps consumed 40-53% of the initial magnetic
reluctance. Together with the selected source resistance, they produced a
passive LF pole. The larger drive-dependent loss was real core compression
triggered too early by the old excitation mapping. A broadband makeup scalar
cannot create or remove the LF/HF ratio; the former arbitrary high-drive boost
also made level comparisons misleading.
The revised closed-path equivalent has no additional gap and uses a 50-ohm
source. Copper, turns, area, path length, JA parameters, hysteresis history,
eddy loss, leakage and capacitance remain. The gentler 0-60% excitation range
reserves extreme drive for the upper region; the original 100% voltage remains.
| 20 Hz relative to 1 kHz |
Nickel |
Alloy |
Steel |
| Original linear probe |
-0.094 dB |
-0.418 dB |
-0.727 dB |
| Revised linear probe |
-0.005 dB |
-0.054 dB |
-0.046 dB |
| Original IRON 50%, -12 dBFS peak |
-3.657 dB |
-0.513 dB |
-1.202 dB |
| Revised IRON 50%, -12 dBFS peak |
-0.031 dB |
-0.135 dB |
-0.082 dB |
Revised 20 Hz THD at 50% remains 0.391/0.461/0.269%; at 75% it rises to
91.4/52.1/22.4%. Extreme relative bass compression remains approximately
33 dB. Restored modest-drive weight was not achieved by removing magnetism.
LF investigation, primary references,
and interactive before/after plots
retain the assumptions, equations, component substitutions and limitations.
Both revisions include 1,764 engine frequency/level/drive cases, 1,008 isolated
circuit cases and 540 level cases. The engine sweeps use 96 kHz, 5 Hz-40 kHz,
IRON 0/10/25/50/75/90/100%, a genuinely small internal-source probe and fixed
-30/-12/-3 dBFS levels, with at least two seconds settling. The baseline's seven
checks and revision's ten checks pass, including linearized-circuit agreement,
independent backward-Euler transfer, filter response, dry null, reset and
zero-gap numerical stress.
Automatic compensation and switching
The additional gain is a bounded fixed CORE/IRON lookup, calibrated offline.
No live RMS detector, envelope follower, adaptive normalization or silence
correction runs in the plugin. Its scalar identity, crest preservation and
compression-curve slope are tested against an independently compiled raw bridge.
See calibration protocol and
held-out validation.
Automation testing exposed a pre-existing core-change artifact: a projection's
stored-energy discharge reached the output through FIR history after the
five-millisecond fade had already begun reopening. The revised transition
holds delayed dry for 5 ms plus 128 host samples after projection, then fades
wet back in. Both magnetic states keep evolving; no flux, hysteresis history or
filter state is erased. Prepared plugin latency stays 128 samples.
A retained pre-fix test reproduction peaked at 1.560 FS through the switching
artifact. The final 120 cases covering all ordered core pairs,
combined and drive-only edits, five sample rates from 44.1 to 768 kHz, and
0.4 FS peak input pass the disclosed peak/step limits. Worst peak is 0.931 FS,
worst adjacent-sample change 0.749 FS, and block-partition differences are zero.
These are fixture-specific bounds, not a limiter claim. See
automation evidence.
Product checks
- All three CTest suites pass: DSP regression, processor/state/UI integration,
and an independent host loading the actual VST3.
- All 22 existing product engineering gates pass without relaxed thresholds.
- pluginval strictness 10, seed 424242 passes.
- Host tests verify float/double behavior, mono/stereo, 128-sample prepared
latency, exact delayed bypass, state restoration and production-engine parity.
- OUTPUT is absent from the GUI and host parameter list. Schema-1 states with
either -24 or +24 dB stored OUTPUT restore the retained controls and produce
bit-identical audio to the corresponding new state; the removed trim is not
reserialized. The state schema is now 2.
- Blender assets were regenerated for three controls. Native editor snapshots
at 800/1000/1500 logical pixels and 2x density are inspected. Keyboard, typed
values, balanced automation gestures, presets and accessibility checks pass.
The general DSP report
retains transfer curves, B-H loops, spectra, THD versus frequency/level,
harmonic distribution, compression, intermodulation, aliasing and rate tests.
The nonlinear measurements retain the limited observable harmonic bandwidth
near Nyquist; sample-rate THD comparisons use a common 4 kHz harmonic band.
The 8x alias test's worst nonharmonic residual is -64.96 dBc at full drive;
25% and 75% measurements remain below -138 dBc. Difference from 16x also
contains integration/filter error and is not mislabeled pure aliasing.
Oversampling is still 8/4/2/1 at increasing host rates; no brute-force increase
was used to repair the LF problem. FIR-only LF loss is below one millionth of
a dB in the retained test. The measured standard-rate response spread remains
within the existing limits.
Adversarial input/DC reversal tests across 8-768 kHz produce zero solver
failures. Maximum recorded magnetic residual is about 1e-12 T, electrical
residual about 9.8e-11 A. All storage is fixed; processing, automation and reset
allocate no memory. Output is not limited: pathological input can exceed full
scale. CPU measurements are workstation wall times, not worst-case DAW guarantees.
TUBE and BUS
The family audit traces every implementation, plots full
paths and transformer nodes, and records source hashes. Frozen/current compiled
TUBE and BUS produce bit-identical audio. Neither plugin's production code nor
the shared magnetic/filter headers changed in this revision.
BUS's tested uncompressed path loses about 0.011 dB at 20 Hz relative to 1 kHz.
TUBE's audited amplifier path loses about 5.83 dB at modest excitation; its
linear magnetic branch reproduces that shape, and removing its output gap
still leaves about 4.45 dB loss. Its amplifier/coupling/speaker context differs
from IRON's line-transformer objective. No arbitrary family-wide gap removal
or bass correction was propagated.
Existing discrepancies remain explicit: TUBE's smallest held-out steel-loop
H error is 0.319923 against its 0.15 goal. BUS's current response range is
0.113552 dB, passing the 0.5 dB absolute limit but failing the stored 0.065867454
dB implementation fingerprint within 0.025 dB. The fingerprint difference is
0.0476841 dB. Neither baseline nor acceptance threshold was changed to hide it.
Physical and listening limitations
Steel's retained small/medium/major loop H errors are about 32.00/13.24/1.84%,
and the two smaller loop losses are substantially underestimated. Nickel and
Alloy loop shapes and all winding geometry are inferred designs. The model is
not a measured commercial transformer replica. Manufacturer fixtures constrain
orders of magnitude; they do not uniquely identify our equivalent circuit.
The retained high-frequency leakage/integration response is also explicit:
20 kHz relative to 1 kHz is about -0.77/-1.21/-1.96 dB across the cores. The LF
improvement does not establish flat full-band equivalence to the cited devices.
Temperature, magnetic viscosity, distributed excess loss and vector anisotropy
remain outside this reduced model.
Twelve supplied mixes have private, aligned before/after renders and a 216-case
all-core program-level matrix. Maximum absolute K-weighted level error is
0.107 dB through 50% IRON and 0.677 dB through 75%. At 100%, median errors are
-2.08/-1.41/-1.03 dB for Nickel/Alloy/Steel; individual mixes span -4.02 to
+1.82 dB across the cores. These are held-out validation results, not universal
loudness guarantees. One common playback trim per source preserves level
comparisons; raw float renders retain exact output. No supplied audio was used
to fit coefficients. Separate instrument/vocal recordings were unavailable;
synthetic percussion, bass and vocal-formant probes are labeled accordingly.
Human listening approval is not claimed. Extreme bass-rich material can lose
substantial level because actual magnetic compression is retained; a fixed
scalar cannot guarantee unity loudness for every spectrum and input level.
Distribution
Windows x64 VST3 and standalone builds, a PDF manual, unsigned installer,
portable ZIP, corresponding source with JUCE, licenses, hashes and build
provenance are generated locally. No site publication or installed production
plugin replacement is performed. Older sessions restore retained parameter IDs
but no longer apply OUTPUT; the new excitation mapping deliberately changes the
sound at equal percentages. The v0.1 artifacts remain available for exact recall.
Installer repair/uninstall and isolated corresponding-source rebuild evidence
are retained under validation/install-test and validation/source-check. Per-user
installation is exercised only inside a checked workspace path. All-users
installation requires an administrator environment and is not claimed tested.