From daf089b302b4b7d8b662f7260d1cdbf7fbffd262 Mon Sep 17 00:00:00 2001 From: CatastrophicCoder Date: Sun, 18 Oct 2026 22:45:28 +0300 Subject: [PATCH 1/2] m6: Newton budget D-064 (preamp root 64 iterations, EL34 pair 3 halvings); re-verification --- docs/DECISIONS.md | 14 +++ docs/PROGRESS.md | 6 ++ docs/VERIFICATION.md | 2 +- docs/WDF_DESIGN.md | 5 +- engine/src/Preamp.cpp | 2 +- engine/src/devices/TwoPentodes.h | 4 +- harness/reports/M3/20261018_b1234_DEFAULT.md | 86 +++++++++---------- .../reports/M3/20261018_b1234_knob_jump.md | 2 +- harness/reports/M4/20261018_b56_DEFAULT.md | 40 ++++----- harness/reports/M4/20261018_b5open_DEFAULT.md | 38 ++++---- harness/reports/M4/20261018_b6_DEFAULT.md | 40 ++++----- .../reports/M4/20261018_full_acceptance.md | 40 ++++----- harness/reports/M5/20261018_b56_knob_jump.md | 2 +- ...261018_automation_fs96000_pdiv1_j4exact.md | 66 ++++++++++++++ ...261018_full_acceptance_fs384000_j4exact.md | 40 ++++----- ...18_full_acceptance_fs384000_j4exact_hot.md | 16 ++-- .../M6/20261018_plugin_null_2x_full.md | 56 ++++++------ .../M6/20261018_x2_rates_newton_fix_full2x.md | 48 +++++++++++ harness/tolerances.py | 3 +- 19 files changed, 323 insertions(+), 187 deletions(-) create mode 100644 harness/reports/M6/20261018_automation_fs96000_pdiv1_j4exact.md create mode 100644 harness/reports/M6/20261018_x2_rates_newton_fix_full2x.md diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index 39ef262..35bb87e 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -1067,3 +1067,17 @@ Decision: keep the D-059 load. Above ≈ 200 Hz it matches all three measured cu (the curves differ mainly in resonance height and frequency). Consequences: none for the model; the D-059 parameters are now backed by measured curves of comparable cabinets, though not of the 2203's era. An era-matched curve (G12-65, G12M-70, G12T-75) would still be the better reference if one becomes available. + +## D-064 Newton budget: preamp root 64 iterations, EL34 pair 3 step halvings +Date: 2026-10-18 · Status: accepted (owner: "start on #2 and #3", the open Newton first-solve items of the M6 report) +Context: after D-062 two first-solve failures remained: HOT DI RR at 384 kHz (2, rescued; the only HOT acceptance FAIL) and +the 2x plugin model check (102 over 28 runs, 3 unrescued, mostly extreme unseen settings). A temporary failure dump in +`MultiportNewton` showed two causes. Preamp root: port 6 (V2b grid) during the cathode-follower's grid-conduction +transitions; Newton converges, but needs 33 … 56 iterations. Power-amp root: an EL34 plate at about 0 V with the grid +positive (screen current up to 0.6 A); with 2 halvings the damped steps oscillate. +Tried: half-step trigger 50 / 20 / 1e-9 V (D-043): no change. 4 halvings: 8 failures (the 1/16 steps stall, as in D-042). +Decision: preamp root `maxIter` 64 (was 32, D-052; the power-amp root stays at 32); EL34 pair (`TwoPentodes`) at most 3 +step halvings (was 2, D-042). The "max iterations ≤ configured limit" check follows (64 for b1234, preamp, full). +Consequences: 0 first-solve failures (0 unrescued) at HOT, every knob 1.0 and CRUNCH at 2x, 8x and 16x, and in the 2x plugin +model check (28 runs, max 56 iterations); accuracy and CPU unchanged (27.1 / 42.2 % in the check's timing). The budget is a +cap; ordinary samples still converge in a few iterations. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 6601b51..bccdeda 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -565,6 +565,12 @@ Notes: - [x] Step 5: re-verification, M6 report (`harness/reports/M6/20261018_M6_report.md`, 2026-10-18; for owner review) - 2026-10-18: owner-supplied measured 4x12 impedance curves (T1511, T1281, G12K-85) compared with D-059: match above ≈ 200 Hz, resonance within their range; D-059 kept (D-063). +- Owner 2026-10-18: handle the remaining Newton first-solve failures (HOT DI RR at 384 kHz: 2; plugin model check at 2x: + 102 over 28 runs, 3 unrescued, mostly extreme unseen settings). Plan: per-root / per-setting counts, temporary failure + dump (ports, residuals, states), cause, fix, re-verify HOT and the plugin model check. + Done (D-064): causes V2b grid conduction (preamp, 33 … 56 iterations) and an EL34 plate near 0 V with a positive grid + (power amp, oscillating damped steps); preamp maxIter 64, EL34 pair 3 halvings. 0 failures at HOT / every knob 1.0 / + CRUNCH (2x, 8x, 16x) and in the 2x plugin model check (`M6/20261018_x2_rates_newton_fix_full2x.md`). Re-verification below. Plan (2026-10-14; SPEC §7 M6 "performance work", WDF_DESIGN §4; goal: real-time headroom at the 8x default without loosening any tolerance): diff --git a/docs/VERIFICATION.md b/docs/VERIFICATION.md index 7dc13ef..b6be35a 100644 --- a/docs/VERIFICATION.md +++ b/docs/VERIFICATION.md @@ -143,7 +143,7 @@ See `WDF_DESIGN.md` §5.5. | Real-time plugin model (any architecture, M6), whole amp vs SPICE | ESR ≤ −20 dB on the held-out DI clips at CRUNCH, DRIVE and HOT, 48 kHz band, first 0.1 s excluded (D-051) | | NFB amount | ±0.5 dB at 100 Hz / 1 kHz / 5 kHz | | Stability | 60 s silence at max settings: |out| < 1 mV, no growth | -| Newton | 0 failures on the standard signal set; max iterations ≤ the configured limit (12; 32 for the preamp B1234, the power amp B56 and the full amp, D-052; was 16, D-045) | +| Newton | 0 failures on the standard signal set; max iterations ≤ the configured limit (12; 32 for the power amp B56; 64 for the preamp B1234 and the full amp, D-064; was 32, D-052) | ESR on heavily clipped signals is sensitive to tiny timing differences at sharp edges. If a check fails mainly because of edge timing, also report ESR after a 5 kHz low-pass on both signals and the harmonic diff --git a/docs/WDF_DESIGN.md b/docs/WDF_DESIGN.md index 3a4f490..f754ca1 100644 --- a/docs/WDF_DESIGN.md +++ b/docs/WDF_DESIGN.md @@ -138,13 +138,14 @@ Algorithm (per sample): 1. Initial guess: linear extrapolation from the two previous solutions, v = v[n−1] + (v[n−1] − v[n−2]), with each port's extrapolated step clamped to its step limit; after a sample whose solve failed, the trend restarts at zero (v[n−2] := v[n−1]) (DECISIONS D-029, D-034). -2. Up to `maxIter` (default 12; 32 in the full amp's two roots, DECISIONS D-052) iterations; per-port step limits, upward and downward separately +2. Up to `maxIter` (default 12; in the full amp 64 for the preamp root and 32 for the power-amp root, DECISIONS D-052, D-064) iterations; per-port step limits, upward and downward separately (triode blocks: grid ports +50 V / −1000 V, plate ports ±50 V, D-034, D-037). Steps into cutoff are harmless and the device equations cannot overflow (closed-form ω, stable softplus), so the limits only shape convergence. The step is scaled uniformly so that no port exceeds its limit (this keeps the Newton direction). 3. Convergence when ‖Δv‖∞ < 1e−9 · max(1, ‖v‖∞) or ‖f‖∞ < 1e−9 V. -4. If an iteration increases ‖f‖, halve the step (up to 4 times) before accepting it. +4. If an iteration increases ‖f‖, halve the step (up to 4 times; 3 in the EL34 pair roots, DECISIONS D-042, D-064) + before accepting it. 5. If not converged after `maxIter`: keep the best iterate (lowest ‖f‖), increment the failure counter. 6. Linear solve: fixed-size Gaussian elimination with partial pivoting (template on N; no heap, no Eigen in the audio path). diff --git a/engine/src/Preamp.cpp b/engine/src/Preamp.cpp index 1af997d..34fb75f 100644 --- a/engine/src/Preamp.cpp +++ b/engine/src/Preamp.cpp @@ -13,7 +13,7 @@ using devices::FourTriodes; using devices::FourTriodesLoad; constexpr stage::RootNetwork kNet{kElements, kRoot}; -const solver::MultiportNewton kRootSolver = FourTriodes::solverK(32); +const solver::MultiportNewton kRootSolver = FourTriodes::solverK(64); // D-064 (was 32, D-052) const solver::MultiportNewton kDcSolver = FourTriodes::solverK(500); // reset() only } // namespace diff --git a/engine/src/devices/TwoPentodes.h b/engine/src/devices/TwoPentodes.h index 99869a8..4365761 100644 --- a/engine/src/devices/TwoPentodes.h +++ b/engine/src/devices/TwoPentodes.h @@ -34,12 +34,12 @@ struct TwoPentodes { /// Newton solver (DECISIONS D-042): grid ports +50 V / −1000 V per iteration as the triode blocks /// (D-037); screen and plate ports unlimited (the OT flyback moves a plate by hundreds of volts in one - /// sample); at most 2 step halvings (with 4, the 1/16 steps stall at the flyback). + /// sample); at most 3 step halvings (D-064; was 2, D-042: with 4, the 1/16 steps stall at the flyback). static solver::MultiportNewton<6> solver(int maxIter) noexcept { constexpr double kFree = 1e12; solver::MultiportNewton<6> r; r.config.maxIter = maxIter; - r.config.maxHalvings = 2; + r.config.maxHalvings = 3; r.maxStep = {50.0, kFree, kFree, 50.0, kFree, kFree}; r.maxStepDown = {1000.0, kFree, kFree, 1000.0, kFree, kFree}; return r; diff --git a/harness/reports/M3/20261018_b1234_DEFAULT.md b/harness/reports/M3/20261018_b1234_DEFAULT.md index f8d0223..d2dfab7 100644 --- a/harness/reports/M3/20261018_b1234_DEFAULT.md +++ b/harness/reports/M3/20261018_b1234_DEFAULT.md @@ -4,7 +4,7 @@ - Preset: DEFAULT — Default knobs; standard signal set at the block levels - Knobs: preampVolume=0.6, treble=0.5, middle=0.5, bass=0.5, master=0.3, presence=0.5 - Date: 2026-10-18 -- Engine commit: `d37baf0 (dirty)` +- Engine commit: `b193fc7 (dirty)` - Testbench: `harness/testbenches/b1234.cir` sha256 `a99cb5b98a48184b`; netlist sha256 `ffd9b2812204248f`; tubes.lib sha256 `c9c9c88346c69010` - ngspice 47, fs = 768000 Hz, SPICE reltol 1e-08 @@ -42,138 +42,138 @@ PASS 119 · FAIL 0 · INFO 15 (INFO = measured, not scored in M3) | thd_pp | SIN-100Hz-0.01V | 1.433e-05 pp | — | INFO | | newton_failures | SIN-100Hz-0.01V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-100Hz-0.01V | 1 | ≤ 3 | PASS | -| newton_max_iterations | SIN-100Hz-0.01V | 2 | ≤ 32 | PASS | +| newton_max_iterations | SIN-100Hz-0.01V | 2 | ≤ 64 | PASS | | nonlinear_esr_db | SIN-1000Hz-0.01V | -60.63 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-1000Hz-0.01V | 0.01803 dB | ≤ 0.5 | PASS | | thd_pp | SIN-1000Hz-0.01V | 0.001323 pp | — | INFO | | newton_failures | SIN-1000Hz-0.01V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-1000Hz-0.01V | 2 | ≤ 3 | PASS | -| newton_max_iterations | SIN-1000Hz-0.01V | 2 | ≤ 32 | PASS | +| newton_max_iterations | SIN-1000Hz-0.01V | 2 | ≤ 64 | PASS | | nonlinear_esr_db | SIN-5000Hz-0.01V | -53.07 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-5000Hz-0.01V | 0.1088 dB | ≤ 0.5 | PASS | | thd_pp | SIN-5000Hz-0.01V | 0.03125 pp | — | INFO | | newton_failures | SIN-5000Hz-0.01V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-5000Hz-0.01V | 2 | ≤ 3 | PASS | -| newton_max_iterations | SIN-5000Hz-0.01V | 6 | ≤ 32 | PASS | +| newton_max_iterations | SIN-5000Hz-0.01V | 6 | ≤ 64 | PASS | | nonlinear_esr_db | SIN-100Hz-0.1V | -73.53 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-100Hz-0.1V | 0.02799 dB | ≤ 0.5 | PASS | | thd_pp | SIN-100Hz-0.1V | 0.001435 pp | — | INFO | | newton_failures | SIN-100Hz-0.1V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-100Hz-0.1V | 1 | ≤ 3 | PASS | -| newton_max_iterations | SIN-100Hz-0.1V | 2 | ≤ 32 | PASS | +| newton_max_iterations | SIN-100Hz-0.1V | 2 | ≤ 64 | PASS | | nonlinear_esr_db | SIN-1000Hz-0.1V | -57.75 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-1000Hz-0.1V | 0.02889 dB | ≤ 0.5 | PASS | | thd_pp | SIN-1000Hz-0.1V | 0.007326 pp | — | INFO | | newton_failures | SIN-1000Hz-0.1V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-1000Hz-0.1V | 2 | ≤ 3 | PASS | -| newton_max_iterations | SIN-1000Hz-0.1V | 6 | ≤ 32 | PASS | +| newton_max_iterations | SIN-1000Hz-0.1V | 6 | ≤ 64 | PASS | | nonlinear_esr_db | SIN-5000Hz-0.1V | -47.24 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-5000Hz-0.1V | 0.03821 dB | ≤ 0.5 | PASS | | thd_pp | SIN-5000Hz-0.1V | 0.008787 pp | — | INFO | | newton_failures | SIN-5000Hz-0.1V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-5000Hz-0.1V | 3 | ≤ 3 | PASS | -| newton_max_iterations | SIN-5000Hz-0.1V | 7 | ≤ 32 | PASS | +| newton_max_iterations | SIN-5000Hz-0.1V | 7 | ≤ 64 | PASS | | nonlinear_esr_db | SIN-100Hz-0.5V | -75.29 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-100Hz-0.5V | 0.002416 dB | ≤ 0.5 | PASS | | thd_pp | SIN-100Hz-0.5V | 6.976e-05 pp | — | INFO | | newton_failures | SIN-100Hz-0.5V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-100Hz-0.5V | 1 | ≤ 3 | PASS | -| newton_max_iterations | SIN-100Hz-0.5V | 5 | ≤ 32 | PASS | +| newton_max_iterations | SIN-100Hz-0.5V | 5 | ≤ 64 | PASS | | nonlinear_esr_db | SIN-1000Hz-0.5V | -50.57 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-1000Hz-0.5V | 0.02096 dB | ≤ 0.5 | PASS | | thd_pp | SIN-1000Hz-0.5V | 0.005945 pp | — | INFO | | newton_failures | SIN-1000Hz-0.5V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-1000Hz-0.5V | 2 | ≤ 3 | PASS | -| newton_max_iterations | SIN-1000Hz-0.5V | 7 | ≤ 32 | PASS | +| newton_max_iterations | SIN-1000Hz-0.5V | 7 | ≤ 64 | PASS | | nonlinear_esr_db | SIN-5000Hz-0.5V | -39.33 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-5000Hz-0.5V | 0.0322 dB | ≤ 0.5 | PASS | | thd_pp | SIN-5000Hz-0.5V | 0.00618 pp | — | INFO | | newton_failures | SIN-5000Hz-0.5V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-5000Hz-0.5V | 3 | ≤ 3 | PASS | -| newton_max_iterations | SIN-5000Hz-0.5V | 9 | ≤ 32 | PASS | +| newton_max_iterations | SIN-5000Hz-0.5V | 9 | ≤ 64 | PASS | | nonlinear_esr_db_overdrive | SIN-100Hz-2V | -70.14 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-100Hz-2V | 0.00951 dB | ≤ 0.5 | PASS | | thd_pp | SIN-100Hz-2V | 0.004205 pp | — | INFO | | newton_failures | SIN-100Hz-2V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-100Hz-2V | 1 | ≤ 3 | PASS | -| newton_max_iterations | SIN-100Hz-2V | 5 | ≤ 32 | PASS | +| newton_max_iterations | SIN-100Hz-2V | 5 | ≤ 64 | PASS | | nonlinear_esr_db_overdrive | SIN-1000Hz-2V | -47.39 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-1000Hz-2V | 0.00316 dB | ≤ 0.5 | PASS | | thd_pp | SIN-1000Hz-2V | 0.0003278 pp | — | INFO | | newton_failures | SIN-1000Hz-2V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-1000Hz-2V | 2 | ≤ 3 | PASS | -| newton_max_iterations | SIN-1000Hz-2V | 7 | ≤ 32 | PASS | +| newton_max_iterations | SIN-1000Hz-2V | 7 | ≤ 64 | PASS | | nonlinear_esr_db_overdrive | SIN-5000Hz-2V | -34.32 dB | ≤ -20 | PASS | | harmonics_2_5_db | SIN-5000Hz-2V | 0.1697 dB | ≤ 0.5 | PASS | | thd_pp | SIN-5000Hz-2V | 0.007558 pp | — | INFO | | newton_failures | SIN-5000Hz-2V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-5000Hz-2V | 3 | ≤ 3 | PASS | -| newton_max_iterations | SIN-5000Hz-2V | 10 | ≤ 32 | PASS | +| newton_max_iterations | SIN-5000Hz-2V | 10 | ≤ 64 | PASS | | nonlinear_esr_db | SWP-lo-0.01V | -51.28 dB | ≤ -20 | PASS | | linear_mag_db_20_10k | SWP-lo-0.01V | 1.146 dB | ≤ 0.1 | INFO | | linear_mag_db_10k_20k | SWP-lo-0.01V | 1.073 dB | ≤ 0.3 | INFO | | method_mag_db_spice_tran_vs_ac | SWP-lo-0.01V | 1.155 dB | — | INFO | | newton_failures | SWP-lo-0.01V | 0 | ≤ 0 | PASS | | newton_median_iterations | SWP-lo-0.01V | 1 | ≤ 3 | PASS | -| newton_max_iterations | SWP-lo-0.01V | 7 | ≤ 32 | PASS | +| newton_max_iterations | SWP-lo-0.01V | 7 | ≤ 64 | PASS | | nonlinear_esr_db | SWP-hi-0.1V | -46.6 dB | ≤ -20 | PASS | | newton_failures | SWP-hi-0.1V | 0 | ≤ 0 | PASS | | newton_median_iterations | SWP-hi-0.1V | 2 | ≤ 3 | PASS | -| newton_max_iterations | SWP-hi-0.1V | 10 | ≤ 32 | PASS | +| newton_max_iterations | SWP-hi-0.1V | 10 | ≤ 64 | PASS | | nonlinear_esr_db | TT-0.05V | -69.19 dB | ≤ -20 | PASS | | newton_failures | TT-0.05V | 0 | ≤ 0 | PASS | | newton_median_iterations | TT-0.05V | 1 | ≤ 3 | PASS | -| newton_max_iterations | TT-0.05V | 3 | ≤ 32 | PASS | +| newton_max_iterations | TT-0.05V | 3 | ≤ 64 | PASS | | nonlinear_esr_db | BURST-0.5V | -51.14 dB | ≤ -20 | PASS | | newton_failures | BURST-0.5V | 0 | ≤ 0 | PASS | | newton_median_iterations | BURST-0.5V | 2 | ≤ 3 | PASS | -| newton_max_iterations | BURST-0.5V | 7 | ≤ 32 | PASS | +| newton_max_iterations | BURST-0.5V | 7 | ≤ 64 | PASS | | nonlinear_esr_db | STEP-0.1V | -56.98 dB | ≤ -20 | PASS | | newton_failures | STEP-0.1V | 0 | ≤ 0 | PASS | | newton_median_iterations | STEP-0.1V | 1 | ≤ 3 | PASS | -| newton_max_iterations | STEP-0.1V | 7 | ≤ 32 | PASS | +| newton_max_iterations | STEP-0.1V | 7 | ≤ 64 | PASS | | nonlinear_esr_db | DI-GTR L | -62.5 dB | ≤ -20 | PASS | | newton_failures | DI-GTR L | 0 | ≤ 0 | PASS | | newton_median_iterations | DI-GTR L | 2 | ≤ 3 | PASS | -| newton_max_iterations | DI-GTR L | 7 | ≤ 32 | PASS | +| newton_max_iterations | DI-GTR L | 7 | ≤ 64 | PASS | | nonlinear_esr_db | DI-GTR LL | -62.95 dB | ≤ -20 | PASS | | newton_failures | DI-GTR LL | 0 | ≤ 0 | PASS | | newton_median_iterations | DI-GTR LL | 2 | ≤ 3 | PASS | -| newton_max_iterations | DI-GTR LL | 7 | ≤ 32 | PASS | +| newton_max_iterations | DI-GTR LL | 7 | ≤ 64 | PASS | | nonlinear_esr_db | DI-GTR R | -63.68 dB | ≤ -20 | PASS | | newton_failures | DI-GTR R | 0 | ≤ 0 | PASS | | newton_median_iterations | DI-GTR R | 2 | ≤ 3 | PASS | -| newton_max_iterations | DI-GTR R | 7 | ≤ 32 | PASS | +| newton_max_iterations | DI-GTR R | 7 | ≤ 64 | PASS | | nonlinear_esr_db | DI-GTR RR | -62.6 dB | ≤ -20 | PASS | | newton_failures | DI-GTR RR | 0 | ≤ 0 | PASS | | newton_median_iterations | DI-GTR RR | 2 | ≤ 3 | PASS | -| newton_max_iterations | DI-GTR RR | 7 | ≤ 32 | PASS | +| newton_max_iterations | DI-GTR RR | 7 | ≤ 64 | PASS | ## Signals | Signal | Peak F [V] | ESR [dB] | Best lag | ESR at lag [dB] | THD F / E [%] | Power F / E [W] | ns/sample | Newton fail / median / max it | |---|---|---|---|---|---|---|---|---| -| SIN-100Hz-0.01V | 0.1088 | -73.08 | 0 | -73.08 | 0.129 / 0.129 | — | 729.9 | 0 / 1 / 2 | -| SIN-1000Hz-0.01V | 0.4171 | -60.63 | 0 | -60.63 | 0.864 / 0.866 | — | 1085.8 | 0 / 2 / 2 | -| SIN-5000Hz-0.01V | 1.39 | -53.07 | 0 | -53.07 | 6.4 / 6.43 | — | 1238.8 | 0 / 2 / 6 | -| SIN-100Hz-0.1V | 1.071 | -73.53 | 0 | -73.53 | 1.65 / 1.65 | — | 741.1 | 0 / 1 / 2 | -| SIN-1000Hz-0.1V | 1.771 | -57.75 | 0 | -57.75 | 42.6 / 42.6 | — | 1142.8 | 0 / 2 / 6 | -| SIN-5000Hz-0.1V | 2.482 | -47.24 | 0 | -47.24 | 48 / 48 | — | 1437.1 | 0 / 3 / 7 | -| SIN-100Hz-0.5V | 2.723 | -75.29 | 0 | -75.29 | 15.9 / 15.9 | — | 777.2 | 0 / 1 / 5 | -| SIN-1000Hz-0.5V | 2.543 | -50.57 | 0 | -50.57 | 63.6 / 63.6 | — | 1116.4 | 0 / 2 / 7 | -| SIN-5000Hz-0.5V | 2.549 | -39.33 | 0 | -39.33 | 44.7 / 44.7 | — | 1451.0 | 0 / 3 / 9 | -| SIN-100Hz-2V | 2.881 | -70.14 | 0 | -70.14 | 28.2 / 28.3 | — | 779.8 | 0 / 1 / 5 | -| SIN-1000Hz-2V | 2.798 | -47.39 | 0 | -47.39 | 63.6 / 63.6 | — | 1228.5 | 0 / 2 / 7 | -| SIN-5000Hz-2V | 2.542 | -34.32 | 0 | -34.32 | 44.4 / 44.5 | — | 1438.5 | 0 / 3 / 10 | -| SWP-lo-0.01V | 1.367 | -51.28 | 0 | -51.28 | — | — | 957.7 | 0 / 1 / 7 | -| SWP-hi-0.1V | 1.928 | -46.60 | 0 | -46.60 | — | — | 1099.4 | 0 / 2 / 10 | -| TT-0.05V | 1.627 | -69.19 | 0 | -69.19 | — | — | 805.5 | 0 / 1 / 3 | -| BURST-0.5V | 2.548 | -51.14 | 0 | -51.14 | — | — | 1138.4 | 0 / 2 / 7 | -| STEP-0.1V | 2.403 | -56.98 | 0 | -56.98 | — | — | 882.0 | 0 / 1 / 7 | -| DI-GTR L | 2.564 | -62.50 | 0 | -62.50 | — | — | 954.6 | 0 / 2 / 7 | -| DI-GTR LL | 2.571 | -62.95 | 0 | -62.95 | — | — | 952.9 | 0 / 2 / 7 | -| DI-GTR R | 2.628 | -63.68 | 0 | -63.68 | — | — | 950.9 | 0 / 2 / 7 | -| DI-GTR RR | 2.679 | -62.60 | 0 | -62.60 | — | — | 966.2 | 0 / 2 / 7 | +| SIN-100Hz-0.01V | 0.1088 | -73.08 | 0 | -73.08 | 0.129 / 0.129 | — | 739.9 | 0 / 1 / 2 | +| SIN-1000Hz-0.01V | 0.4171 | -60.63 | 0 | -60.63 | 0.864 / 0.866 | — | 1065.9 | 0 / 2 / 2 | +| SIN-5000Hz-0.01V | 1.39 | -53.07 | 0 | -53.07 | 6.4 / 6.43 | — | 1233.4 | 0 / 2 / 6 | +| SIN-100Hz-0.1V | 1.071 | -73.53 | 0 | -73.53 | 1.65 / 1.65 | — | 742.0 | 0 / 1 / 2 | +| SIN-1000Hz-0.1V | 1.771 | -57.75 | 0 | -57.75 | 42.6 / 42.6 | — | 1137.9 | 0 / 2 / 6 | +| SIN-5000Hz-0.1V | 2.482 | -47.24 | 0 | -47.24 | 48 / 48 | — | 1437.8 | 0 / 3 / 7 | +| SIN-100Hz-0.5V | 2.723 | -75.29 | 0 | -75.29 | 15.9 / 15.9 | — | 787.1 | 0 / 1 / 5 | +| SIN-1000Hz-0.5V | 2.543 | -50.57 | 0 | -50.57 | 63.6 / 63.6 | — | 1125.1 | 0 / 2 / 7 | +| SIN-5000Hz-0.5V | 2.549 | -39.33 | 0 | -39.33 | 44.7 / 44.7 | — | 1466.3 | 0 / 3 / 9 | +| SIN-100Hz-2V | 2.881 | -70.14 | 0 | -70.14 | 28.2 / 28.3 | — | 781.4 | 0 / 1 / 5 | +| SIN-1000Hz-2V | 2.798 | -47.39 | 0 | -47.39 | 63.6 / 63.6 | — | 1243.5 | 0 / 2 / 7 | +| SIN-5000Hz-2V | 2.542 | -34.32 | 0 | -34.32 | 44.4 / 44.5 | — | 1446.2 | 0 / 3 / 10 | +| SWP-lo-0.01V | 1.367 | -51.28 | 0 | -51.28 | — | — | 961.1 | 0 / 1 / 7 | +| SWP-hi-0.1V | 1.928 | -46.60 | 0 | -46.60 | — | — | 1080.4 | 0 / 2 / 10 | +| TT-0.05V | 1.627 | -69.19 | 0 | -69.19 | — | — | 795.3 | 0 / 1 / 3 | +| BURST-0.5V | 2.548 | -51.14 | 0 | -51.14 | — | — | 1113.4 | 0 / 2 / 7 | +| STEP-0.1V | 2.403 | -56.98 | 0 | -56.98 | — | — | 878.7 | 0 / 1 / 7 | +| DI-GTR L | 2.564 | -62.50 | 0 | -62.50 | — | — | 957.1 | 0 / 2 / 7 | +| DI-GTR LL | 2.571 | -62.95 | 0 | -62.95 | — | — | 952.1 | 0 / 2 / 7 | +| DI-GTR R | 2.628 | -63.68 | 0 | -63.68 | — | — | 947.2 | 0 / 2 / 7 | +| DI-GTR RR | 2.679 | -62.60 | 0 | -62.60 | — | — | 950.6 | 0 / 2 / 7 | ## DC operating point diff --git a/harness/reports/M3/20261018_b1234_knob_jump.md b/harness/reports/M3/20261018_b1234_knob_jump.md index 3bb6f6c..5c8b392 100644 --- a/harness/reports/M3/20261018_b1234_knob_jump.md +++ b/harness/reports/M3/20261018_b1234_knob_jump.md @@ -1,6 +1,6 @@ # M3 report: B1234 knob-jump test -- Date: 2026-10-18, engine commit `d37baf0 (dirty)`, ngspice 47, fs = 768000 Hz, SPICE reltol 1e-08 +- Date: 2026-10-18, engine commit `b193fc7 (dirty)`, ngspice 47, fs = 768000 Hz, SPICE reltol 1e-08 - Knob targets 0 → 1 in 10 ms from t = 20 ms during a 1000 Hz, 0.1 V tone at the guitar input (DC 0.0000 V); other knobs at their defaults. Engine: smoothing 20 ms, matrix update every 32 samples. SPICE: pot resistances follow the same smoothed trajectory continuously. - Window: the ramp and the 20 ms after it. Pass (D-025): no NaN/Inf, ESR ≤ -20 dB. diff --git a/harness/reports/M4/20261018_b56_DEFAULT.md b/harness/reports/M4/20261018_b56_DEFAULT.md index 42775b3..9ad37b3 100644 --- a/harness/reports/M4/20261018_b56_DEFAULT.md +++ b/harness/reports/M4/20261018_b56_DEFAULT.md @@ -4,8 +4,8 @@ - Preset: DEFAULT — Default knobs; standard signal set at the block levels - Knobs: preampVolume=0.6, treble=0.5, middle=0.5, bass=0.5, master=0.3, presence=0.5 - Date: 2026-10-18 -- Engine commit: `9a422dd (dirty)` -- Testbench: `harness/testbenches/b56.cir` sha256 `6ab5e743770ccb18`; netlist sha256 `83f01b6fd8b64a06`; tubes.lib sha256 `c9c9c88346c69010` +- Engine commit: `b193fc7 (dirty)` +- Testbench: `harness/testbenches/b56.cir` sha256 `cf8c8de755f4bb9a`; netlist sha256 `ffd9b2812204248f`; tubes.lib sha256 `c9c9c88346c69010` - ngspice 47, fs = 768000 Hz, SPICE reltol 1e-08 > SWP-lo-0.1V rendered at RELTOL 1e-07 (ngspice: timestep too small at 1e-08) @@ -125,7 +125,7 @@ PASS 106 · FAIL 0 · INFO 27 (INFO = measured, not scored in M4) | total_power_rel | SIN-5000Hz-20V | 0.000384 | ≤ 0.05 | INFO | | newton_failures | SIN-5000Hz-20V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-5000Hz-20V | 3 | ≤ 3 | PASS | -| newton_max_iterations | SIN-5000Hz-20V | 9 | ≤ 32 | PASS | +| newton_max_iterations | SIN-5000Hz-20V | 10 | ≤ 32 | PASS | | nonlinear_esr_db | SWP-lo-0.1V | -63.49 dB | ≤ -20 | PASS | | linear_mag_db_20_10k | SWP-lo-0.1V | 0.01309 dB | ≤ 0.1 | INFO | | linear_mag_db_10k_20k | SWP-lo-0.1V | 0.004612 dB | ≤ 0.3 | INFO | @@ -154,23 +154,23 @@ PASS 106 · FAIL 0 · INFO 27 (INFO = measured, not scored in M4) | Signal | Peak F [V] | ESR [dB] | Best lag | ESR at lag [dB] | THD F / E [%] | Power F / E [W] | ns/sample | Newton fail / median / max it | |---|---|---|---|---|---|---|---|---| -| SIN-100Hz-0.1V | 1.9 | -91.75 | 0 | -91.75 | 0.0126 / 0.0126 | 0.1087 / 0.1087 | 873.0 | 0 / 1 / 2 | -| SIN-1000Hz-0.1V | 1.309 | -80.96 | 0 | -80.96 | 0.0852 / 0.0852 | 0.04968 / 0.04969 | 1201.3 | 0 / 2 / 2 | -| SIN-5000Hz-0.1V | 1.982 | -69.65 | 0 | -69.65 | 0.0359 / 0.0359 | 0.12 / 0.1201 | 1294.8 | 0 / 2 / 2 | -| SIN-100Hz-1V | 19.26 | -91.73 | 0 | -91.73 | 0.19 / 0.19 | 10.94 / 10.94 | 850.2 | 0 / 1 / 2 | -| SIN-1000Hz-1V | 14.04 | -80.58 | 0 | -80.58 | 2.88 / 2.88 | 5.416 / 5.417 | 1319.2 | 0 / 2 / 2 | -| SIN-5000Hz-1V | 20.15 | -69.55 | 0 | -69.55 | 0.881 / 0.881 | 12.28 / 12.28 | 1300.5 | 0 / 2 / 3 | -| SIN-100Hz-5V | 84.02 | -94.19 | 0 | -94.19 | 3.68 / 3.69 | 229.8 / 229.8 | 1152.9 | 0 / 2 / 3 | -| SIN-1000Hz-5V | 69.71 | -78.07 | 0 | -78.07 | 13.3 / 13.3 | 109.3 / 109.3 | 1477.4 | 0 / 2 / 5 | -| SIN-5000Hz-5V | 81.96 | -68.63 | 0 | -68.63 | 12.8 / 12.8 | 222.1 / 222.1 | 1889.1 | 0 / 3 / 6 | -| SIN-100Hz-20V | 86.97 | -84.66 | 0 | -84.66 | 23 / 23 | 273.2 / 273.2 | 1157.1 | 0 / 2 / 6 | -| SIN-1000Hz-20V | 79.87 | -70.10 | 0 | -70.10 | 57.5 / 57.5 | 146.2 / 146.2 | 1517.2 | 0 / 2 / 6 | -| SIN-5000Hz-20V | 127.7 | -50.21 | 0 | -50.21 | 45.1 / 45 | 298 / 297.9 | 2227.3 | 0 / 3 / 9 | -| SWP-lo-0.1V | 2.143 | -63.49 | 0 | -63.49 | — | — | 1032.0 | 0 / 1 / 3 | -| SWP-hi-1V | 21.65 | -63.43 | 0 | -63.43 | — | — | 1159.3 | 0 / 2 / 4 | -| TT-0.5V | 13.52 | -86.26 | 0 | -86.26 | — | — | 1100.0 | 0 / 2 / 2 | -| BURST-5V | 69.64 | -78.02 | 0 | -78.02 | — | — | 1339.0 | 0 / 2 / 5 | -| STEP-1V | 23.89 | -79.13 | 0 | -79.13 | — | — | 884.8 | 0 / 1 / 3 | +| SIN-100Hz-0.1V | 1.9 | -91.75 | 0 | -91.75 | 0.0126 / 0.0126 | 0.1087 / 0.1087 | 830.4 | 0 / 1 / 2 | +| SIN-1000Hz-0.1V | 1.309 | -80.96 | 0 | -80.96 | 0.0852 / 0.0852 | 0.04968 / 0.04969 | 1147.5 | 0 / 2 / 2 | +| SIN-5000Hz-0.1V | 1.982 | -69.65 | 0 | -69.65 | 0.0359 / 0.0359 | 0.12 / 0.1201 | 1265.0 | 0 / 2 / 2 | +| SIN-100Hz-1V | 19.26 | -91.73 | 0 | -91.73 | 0.19 / 0.19 | 10.94 / 10.94 | 829.3 | 0 / 1 / 2 | +| SIN-1000Hz-1V | 14.04 | -80.58 | 0 | -80.58 | 2.88 / 2.88 | 5.416 / 5.417 | 1272.3 | 0 / 2 / 2 | +| SIN-5000Hz-1V | 20.15 | -69.55 | 0 | -69.55 | 0.881 / 0.881 | 12.28 / 12.28 | 1277.3 | 0 / 2 / 3 | +| SIN-100Hz-5V | 84.02 | -94.19 | 0 | -94.19 | 3.68 / 3.69 | 229.8 / 229.8 | 1116.4 | 0 / 2 / 3 | +| SIN-1000Hz-5V | 69.71 | -78.07 | 0 | -78.07 | 13.3 / 13.3 | 109.3 / 109.3 | 1483.1 | 0 / 2 / 5 | +| SIN-5000Hz-5V | 81.96 | -68.63 | 0 | -68.63 | 12.8 / 12.8 | 222.1 / 222.1 | 1819.4 | 0 / 3 / 6 | +| SIN-100Hz-20V | 86.97 | -84.66 | 0 | -84.66 | 23 / 23 | 273.2 / 273.2 | 1139.9 | 0 / 2 / 6 | +| SIN-1000Hz-20V | 79.87 | -70.10 | 0 | -70.10 | 57.5 / 57.5 | 146.2 / 146.2 | 1496.2 | 0 / 2 / 6 | +| SIN-5000Hz-20V | 127.7 | -50.21 | 0 | -50.21 | 45.1 / 45 | 298 / 297.9 | 2182.7 | 0 / 3 / 10 | +| SWP-lo-0.1V | 2.143 | -63.49 | 0 | -63.49 | — | — | 1031.7 | 0 / 1 / 3 | +| SWP-hi-1V | 21.65 | -63.43 | 0 | -63.43 | — | — | 1168.0 | 0 / 2 / 4 | +| TT-0.5V | 13.52 | -86.26 | 0 | -86.26 | — | — | 1131.7 | 0 / 2 / 2 | +| BURST-5V | 69.64 | -78.02 | 0 | -78.02 | — | — | 1358.6 | 0 / 2 / 5 | +| STEP-1V | 23.89 | -79.13 | 0 | -79.13 | — | — | 889.5 | 0 / 1 / 3 | ## DC operating point diff --git a/harness/reports/M4/20261018_b5open_DEFAULT.md b/harness/reports/M4/20261018_b5open_DEFAULT.md index ecdfe3d..cf9dfeb 100644 --- a/harness/reports/M4/20261018_b5open_DEFAULT.md +++ b/harness/reports/M4/20261018_b5open_DEFAULT.md @@ -4,8 +4,8 @@ - Preset: DEFAULT — Default knobs; standard signal set at the block levels - Knobs: preampVolume=0.6, treble=0.5, middle=0.5, bass=0.5, master=0.3, presence=0.5 - Date: 2026-10-18 -- Engine commit: `9a422dd (dirty)` -- Testbench: `harness/testbenches/b5open.cir` sha256 `44543f92cde2a435`; netlist sha256 `83f01b6fd8b64a06`; tubes.lib sha256 `c9c9c88346c69010` +- Engine commit: `b193fc7 (dirty)` +- Testbench: `harness/testbenches/b5open.cir` sha256 `cad9e52179f41965`; netlist sha256 `ffd9b2812204248f`; tubes.lib sha256 `c9c9c88346c69010` - ngspice 47, fs = 768000 Hz, SPICE reltol 1e-08 > SWP-lo-0.1V b56: source run rendered at RELTOL 1e-07 (timestep too small at 1e-08) @@ -121,23 +121,23 @@ PASS 88 · FAIL 0 · INFO 12 (INFO = measured, not scored in M4) | Signal | Peak F [V] | ESR [dB] | Best lag | ESR at lag [dB] | THD F / E [%] | Power F / E [W] | ns/sample | Newton fail / median / max it | |---|---|---|---|---|---|---|---|---| -| SIN-100Hz-0.1V | 1.309 | -84.14 | 0 | -84.14 | 0.0292 / 0.0292 | — | 277.8 | 0 / 1 / 1 | -| SIN-1000Hz-0.1V | 1.642 | -80.61 | 0 | -80.61 | 0.0599 / 0.0599 | — | 282.7 | 0 / 1 / 2 | -| SIN-5000Hz-0.1V | 1.172 | -68.37 | 0 | -68.37 | 0.0573 / 0.0573 | — | 391.3 | 0 / 2 / 2 | -| SIN-100Hz-1V | 12.67 | -84.13 | 0 | -84.13 | 0.428 / 0.428 | — | 282.2 | 0 / 1 / 2 | -| SIN-1000Hz-1V | 16.11 | -80.59 | 0 | -80.59 | 2.09 / 2.09 | — | 390.7 | 0 / 2 / 2 | -| SIN-5000Hz-1V | 11.1 | -68.40 | 0 | -68.40 | 1.4 / 1.4 | — | 420.0 | 0 / 2 / 2 | -| SIN-100Hz-5V | 56.7 | -83.88 | 0 | -83.88 | 6.05 / 6.05 | — | 279.9 | 0 / 1 / 2 | -| SIN-1000Hz-5V | 97.08 | -79.54 | 0 | -79.54 | 7.71 / 7.71 | — | 463.8 | 0 / 2 / 2 | -| SIN-5000Hz-5V | 77.43 | -66.53 | 0 | -66.53 | 13.6 / 13.6 | — | 445.6 | 0 / 2 / 3 | -| SIN-100Hz-20V | 132.2 | -75.04 | 0 | -75.04 | 47.4 / 47.4 | — | 384.7 | 0 / 1 / 2 | -| SIN-1000Hz-20V | 140.8 | -73.74 | 0 | -73.74 | 50.7 / 50.7 | — | 456.1 | 0 / 2 / 3 | -| SIN-5000Hz-20V | 142 | -61.76 | 0 | -61.76 | 53.4 / 53.4 | — | 611.9 | 0 / 2 / 4 | -| SWP-lo-0.1V | 2.693 | -69.19 | 0 | -69.19 | — | — | 312.8 | 0 / 1 / 3 | -| SWP-hi-1V | 26.97 | -69.04 | 0 | -69.04 | — | — | 340.7 | 0 / 1 / 3 | -| TT-0.5V | 14.38 | -83.65 | 0 | -83.65 | — | — | 279.9 | 0 / 1 / 2 | -| BURST-5V | 102.3 | -79.75 | 0 | -79.75 | — | — | 368.8 | 0 / 1 / 2 | -| STEP-1V | 19.85 | -82.54 | 0 | -82.54 | — | — | 284.5 | 0 / 1 / 2 | +| SIN-100Hz-0.1V | 1.309 | -84.14 | 0 | -84.14 | 0.0292 / 0.0292 | — | 271.8 | 0 / 1 / 1 | +| SIN-1000Hz-0.1V | 1.642 | -80.61 | 0 | -80.61 | 0.0599 / 0.0599 | — | 268.8 | 0 / 1 / 2 | +| SIN-5000Hz-0.1V | 1.172 | -68.37 | 0 | -68.37 | 0.0573 / 0.0573 | — | 374.5 | 0 / 2 / 2 | +| SIN-100Hz-1V | 12.67 | -84.13 | 0 | -84.13 | 0.428 / 0.428 | — | 268.3 | 0 / 1 / 2 | +| SIN-1000Hz-1V | 16.11 | -80.59 | 0 | -80.59 | 2.09 / 2.09 | — | 377.5 | 0 / 2 / 2 | +| SIN-5000Hz-1V | 11.1 | -68.40 | 0 | -68.40 | 1.4 / 1.4 | — | 408.6 | 0 / 2 / 2 | +| SIN-100Hz-5V | 56.7 | -83.88 | 0 | -83.88 | 6.05 / 6.05 | — | 270.1 | 0 / 1 / 2 | +| SIN-1000Hz-5V | 97.08 | -79.54 | 0 | -79.54 | 7.71 / 7.71 | — | 448.8 | 0 / 2 / 2 | +| SIN-5000Hz-5V | 77.43 | -66.53 | 0 | -66.53 | 13.6 / 13.6 | — | 464.0 | 0 / 2 / 3 | +| SIN-100Hz-20V | 132.2 | -75.04 | 0 | -75.04 | 47.4 / 47.4 | — | 373.7 | 0 / 1 / 2 | +| SIN-1000Hz-20V | 140.8 | -73.74 | 0 | -73.74 | 50.7 / 50.7 | — | 435.2 | 0 / 2 / 3 | +| SIN-5000Hz-20V | 142 | -61.76 | 0 | -61.76 | 53.4 / 53.4 | — | 583.6 | 0 / 2 / 4 | +| SWP-lo-0.1V | 2.693 | -69.19 | 0 | -69.19 | — | — | 305.8 | 0 / 1 / 3 | +| SWP-hi-1V | 26.97 | -69.04 | 0 | -69.04 | — | — | 331.8 | 0 / 1 / 3 | +| TT-0.5V | 14.38 | -83.65 | 0 | -83.65 | — | — | 272.8 | 0 / 1 / 2 | +| BURST-5V | 102.3 | -79.75 | 0 | -79.75 | — | — | 356.1 | 0 / 1 / 2 | +| STEP-1V | 19.85 | -82.54 | 0 | -82.54 | — | — | 275.0 | 0 / 1 / 2 | ## DC operating point diff --git a/harness/reports/M4/20261018_b6_DEFAULT.md b/harness/reports/M4/20261018_b6_DEFAULT.md index ff6d654..8ee3dc4 100644 --- a/harness/reports/M4/20261018_b6_DEFAULT.md +++ b/harness/reports/M4/20261018_b6_DEFAULT.md @@ -4,8 +4,8 @@ - Preset: DEFAULT — Default knobs; standard signal set at the block levels - Knobs: preampVolume=0.6, treble=0.5, middle=0.5, bass=0.5, master=0.3, presence=0.5 - Date: 2026-10-18 -- Engine commit: `9a422dd (dirty)` -- Testbench: `harness/testbenches/b6.cir` sha256 `3ad8a8a2d929b0d8`; netlist sha256 `83f01b6fd8b64a06`; tubes.lib sha256 `c9c9c88346c69010` +- Engine commit: `b193fc7 (dirty)` +- Testbench: `harness/testbenches/b6.cir` sha256 `65ebb460f9cac218`; netlist sha256 `ffd9b2812204248f`; tubes.lib sha256 `c9c9c88346c69010` - ngspice 47, fs = 768000 Hz, SPICE reltol 1e-08 > SWP-lo-0.1V b56: source run rendered at RELTOL 1e-07 (timestep too small at 1e-08) @@ -117,7 +117,7 @@ PASS 96 · FAIL 1 · INFO 24 (INFO = measured, not scored in M4) | total_power_rel | SIN-5000Hz-20V | 0.0004657 | ≤ 0.05 | INFO | | newton_failures | SIN-5000Hz-20V | 0 | ≤ 0 | PASS | | newton_median_iterations | SIN-5000Hz-20V | 4 | ≤ 3 | FAIL | -| newton_max_iterations | SIN-5000Hz-20V | 9 | ≤ 12 | PASS | +| newton_max_iterations | SIN-5000Hz-20V | 10 | ≤ 12 | PASS | | nonlinear_esr_db | SWP-lo-0.1V | -62.33 dB | ≤ -20 | PASS | | newton_failures | SWP-lo-0.1V | 0 | ≤ 0 | PASS | | newton_median_iterations | SWP-lo-0.1V | 1 | ≤ 3 | PASS | @@ -143,23 +143,23 @@ PASS 96 · FAIL 1 · INFO 24 (INFO = measured, not scored in M4) | Signal | Peak F [V] | ESR [dB] | Best lag | ESR at lag [dB] | THD F / E [%] | Power F / E [W] | ns/sample | Newton fail / median / max it | |---|---|---|---|---|---|---|---|---| -| SIN-100Hz-0.1V | 1.725 | -93.97 | 0 | -93.97 | 0.03 / 0.03 | 0.08881 / 0.08881 | 443.5 | 0 / 1 / 2 | -| SIN-1000Hz-0.1V | 1.171 | -80.69 | 0 | -80.69 | 0.194 / 0.194 | 0.03997 / 0.03997 | 587.2 | 0 / 2 / 2 | -| SIN-5000Hz-0.1V | 1.777 | -66.19 | 0 | -66.19 | 0.13 / 0.13 | 0.09674 / 0.0968 | 653.3 | 0 / 2 / 2 | -| SIN-100Hz-1V | 17.31 | -93.84 | 0 | -93.84 | 0.308 / 0.308 | 8.87 / 8.87 | 438.2 | 0 / 1 / 2 | -| SIN-1000Hz-1V | 12.53 | -80.25 | 0 | -80.25 | 2.58 / 2.58 | 4.184 / 4.184 | 632.3 | 0 / 2 / 2 | -| SIN-5000Hz-1V | 18.07 | -65.87 | 0 | -65.87 | 1.27 / 1.27 | 9.717 / 9.723 | 637.1 | 0 / 2 / 3 | -| SIN-100Hz-5V | 82.21 | -96.77 | 0 | -96.77 | 2.37 / 2.37 | 211.1 / 211.1 | 528.6 | 0 / 1 / 2 | -| SIN-1000Hz-5V | 69.47 | -72.50 | 0 | -72.50 | 12 / 12 | 100.7 / 100.7 | 676.9 | 0 / 2 / 5 | -| SIN-5000Hz-5V | 81 | -61.44 | 0 | -61.44 | 11.2 / 11.2 | 213.2 / 213.1 | 876.9 | 0 / 3 / 6 | -| SIN-100Hz-20V | 86.47 | -92.04 | 0 | -92.04 | 21.2 / 21.2 | 251.6 / 251.6 | 566.6 | 0 / 2 / 5 | -| SIN-1000Hz-20V | 106.1 | -66.93 | 0 | -66.93 | 58.7 / 58.7 | 137.5 / 137.5 | 749.0 | 0 / 2 / 6 | -| SIN-5000Hz-20V | 144.7 | -44.21 | 0 | -44.21 | 46.1 / 46.1 | 286.2 / 286.1 | 1085.5 | 0 / 4 / 9 | -| SWP-lo-0.1V | 1.865 | -62.33 | 0 | -62.33 | — | — | 521.5 | 0 / 1 / 3 | -| SWP-hi-1V | 18.83 | -62.11 | 0 | -62.11 | — | — | 571.6 | 0 / 2 / 3 | -| TT-0.5V | 11.82 | -91.95 | 0 | -91.95 | — | — | 540.4 | 0 / 2 / 2 | -| BURST-5V | 69.4 | -72.49 | 0 | -72.49 | — | — | 639.0 | 0 / 2 / 5 | -| STEP-1V | 20.76 | -79.95 | 0 | -79.95 | — | — | 448.5 | 0 / 1 / 3 | +| SIN-100Hz-0.1V | 1.725 | -93.97 | 0 | -93.97 | 0.03 / 0.03 | 0.08881 / 0.08881 | 428.3 | 0 / 1 / 2 | +| SIN-1000Hz-0.1V | 1.171 | -80.69 | 0 | -80.69 | 0.194 / 0.194 | 0.03997 / 0.03997 | 567.9 | 0 / 2 / 2 | +| SIN-5000Hz-0.1V | 1.777 | -66.19 | 0 | -66.19 | 0.13 / 0.13 | 0.09674 / 0.0968 | 625.2 | 0 / 2 / 2 | +| SIN-100Hz-1V | 17.31 | -93.84 | 0 | -93.84 | 0.308 / 0.308 | 8.87 / 8.87 | 421.2 | 0 / 1 / 2 | +| SIN-1000Hz-1V | 12.53 | -80.25 | 0 | -80.25 | 2.58 / 2.58 | 4.184 / 4.184 | 608.6 | 0 / 2 / 2 | +| SIN-5000Hz-1V | 18.07 | -65.87 | 0 | -65.87 | 1.27 / 1.27 | 9.717 / 9.723 | 619.0 | 0 / 2 / 3 | +| SIN-100Hz-5V | 82.21 | -96.77 | 0 | -96.77 | 2.37 / 2.37 | 211.1 / 211.1 | 515.3 | 0 / 1 / 2 | +| SIN-1000Hz-5V | 69.47 | -72.50 | 0 | -72.50 | 12 / 12 | 100.7 / 100.7 | 662.3 | 0 / 2 / 5 | +| SIN-5000Hz-5V | 81 | -61.44 | 0 | -61.44 | 11.2 / 11.2 | 213.2 / 213.1 | 853.1 | 0 / 3 / 6 | +| SIN-100Hz-20V | 86.47 | -92.04 | 0 | -92.04 | 21.2 / 21.2 | 251.6 / 251.6 | 551.7 | 0 / 2 / 5 | +| SIN-1000Hz-20V | 106.1 | -66.93 | 0 | -66.93 | 58.7 / 58.7 | 137.5 / 137.5 | 726.9 | 0 / 2 / 6 | +| SIN-5000Hz-20V | 144.7 | -44.21 | 0 | -44.21 | 46.1 / 46.1 | 286.2 / 286.1 | 1049.1 | 0 / 4 / 10 | +| SWP-lo-0.1V | 1.865 | -62.33 | 0 | -62.33 | — | — | 512.7 | 0 / 1 / 3 | +| SWP-hi-1V | 18.83 | -62.11 | 0 | -62.11 | — | — | 570.4 | 0 / 2 / 3 | +| TT-0.5V | 11.82 | -91.95 | 0 | -91.95 | — | — | 530.2 | 0 / 2 / 2 | +| BURST-5V | 69.4 | -72.49 | 0 | -72.49 | — | — | 652.7 | 0 / 2 / 5 | +| STEP-1V | 20.76 | -79.95 | 0 | -79.95 | — | — | 451.3 | 0 / 1 / 3 | ## DC operating point diff --git a/harness/reports/M4/20261018_full_acceptance.md b/harness/reports/M4/20261018_full_acceptance.md index 992d414..fe229ef 100644 --- a/harness/reports/M4/20261018_full_acceptance.md +++ b/harness/reports/M4/20261018_full_acceptance.md @@ -1,6 +1,6 @@ # M4 acceptance: full amplifier vs the full netlist -- Date: 2026-10-18, engine commit `d37baf0 (dirty)`, ngspice 47, fs = 768000 Hz, SPICE reltol 1e-08 +- Date: 2026-10-18, engine commit `b193fc7 (dirty)`, ngspice 47, fs = 768000 Hz, SPICE reltol 1e-08 - Netlist sha256 `ffd9b2812204248f`, tubes.lib sha256 `c9c9c88346c69010` - Engine: `ampwav --block full` (volts at the jack and across the 16 Ω load), the checks of SPEC §7 M4. @@ -37,38 +37,38 @@ PASS 107 · FAIL 0 | nfb | newton_failures | closed 100 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | closed 100 Hz | 0 | — | INFO | | nfb | newton_median_iterations | closed 100 Hz | 1 | ≤ 3 | PASS | -| nfb | newton_max_iterations | closed 100 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | closed 100 Hz | 2 | ≤ 64 | PASS | | nfb | nfb_gain_db | closed 1000 Hz | 0.00536 dB | ≤ 0.5 | PASS | | nfb | newton_failures | closed 1000 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | closed 1000 Hz | 0 | — | INFO | | nfb | newton_median_iterations | closed 1000 Hz | 1 | ≤ 3 | PASS | -| nfb | newton_max_iterations | closed 1000 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | closed 1000 Hz | 2 | ≤ 64 | PASS | | nfb | nfb_gain_db | closed 5000 Hz | 0.01479 dB | ≤ 0.5 | PASS | | nfb | newton_failures | closed 5000 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | closed 5000 Hz | 0 | — | INFO | | nfb | newton_median_iterations | closed 5000 Hz | 2 | ≤ 3 | PASS | -| nfb | newton_max_iterations | closed 5000 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | closed 5000 Hz | 2 | ≤ 64 | PASS | | nfb | nfb_gain_db | open 100 Hz | 0.00227 dB | ≤ 0.5 | PASS | | nfb | newton_failures | open 100 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | open 100 Hz | 0 | — | INFO | | nfb | newton_median_iterations | open 100 Hz | 1 | ≤ 3 | PASS | -| nfb | newton_max_iterations | open 100 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | open 100 Hz | 2 | ≤ 64 | PASS | | nfb | nfb_gain_db | open 1000 Hz | 0.007856 dB | ≤ 0.5 | PASS | | nfb | newton_failures | open 1000 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | open 1000 Hz | 0 | — | INFO | | nfb | newton_median_iterations | open 1000 Hz | 1 | ≤ 3 | PASS | -| nfb | newton_max_iterations | open 1000 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | open 1000 Hz | 2 | ≤ 64 | PASS | | nfb | nfb_gain_db | open 5000 Hz | 0.05701 dB | ≤ 0.5 | PASS | | nfb | newton_failures | open 5000 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | open 5000 Hz | 0 | — | INFO | | nfb | newton_median_iterations | open 5000 Hz | 2 | ≤ 3 | PASS | -| nfb | newton_max_iterations | open 5000 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | open 5000 Hz | 2 | ≤ 64 | PASS | | clean | total_esr_db | CLEAN SIN-1000Hz-0.025V | -30.3 dB | ≤ -20 | PASS | | clean | total_harmonics_2_9_db | CLEAN SIN-1000Hz-0.025V | 0.7255 dB | ≤ 1.5 | PASS | | clean | newton_failures | CLEAN SIN-1000Hz-0.025V | 0 | ≤ 0 | PASS | | clean | newton_unrescued | CLEAN SIN-1000Hz-0.025V | 0 | — | INFO | | clean | newton_median_iterations | CLEAN SIN-1000Hz-0.025V | 2 | ≤ 3 | PASS | -| clean | newton_max_iterations | CLEAN SIN-1000Hz-0.025V | 3 | ≤ 32 | PASS | +| clean | newton_max_iterations | CLEAN SIN-1000Hz-0.025V | 3 | ≤ 64 | PASS | | clean | total_power_rel | CLEAN SIN-1000Hz-0.025V | 0.03927 | ≤ 0.05 | PASS | | clean | total_thd_pp | CLEAN SIN-1000Hz-0.025V | 0.2173 pp | ≤ 0.5 | PASS | | stability | stability_out_v | max |out| | 4.267e-05 V | ≤ 0.001 | PASS | @@ -76,66 +76,66 @@ PASS 107 · FAIL 0 | stability | newton_failures | 60 s silence | 0 | ≤ 0 | PASS | | stability | newton_unrescued | 60 s silence | 0 | — | INFO | | stability | newton_median_iterations | 60 s silence | 1 | ≤ 3 | PASS | -| stability | newton_max_iterations | 60 s silence | 1 | ≤ 32 | PASS | +| stability | newton_max_iterations | 60 s silence | 1 | ≤ 64 | PASS | | overdrive | total_esr_db | OVERDRIVE SIN-220Hz-0.3V | -67.99 dB | ≤ -20 | PASS | | overdrive | total_harmonics_2_9_db | OVERDRIVE SIN-220Hz-0.3V | 0.008614 dB | ≤ 1.5 | PASS | | overdrive | sag_min_v | OVERDRIVE SIN-220Hz-0.3V | 0.003537 V | ≤ 2 | PASS | | overdrive | newton_failures | OVERDRIVE SIN-220Hz-0.3V | 0 | ≤ 0 | PASS | | overdrive | newton_unrescued | OVERDRIVE SIN-220Hz-0.3V | 0 | — | INFO | | overdrive | newton_median_iterations | OVERDRIVE SIN-220Hz-0.3V | 1 | ≤ 3 | PASS | -| overdrive | newton_max_iterations | OVERDRIVE SIN-220Hz-0.3V | 5 | ≤ 32 | PASS | +| overdrive | newton_max_iterations | OVERDRIVE SIN-220Hz-0.3V | 5 | ≤ 64 | PASS | | crunch_drive | total_esr_db | CRUNCH SIN-220Hz-0.3V | -70.25 dB | ≤ -20 | PASS | | crunch_drive | total_harmonics_2_9_db | CRUNCH SIN-220Hz-0.3V | 0.007954 dB | ≤ 1.5 | PASS | | crunch_drive | newton_failures | CRUNCH SIN-220Hz-0.3V | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | CRUNCH SIN-220Hz-0.3V | 0 | — | INFO | | crunch_drive | newton_median_iterations | CRUNCH SIN-220Hz-0.3V | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | CRUNCH SIN-220Hz-0.3V | 5 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | CRUNCH SIN-220Hz-0.3V | 5 | ≤ 64 | PASS | | crunch_drive | total_esr_db | CRUNCH DI-GTR L | -60.8 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | CRUNCH DI-GTR L | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | CRUNCH DI-GTR L | 0 | — | INFO | | crunch_drive | newton_median_iterations | CRUNCH DI-GTR L | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | CRUNCH DI-GTR L | 7 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | CRUNCH DI-GTR L | 7 | ≤ 64 | PASS | | crunch_drive | total_esr_db | CRUNCH DI-GTR LL | -61.36 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | CRUNCH DI-GTR LL | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | CRUNCH DI-GTR LL | 0 | — | INFO | | crunch_drive | newton_median_iterations | CRUNCH DI-GTR LL | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | CRUNCH DI-GTR LL | 7 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | CRUNCH DI-GTR LL | 7 | ≤ 64 | PASS | | crunch_drive | total_esr_db | CRUNCH DI-GTR R | -62.11 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | CRUNCH DI-GTR R | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | CRUNCH DI-GTR R | 0 | — | INFO | | crunch_drive | newton_median_iterations | CRUNCH DI-GTR R | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | CRUNCH DI-GTR R | 7 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | CRUNCH DI-GTR R | 7 | ≤ 64 | PASS | | crunch_drive | total_esr_db | CRUNCH DI-GTR RR | -60.94 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | CRUNCH DI-GTR RR | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | CRUNCH DI-GTR RR | 0 | — | INFO | | crunch_drive | newton_median_iterations | CRUNCH DI-GTR RR | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | CRUNCH DI-GTR RR | 7 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | CRUNCH DI-GTR RR | 7 | ≤ 64 | PASS | | crunch_drive | total_esr_db | DRIVE SIN-220Hz-0.3V | -63.49 dB | ≤ -20 | PASS | | crunch_drive | total_harmonics_2_9_db | DRIVE SIN-220Hz-0.3V | 0.03171 dB | ≤ 1.5 | PASS | | crunch_drive | newton_failures | DRIVE SIN-220Hz-0.3V | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | DRIVE SIN-220Hz-0.3V | 0 | — | INFO | | crunch_drive | newton_median_iterations | DRIVE SIN-220Hz-0.3V | 1 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | DRIVE SIN-220Hz-0.3V | 5 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | DRIVE SIN-220Hz-0.3V | 5 | ≤ 64 | PASS | | crunch_drive | total_esr_db | DRIVE DI-GTR L | -60.24 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | DRIVE DI-GTR L | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | DRIVE DI-GTR L | 0 | — | INFO | | crunch_drive | newton_median_iterations | DRIVE DI-GTR L | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | DRIVE DI-GTR L | 7 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | DRIVE DI-GTR L | 7 | ≤ 64 | PASS | | crunch_drive | total_esr_db | DRIVE DI-GTR LL | -61.54 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | DRIVE DI-GTR LL | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | DRIVE DI-GTR LL | 0 | — | INFO | | crunch_drive | newton_median_iterations | DRIVE DI-GTR LL | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | DRIVE DI-GTR LL | 7 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | DRIVE DI-GTR LL | 7 | ≤ 64 | PASS | | crunch_drive | total_esr_db | DRIVE DI-GTR R | -61.01 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | DRIVE DI-GTR R | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | DRIVE DI-GTR R | 0 | — | INFO | | crunch_drive | newton_median_iterations | DRIVE DI-GTR R | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | DRIVE DI-GTR R | 7 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | DRIVE DI-GTR R | 7 | ≤ 64 | PASS | | crunch_drive | total_esr_db | DRIVE DI-GTR RR | -60.27 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | DRIVE DI-GTR RR | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | DRIVE DI-GTR RR | 0 | — | INFO | | crunch_drive | newton_median_iterations | DRIVE DI-GTR RR | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | DRIVE DI-GTR RR | 8 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | DRIVE DI-GTR RR | 8 | ≤ 64 | PASS | ## DC operating point diff --git a/harness/reports/M5/20261018_b56_knob_jump.md b/harness/reports/M5/20261018_b56_knob_jump.md index cd1ad08..b615aac 100644 --- a/harness/reports/M5/20261018_b56_knob_jump.md +++ b/harness/reports/M5/20261018_b56_knob_jump.md @@ -1,6 +1,6 @@ # M5 report: B56 knob-jump test -- Date: 2026-10-18, engine commit `9a422dd (dirty)`, ngspice 47, fs = 768000 Hz, SPICE reltol 1e-08 +- Date: 2026-10-18, engine commit `b193fc7 (dirty)`, ngspice 47, fs = 768000 Hz, SPICE reltol 1e-08 - Knob targets 0 → 1 in 10 ms from t = 20 ms during a 1000 Hz, 1 V tone on the J4 DC level (DC 0.0000 V); other knobs at their defaults. Engine: smoothing 20 ms, matrix update every 32 samples. SPICE: pot resistances follow the same smoothed trajectory continuously. - Window: the ramp and the 20 ms after it. Pass (D-025): no NaN/Inf, ESR ≤ -20 dB. diff --git a/harness/reports/M6/20261018_automation_fs96000_pdiv1_j4exact.md b/harness/reports/M6/20261018_automation_fs96000_pdiv1_j4exact.md new file mode 100644 index 0000000..e8712e1 --- /dev/null +++ b/harness/reports/M6/20261018_automation_fs96000_pdiv1_j4exact.md @@ -0,0 +1,66 @@ +# M5 automation: every knob over its full range at audio rate + +- Date: 2026-10-18, commit `b193fc7 (dirty)`, engine `ampwav --block full` at 96000 Hz +- Modulation: 10 Hz triangle 0 → 1 → 0 (`lfo`) or 0 ↔ 1 jumps every 50 ms (`jump`) on the knob targets (smoothed by the engine, 20 ms); bases: default knobs, every knob at 1.0. +- SPEC §7 M5: no NaN / Inf, no Newton failures. Newton failures count first solves that did not converge in 12 iterations; the fallback (D-042) rescued or did not rescue them. + +Runs: 56 · non-finite outputs: 0 · Newton failures (first solve): 0 · unrescued: 0 + +| Base | Knobs | Modulation | Signal | finite | peak [V] | solves | failures | rescued | unrescued | median / max it | ns/sample | +|---|---|---|---|---|---|---|---|---|---|---|---| +| default | preampVolume | lfo | SIN-220Hz-0.3V | yes | 34.7 | 288000 | 0 | 0 | 0 | 1 / 7 | 3479 | +| default | preampVolume | lfo | DI-GTR L | yes | 55.7 | 1440103 | 0 | 0 | 0 | 1 / 15 | 3694 | +| default | preampVolume | jump | SIN-220Hz-0.3V | yes | 40.3 | 288000 | 0 | 0 | 0 | 1 / 22 | 3370 | +| default | preampVolume | jump | DI-GTR L | yes | 59.8 | 1440215 | 0 | 0 | 0 | 1 / 21 | 4136 | +| default | treble | lfo | SIN-220Hz-0.3V | yes | 41.4 | 288000 | 0 | 0 | 0 | 1 / 22 | 3612 | +| default | treble | lfo | DI-GTR L | yes | 64.3 | 1440164 | 0 | 0 | 0 | 1 / 16 | 4480 | +| default | treble | jump | SIN-220Hz-0.3V | yes | 39.1 | 288000 | 0 | 0 | 0 | 1 / 22 | 3801 | +| default | treble | jump | DI-GTR L | yes | 76.6 | 1440435 | 0 | 0 | 0 | 1 / 16 | 4301 | +| default | middle | lfo | SIN-220Hz-0.3V | yes | 35.1 | 288000 | 0 | 0 | 0 | 1 / 22 | 3647 | +| default | middle | lfo | DI-GTR L | yes | 56.3 | 1440137 | 0 | 0 | 0 | 1 / 22 | 4490 | +| default | middle | jump | SIN-220Hz-0.3V | yes | 39.9 | 288000 | 0 | 0 | 0 | 1 / 22 | 3760 | +| default | middle | jump | DI-GTR L | yes | 65.0 | 1440220 | 0 | 0 | 0 | 1 / 17 | 4382 | +| default | bass | lfo | SIN-220Hz-0.3V | yes | 39.3 | 288000 | 0 | 0 | 0 | 1 / 22 | 3425 | +| default | bass | lfo | DI-GTR L | yes | 59.1 | 1440151 | 0 | 0 | 0 | 1 / 17 | 4235 | +| default | bass | jump | SIN-220Hz-0.3V | yes | 45.3 | 288000 | 0 | 0 | 0 | 1 / 22 | 3165 | +| default | bass | jump | DI-GTR L | yes | 57.5 | 1440155 | 0 | 0 | 0 | 1 / 19 | 3580 | +| default | master | lfo | SIN-220Hz-0.3V | yes | 75.8 | 288199 | 0 | 0 | 0 | 1 / 22 | 4045 | +| default | master | lfo | DI-GTR L | yes | 129.1 | 1448472 | 0 | 0 | 0 | 1 / 24 | 4804 | +| default | master | jump | SIN-220Hz-0.3V | yes | 82.8 | 288897 | 0 | 0 | 0 | 1 / 22 | 3908 | +| default | master | jump | DI-GTR L | yes | 152.9 | 1452539 | 0 | 0 | 0 | 1 / 24 | 4793 | +| default | presence | lfo | SIN-220Hz-0.3V | yes | 35.7 | 288000 | 0 | 0 | 0 | 1 / 22 | 3359 | +| default | presence | lfo | DI-GTR L | yes | 58.0 | 1440156 | 0 | 0 | 0 | 1 / 16 | 4280 | +| default | presence | jump | SIN-220Hz-0.3V | yes | 66.3 | 288002 | 0 | 0 | 0 | 1 / 22 | 3257 | +| default | presence | jump | DI-GTR L | yes | 75.2 | 1440443 | 0 | 0 | 0 | 1 / 16 | 4218 | +| default | all | lfo | SIN-220Hz-0.3V | yes | 77.1 | 288685 | 0 | 0 | 0 | 1 / 8 | 4671 | +| default | all | lfo | DI-GTR L | yes | 154.1 | 1451253 | 0 | 0 | 0 | 1 / 26 | 8436 | +| default | all | jump | SIN-220Hz-0.3V | yes | 138.3 | 290424 | 0 | 0 | 0 | 1 / 22 | 4939 | +| default | all | jump | DI-GTR L | yes | 171.9 | 1459694 | 0 | 0 | 0 | 1 / 29 | 8738 | +| max | preampVolume | lfo | SIN-220Hz-0.3V | yes | 79.5 | 290730 | 0 | 0 | 0 | 1 / 22 | 4446 | +| max | preampVolume | lfo | DI-GTR L | yes | 205.9 | 1501526 | 0 | 0 | 0 | 1 / 21 | 5586 | +| max | preampVolume | jump | SIN-220Hz-0.3V | yes | 138.3 | 295128 | 0 | 0 | 0 | 1 / 22 | 5108 | +| max | preampVolume | jump | DI-GTR L | yes | 215.9 | 1496665 | 0 | 0 | 0 | 1 / 21 | 6021 | +| max | treble | lfo | SIN-220Hz-0.3V | yes | 124.9 | 303592 | 0 | 0 | 0 | 2 / 25 | 6752 | +| max | treble | lfo | DI-GTR L | yes | 210.1 | 1512029 | 0 | 0 | 0 | 1 / 28 | 6960 | +| max | treble | jump | SIN-220Hz-0.3V | yes | 138.3 | 303523 | 0 | 0 | 0 | 2 / 22 | 5918 | +| max | treble | jump | DI-GTR L | yes | 215.0 | 1510091 | 0 | 0 | 0 | 1 / 28 | 6752 | +| max | middle | lfo | SIN-220Hz-0.3V | yes | 183.1 | 309517 | 0 | 0 | 0 | 2 / 22 | 6802 | +| max | middle | lfo | DI-GTR L | yes | 215.1 | 1509466 | 0 | 0 | 0 | 2 / 23 | 6536 | +| max | middle | jump | SIN-220Hz-0.3V | yes | 138.3 | 306251 | 0 | 0 | 0 | 2 / 22 | 6458 | +| max | middle | jump | DI-GTR L | yes | 218.1 | 1511465 | 0 | 0 | 0 | 2 / 21 | 6446 | +| max | bass | lfo | SIN-220Hz-0.3V | yes | 143.8 | 312438 | 0 | 0 | 0 | 2 / 22 | 7032 | +| max | bass | lfo | DI-GTR L | yes | 215.6 | 1529947 | 0 | 0 | 0 | 2 / 21 | 6601 | +| max | bass | jump | SIN-220Hz-0.3V | yes | 150.6 | 311582 | 0 | 0 | 0 | 2 / 22 | 6612 | +| max | bass | jump | DI-GTR L | yes | 214.0 | 1527546 | 0 | 0 | 0 | 2 / 22 | 6301 | +| max | master | lfo | SIN-220Hz-0.3V | yes | 75.0 | 292222 | 0 | 0 | 0 | 1 / 22 | 4792 | +| max | master | lfo | DI-GTR L | yes | 170.7 | 1471723 | 0 | 0 | 0 | 1 / 25 | 5441 | +| max | master | jump | SIN-220Hz-0.3V | yes | 138.3 | 294841 | 0 | 0 | 0 | 1 / 22 | 4625 | +| max | master | jump | DI-GTR L | yes | 181.6 | 1472693 | 0 | 0 | 0 | 1 / 26 | 5284 | +| max | presence | lfo | SIN-220Hz-0.3V | yes | 107.9 | 303464 | 0 | 0 | 0 | 2 / 22 | 6324 | +| max | presence | lfo | DI-GTR L | yes | 211.7 | 1501643 | 0 | 0 | 0 | 2 / 21 | 5598 | +| max | presence | jump | SIN-220Hz-0.3V | yes | 138.3 | 304322 | 0 | 0 | 0 | 2 / 22 | 6326 | +| max | presence | jump | DI-GTR L | yes | 212.4 | 1503289 | 0 | 0 | 0 | 2 / 19 | 5033 | +| max | all | lfo | SIN-220Hz-0.3V | yes | 77.1 | 288685 | 0 | 0 | 0 | 1 / 8 | 4234 | +| max | all | lfo | DI-GTR L | yes | 154.1 | 1451253 | 0 | 0 | 0 | 1 / 26 | 6967 | +| max | all | jump | SIN-220Hz-0.3V | yes | 138.3 | 290424 | 0 | 0 | 0 | 1 / 22 | 5216 | +| max | all | jump | DI-GTR L | yes | 171.9 | 1459694 | 0 | 0 | 0 | 1 / 29 | 6952 | diff --git a/harness/reports/M6/20261018_full_acceptance_fs384000_j4exact.md b/harness/reports/M6/20261018_full_acceptance_fs384000_j4exact.md index 167d538..c1a678a 100644 --- a/harness/reports/M6/20261018_full_acceptance_fs384000_j4exact.md +++ b/harness/reports/M6/20261018_full_acceptance_fs384000_j4exact.md @@ -1,6 +1,6 @@ # M4 acceptance: full amplifier vs the full netlist -- Date: 2026-10-18, engine commit `d37baf0 (dirty)`, ngspice 47, fs = 384000 Hz, J4 exact, SPICE reltol 1e-08 +- Date: 2026-10-18, engine commit `b193fc7 (dirty)`, ngspice 47, fs = 384000 Hz, J4 exact, SPICE reltol 1e-08 - Netlist sha256 `ffd9b2812204248f`, tubes.lib sha256 `c9c9c88346c69010` - Engine: `ampwav --block full` (volts at the jack and across the 16 Ω load), the checks of SPEC §7 M4. @@ -37,38 +37,38 @@ PASS 107 · FAIL 0 | nfb | newton_failures | closed 100 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | closed 100 Hz | 0 | — | INFO | | nfb | newton_median_iterations | closed 100 Hz | 1 | ≤ 3 | PASS | -| nfb | newton_max_iterations | closed 100 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | closed 100 Hz | 2 | ≤ 64 | PASS | | nfb | nfb_gain_db | closed 1000 Hz | 0.005811 dB | ≤ 0.5 | PASS | | nfb | newton_failures | closed 1000 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | closed 1000 Hz | 0 | — | INFO | | nfb | newton_median_iterations | closed 1000 Hz | 1 | ≤ 3 | PASS | -| nfb | newton_max_iterations | closed 1000 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | closed 1000 Hz | 2 | ≤ 64 | PASS | | nfb | nfb_gain_db | closed 5000 Hz | 0.01669 dB | ≤ 0.5 | PASS | | nfb | newton_failures | closed 5000 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | closed 5000 Hz | 0 | — | INFO | | nfb | newton_median_iterations | closed 5000 Hz | 2 | ≤ 3 | PASS | -| nfb | newton_max_iterations | closed 5000 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | closed 5000 Hz | 2 | ≤ 64 | PASS | | nfb | nfb_gain_db | open 100 Hz | 0.002491 dB | ≤ 0.5 | PASS | | nfb | newton_failures | open 100 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | open 100 Hz | 0 | — | INFO | | nfb | newton_median_iterations | open 100 Hz | 1 | ≤ 3 | PASS | -| nfb | newton_max_iterations | open 100 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | open 100 Hz | 2 | ≤ 64 | PASS | | nfb | nfb_gain_db | open 1000 Hz | 0.008421 dB | ≤ 0.5 | PASS | | nfb | newton_failures | open 1000 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | open 1000 Hz | 0 | — | INFO | | nfb | newton_median_iterations | open 1000 Hz | 1 | ≤ 3 | PASS | -| nfb | newton_max_iterations | open 1000 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | open 1000 Hz | 2 | ≤ 64 | PASS | | nfb | nfb_gain_db | open 5000 Hz | 0.06051 dB | ≤ 0.5 | PASS | | nfb | newton_failures | open 5000 Hz | 0 | ≤ 0 | PASS | | nfb | newton_unrescued | open 5000 Hz | 0 | — | INFO | | nfb | newton_median_iterations | open 5000 Hz | 2 | ≤ 3 | PASS | -| nfb | newton_max_iterations | open 5000 Hz | 2 | ≤ 32 | PASS | +| nfb | newton_max_iterations | open 5000 Hz | 2 | ≤ 64 | PASS | | clean | total_esr_db | CLEAN SIN-1000Hz-0.025V | -59.65 dB | ≤ -20 | PASS | | clean | total_harmonics_2_9_db | CLEAN SIN-1000Hz-0.025V | 0.02006 dB | ≤ 1.5 | PASS | | clean | newton_failures | CLEAN SIN-1000Hz-0.025V | 0 | ≤ 0 | PASS | | clean | newton_unrescued | CLEAN SIN-1000Hz-0.025V | 0 | — | INFO | | clean | newton_median_iterations | CLEAN SIN-1000Hz-0.025V | 2 | ≤ 3 | PASS | -| clean | newton_max_iterations | CLEAN SIN-1000Hz-0.025V | 6 | ≤ 32 | PASS | +| clean | newton_max_iterations | CLEAN SIN-1000Hz-0.025V | 6 | ≤ 64 | PASS | | clean | total_power_rel | CLEAN SIN-1000Hz-0.025V | 0.001223 | ≤ 0.05 | PASS | | clean | total_thd_pp | CLEAN SIN-1000Hz-0.025V | 0.0004352 pp | ≤ 0.5 | PASS | | stability | stability_out_v | max |out| | 4.546e-05 V | ≤ 0.001 | PASS | @@ -76,66 +76,66 @@ PASS 107 · FAIL 0 | stability | newton_failures | 60 s silence | 0 | ≤ 0 | PASS | | stability | newton_unrescued | 60 s silence | 0 | — | INFO | | stability | newton_median_iterations | 60 s silence | 1 | ≤ 3 | PASS | -| stability | newton_max_iterations | 60 s silence | 1 | ≤ 32 | PASS | +| stability | newton_max_iterations | 60 s silence | 1 | ≤ 64 | PASS | | overdrive | total_esr_db | OVERDRIVE SIN-220Hz-0.3V | -67.5 dB | ≤ -20 | PASS | | overdrive | total_harmonics_2_9_db | OVERDRIVE SIN-220Hz-0.3V | 0.009058 dB | ≤ 1.5 | PASS | | overdrive | sag_min_v | OVERDRIVE SIN-220Hz-0.3V | 0.003903 V | ≤ 2 | PASS | | overdrive | newton_failures | OVERDRIVE SIN-220Hz-0.3V | 0 | ≤ 0 | PASS | | overdrive | newton_unrescued | OVERDRIVE SIN-220Hz-0.3V | 0 | — | INFO | | overdrive | newton_median_iterations | OVERDRIVE SIN-220Hz-0.3V | 2 | ≤ 3 | PASS | -| overdrive | newton_max_iterations | OVERDRIVE SIN-220Hz-0.3V | 6 | ≤ 32 | PASS | +| overdrive | newton_max_iterations | OVERDRIVE SIN-220Hz-0.3V | 6 | ≤ 64 | PASS | | crunch_drive | total_esr_db | CRUNCH SIN-220Hz-0.3V | -69.66 dB | ≤ -20 | PASS | | crunch_drive | total_harmonics_2_9_db | CRUNCH SIN-220Hz-0.3V | 0.008117 dB | ≤ 1.5 | PASS | | crunch_drive | newton_failures | CRUNCH SIN-220Hz-0.3V | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | CRUNCH SIN-220Hz-0.3V | 0 | — | INFO | | crunch_drive | newton_median_iterations | CRUNCH SIN-220Hz-0.3V | 1 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | CRUNCH SIN-220Hz-0.3V | 4 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | CRUNCH SIN-220Hz-0.3V | 4 | ≤ 64 | PASS | | crunch_drive | total_esr_db | CRUNCH DI-GTR L | -59.73 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | CRUNCH DI-GTR L | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | CRUNCH DI-GTR L | 0 | — | INFO | | crunch_drive | newton_median_iterations | CRUNCH DI-GTR L | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | CRUNCH DI-GTR L | 8 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | CRUNCH DI-GTR L | 8 | ≤ 64 | PASS | | crunch_drive | total_esr_db | CRUNCH DI-GTR LL | -60.06 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | CRUNCH DI-GTR LL | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | CRUNCH DI-GTR LL | 0 | — | INFO | | crunch_drive | newton_median_iterations | CRUNCH DI-GTR LL | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | CRUNCH DI-GTR LL | 7 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | CRUNCH DI-GTR LL | 7 | ≤ 64 | PASS | | crunch_drive | total_esr_db | CRUNCH DI-GTR R | -60.65 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | CRUNCH DI-GTR R | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | CRUNCH DI-GTR R | 0 | — | INFO | | crunch_drive | newton_median_iterations | CRUNCH DI-GTR R | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | CRUNCH DI-GTR R | 7 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | CRUNCH DI-GTR R | 7 | ≤ 64 | PASS | | crunch_drive | total_esr_db | CRUNCH DI-GTR RR | -59.5 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | CRUNCH DI-GTR RR | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | CRUNCH DI-GTR RR | 0 | — | INFO | | crunch_drive | newton_median_iterations | CRUNCH DI-GTR RR | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | CRUNCH DI-GTR RR | 8 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | CRUNCH DI-GTR RR | 8 | ≤ 64 | PASS | | crunch_drive | total_esr_db | DRIVE SIN-220Hz-0.3V | -63.12 dB | ≤ -20 | PASS | | crunch_drive | total_harmonics_2_9_db | DRIVE SIN-220Hz-0.3V | 0.03219 dB | ≤ 1.5 | PASS | | crunch_drive | newton_failures | DRIVE SIN-220Hz-0.3V | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | DRIVE SIN-220Hz-0.3V | 0 | — | INFO | | crunch_drive | newton_median_iterations | DRIVE SIN-220Hz-0.3V | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | DRIVE SIN-220Hz-0.3V | 6 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | DRIVE SIN-220Hz-0.3V | 6 | ≤ 64 | PASS | | crunch_drive | total_esr_db | DRIVE DI-GTR L | -59.48 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | DRIVE DI-GTR L | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | DRIVE DI-GTR L | 0 | — | INFO | | crunch_drive | newton_median_iterations | DRIVE DI-GTR L | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | DRIVE DI-GTR L | 9 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | DRIVE DI-GTR L | 9 | ≤ 64 | PASS | | crunch_drive | total_esr_db | DRIVE DI-GTR LL | -60.63 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | DRIVE DI-GTR LL | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | DRIVE DI-GTR LL | 0 | — | INFO | | crunch_drive | newton_median_iterations | DRIVE DI-GTR LL | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | DRIVE DI-GTR LL | 9 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | DRIVE DI-GTR LL | 9 | ≤ 64 | PASS | | crunch_drive | total_esr_db | DRIVE DI-GTR R | -60.43 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | DRIVE DI-GTR R | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | DRIVE DI-GTR R | 0 | — | INFO | | crunch_drive | newton_median_iterations | DRIVE DI-GTR R | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | DRIVE DI-GTR R | 10 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | DRIVE DI-GTR R | 10 | ≤ 64 | PASS | | crunch_drive | total_esr_db | DRIVE DI-GTR RR | -59.46 dB | ≤ -20 | PASS | | crunch_drive | newton_failures | DRIVE DI-GTR RR | 0 | ≤ 0 | PASS | | crunch_drive | newton_unrescued | DRIVE DI-GTR RR | 0 | — | INFO | | crunch_drive | newton_median_iterations | DRIVE DI-GTR RR | 2 | ≤ 3 | PASS | -| crunch_drive | newton_max_iterations | DRIVE DI-GTR RR | 9 | ≤ 32 | PASS | +| crunch_drive | newton_max_iterations | DRIVE DI-GTR RR | 9 | ≤ 64 | PASS | ## DC operating point diff --git a/harness/reports/M6/20261018_full_acceptance_fs384000_j4exact_hot.md b/harness/reports/M6/20261018_full_acceptance_fs384000_j4exact_hot.md index 081078d..c9e9199 100644 --- a/harness/reports/M6/20261018_full_acceptance_fs384000_j4exact_hot.md +++ b/harness/reports/M6/20261018_full_acceptance_fs384000_j4exact_hot.md @@ -1,12 +1,12 @@ # M4 acceptance: full amplifier vs the full netlist -- Date: 2026-10-18, engine commit `d37baf0 (dirty)`, ngspice 47, fs = 384000 Hz, J4 exact, SPICE reltol 1e-08 +- Date: 2026-10-18, engine commit `b193fc7 (dirty)`, ngspice 47, fs = 384000 Hz, J4 exact, SPICE reltol 1e-08 - Netlist sha256 `ffd9b2812204248f`, tubes.lib sha256 `c9c9c88346c69010` - Engine: `ampwav --block full` (volts at the jack and across the 16 Ω load), the checks of SPEC §7 M4. ## Summary -PASS 20 · FAIL 1 +PASS 21 · FAIL 0 | Section | Check | Item | Measured | Tolerance | Status | |---|---|---|---|---|---| @@ -15,27 +15,27 @@ PASS 20 · FAIL 1 | hot | newton_failures | HOT SIN-220Hz-0.3V | 0 | ≤ 0 | PASS | | hot | newton_unrescued | HOT SIN-220Hz-0.3V | 0 | — | INFO | | hot | newton_median_iterations | HOT SIN-220Hz-0.3V | 2 | ≤ 3 | PASS | -| hot | newton_max_iterations | HOT SIN-220Hz-0.3V | 6 | ≤ 32 | PASS | +| hot | newton_max_iterations | HOT SIN-220Hz-0.3V | 6 | ≤ 64 | PASS | | hot | total_esr_db | HOT DI-GTR L | -40.27 dB | ≤ -20 | PASS | | hot | newton_failures | HOT DI-GTR L | 0 | ≤ 0 | PASS | | hot | newton_unrescued | HOT DI-GTR L | 0 | — | INFO | | hot | newton_median_iterations | HOT DI-GTR L | 2 | ≤ 3 | PASS | -| hot | newton_max_iterations | HOT DI-GTR L | 15 | ≤ 32 | PASS | +| hot | newton_max_iterations | HOT DI-GTR L | 17 | ≤ 64 | PASS | | hot | total_esr_db | HOT DI-GTR LL | -41 dB | ≤ -20 | PASS | | hot | newton_failures | HOT DI-GTR LL | 0 | ≤ 0 | PASS | | hot | newton_unrescued | HOT DI-GTR LL | 0 | — | INFO | | hot | newton_median_iterations | HOT DI-GTR LL | 2 | ≤ 3 | PASS | -| hot | newton_max_iterations | HOT DI-GTR LL | 13 | ≤ 32 | PASS | +| hot | newton_max_iterations | HOT DI-GTR LL | 17 | ≤ 64 | PASS | | hot | total_esr_db | HOT DI-GTR R | -41.5 dB | ≤ -20 | PASS | | hot | newton_failures | HOT DI-GTR R | 0 | ≤ 0 | PASS | | hot | newton_unrescued | HOT DI-GTR R | 0 | — | INFO | | hot | newton_median_iterations | HOT DI-GTR R | 2 | ≤ 3 | PASS | -| hot | newton_max_iterations | HOT DI-GTR R | 12 | ≤ 32 | PASS | +| hot | newton_max_iterations | HOT DI-GTR R | 16 | ≤ 64 | PASS | | hot | total_esr_db | HOT DI-GTR RR | -40.86 dB | ≤ -20 | PASS | -| hot | newton_failures | HOT DI-GTR RR | 1 | ≤ 0 | FAIL | +| hot | newton_failures | HOT DI-GTR RR | 0 | ≤ 0 | PASS | | hot | newton_unrescued | HOT DI-GTR RR | 0 | — | INFO | | hot | newton_median_iterations | HOT DI-GTR RR | 2 | ≤ 3 | PASS | -| hot | newton_max_iterations | HOT DI-GTR RR | 32 | ≤ 32 | PASS | +| hot | newton_max_iterations | HOT DI-GTR RR | 17 | ≤ 64 | PASS | ## Signals diff --git a/harness/reports/M6/20261018_plugin_null_2x_full.md b/harness/reports/M6/20261018_plugin_null_2x_full.md index 6a63df8..39912f8 100644 --- a/harness/reports/M6/20261018_plugin_null_2x_full.md +++ b/harness/reports/M6/20261018_plugin_null_2x_full.md @@ -1,6 +1,6 @@ # M5 wrapper null test: plugin vs ampwav at 96 kHz with the same resampling -- Date: 2026-10-18, commit `d37baf0 (dirty)`; host rate 48000 Hz, 2x, Power Amp Rate full, exact J4 +- Date: 2026-10-18, commit `b193fc7 (dirty)`; host rate 48000 Hz, 2x, Power Amp Rate full, exact J4 - Plugin: `amp2203_render plugin` (the Amp2203Processor offline). Reference: the processor's oversampler up stage, `ampwav --block full --units fs --j4 exact` at 96000 Hz, the down stage. Default knobs and levels. - Tolerance (SPEC §7 M5): ESR ≤ -60 dB. @@ -8,55 +8,55 @@ PASS 26 · FAIL 0 | Filter | Signal | Peak out [FS] | ESR | Status | Render log | |---|---|---|---|---|---| -| fir | SIN-100Hz--40dBFS | 0.145 | -138.5 dB | PASS | processBlock 0.046 s for 0.200 s of audio: 23.1 % of one core, real-time factor 4.32 +| fir | SIN-100Hz--40dBFS | 0.145 | -138.5 dB | PASS | processBlock 0.059 s for 0.200 s of audio: 29.7 % of one core, real-time factor 3.37 latency 49 samples, Newton failures 0 (rescued 0), max iterations 2 | -| fir | SIN-100Hz--20dBFS | 0.870 | -138.5 dB | PASS | processBlock 0.048 s for 0.200 s of audio: 24.0 % of one core, real-time factor 4.18 +| fir | SIN-100Hz--20dBFS | 0.870 | -138.5 dB | PASS | processBlock 0.062 s for 0.200 s of audio: 31.2 % of one core, real-time factor 3.20 latency 49 samples, Newton failures 0 (rescued 0), max iterations 5 | | fir | SIN-100Hz--6dBFS | 0.915 | -138.5 dB | PASS | processBlock 0.050 s for 0.200 s of audio: 24.8 % of one core, real-time factor 4.03 latency 49 samples, Newton failures 0 (rescued 0), max iterations 10 | -| fir | SIN-1000Hz--40dBFS | 0.383 | -138.5 dB | PASS | processBlock 0.073 s for 0.200 s of audio: 36.6 % of one core, real-time factor 2.73 +| fir | SIN-1000Hz--40dBFS | 0.383 | -138.5 dB | PASS | processBlock 0.073 s for 0.200 s of audio: 36.4 % of one core, real-time factor 2.75 latency 49 samples, Newton failures 0 (rescued 0), max iterations 7 | -| fir | SIN-1000Hz--20dBFS | 0.850 | -138.5 dB | PASS | processBlock 0.072 s for 0.200 s of audio: 35.9 % of one core, real-time factor 2.78 +| fir | SIN-1000Hz--20dBFS | 0.850 | -138.5 dB | PASS | processBlock 0.087 s for 0.200 s of audio: 43.6 % of one core, real-time factor 2.29 latency 49 samples, Newton failures 0 (rescued 0), max iterations 12 | -| fir | SIN-1000Hz--6dBFS | 0.918 | -138.5 dB | PASS | processBlock 0.079 s for 0.200 s of audio: 39.3 % of one core, real-time factor 2.55 +| fir | SIN-1000Hz--6dBFS | 0.918 | -138.5 dB | PASS | processBlock 0.099 s for 0.200 s of audio: 49.3 % of one core, real-time factor 2.03 latency 49 samples, Newton failures 0 (rescued 0), max iterations 13 | -| fir | SIN-5000Hz--40dBFS | 0.857 | -138.5 dB | PASS | processBlock 0.089 s for 0.200 s of audio: 44.7 % of one core, real-time factor 2.24 +| fir | SIN-5000Hz--40dBFS | 0.857 | -138.5 dB | PASS | processBlock 0.099 s for 0.200 s of audio: 49.7 % of one core, real-time factor 2.01 latency 49 samples, Newton failures 0 (rescued 0), max iterations 17 | -| fir | SIN-5000Hz--20dBFS | 0.891 | -138.5 dB | PASS | processBlock 0.102 s for 0.200 s of audio: 50.8 % of one core, real-time factor 1.97 +| fir | SIN-5000Hz--20dBFS | 0.891 | -138.5 dB | PASS | processBlock 0.115 s for 0.200 s of audio: 57.5 % of one core, real-time factor 1.74 latency 49 samples, Newton failures 0 (rescued 0), max iterations 19 | -| fir | SIN-5000Hz--6dBFS | 0.863 | -138.5 dB | PASS | processBlock 0.515 s for 0.200 s of audio: 257.3 % of one core, real-time factor 0.39 -latency 49 samples, Newton failures 3518 (rescued 89), max iterations 32 | -| fir | DI-GTR L | 0.984 | -138.5 dB | PASS | processBlock 1.236 s for 5.000 s of audio: 24.7 % of one core, real-time factor 4.04 +| fir | SIN-5000Hz--6dBFS | 0.871 | -138.5 dB | PASS | processBlock 0.152 s for 0.200 s of audio: 76.2 % of one core, real-time factor 1.31 +latency 49 samples, Newton failures 0 (rescued 0), max iterations 53 | +| fir | DI-GTR L | 0.984 | -138.5 dB | PASS | processBlock 1.302 s for 5.000 s of audio: 26.0 % of one core, real-time factor 3.84 latency 49 samples, Newton failures 0 (rescued 0), max iterations 18 | -| fir | DI-GTR LL | 0.861 | -138.5 dB | PASS | processBlock 1.189 s for 5.000 s of audio: 23.8 % of one core, real-time factor 4.21 +| fir | DI-GTR LL | 0.861 | -138.5 dB | PASS | processBlock 1.263 s for 5.000 s of audio: 25.3 % of one core, real-time factor 3.96 latency 49 samples, Newton failures 0 (rescued 0), max iterations 17 | -| fir | DI-GTR R | 0.944 | -138.5 dB | PASS | processBlock 1.206 s for 5.000 s of audio: 24.1 % of one core, real-time factor 4.15 +| fir | DI-GTR R | 0.944 | -138.5 dB | PASS | processBlock 1.263 s for 5.000 s of audio: 25.3 % of one core, real-time factor 3.96 latency 49 samples, Newton failures 0 (rescued 0), max iterations 16 | -| fir | DI-GTR RR | 0.990 | -138.5 dB | PASS | processBlock 1.245 s for 5.000 s of audio: 24.9 % of one core, real-time factor 4.02 +| fir | DI-GTR RR | 0.990 | -138.5 dB | PASS | processBlock 1.281 s for 5.000 s of audio: 25.6 % of one core, real-time factor 3.90 latency 49 samples, Newton failures 0 (rescued 0), max iterations 19 | -| iir | SIN-100Hz--40dBFS | 0.145 | -138.5 dB | PASS | processBlock 0.042 s for 0.200 s of audio: 20.8 % of one core, real-time factor 4.81 +| iir | SIN-100Hz--40dBFS | 0.145 | -138.5 dB | PASS | processBlock 0.053 s for 0.200 s of audio: 26.4 % of one core, real-time factor 3.78 latency 4 samples, Newton failures 0 (rescued 0), max iterations 2 | -| iir | SIN-100Hz--20dBFS | 0.870 | -138.5 dB | PASS | processBlock 0.044 s for 0.200 s of audio: 22.1 % of one core, real-time factor 4.52 +| iir | SIN-100Hz--20dBFS | 0.870 | -138.5 dB | PASS | processBlock 0.047 s for 0.200 s of audio: 23.5 % of one core, real-time factor 4.25 latency 4 samples, Newton failures 0 (rescued 0), max iterations 4 | -| iir | SIN-100Hz--6dBFS | 0.915 | -138.5 dB | PASS | processBlock 0.045 s for 0.200 s of audio: 22.4 % of one core, real-time factor 4.47 +| iir | SIN-100Hz--6dBFS | 0.915 | -138.5 dB | PASS | processBlock 0.054 s for 0.200 s of audio: 26.9 % of one core, real-time factor 3.72 latency 4 samples, Newton failures 0 (rescued 0), max iterations 6 | -| iir | SIN-1000Hz--40dBFS | 0.402 | -138.5 dB | PASS | processBlock 0.066 s for 0.200 s of audio: 32.8 % of one core, real-time factor 3.05 +| iir | SIN-1000Hz--40dBFS | 0.402 | -138.5 dB | PASS | processBlock 0.070 s for 0.200 s of audio: 35.2 % of one core, real-time factor 2.84 latency 4 samples, Newton failures 0 (rescued 0), max iterations 7 | -| iir | SIN-1000Hz--20dBFS | 0.932 | -138.5 dB | PASS | processBlock 0.070 s for 0.200 s of audio: 34.9 % of one core, real-time factor 2.87 +| iir | SIN-1000Hz--20dBFS | 0.932 | -138.5 dB | PASS | processBlock 0.078 s for 0.200 s of audio: 39.0 % of one core, real-time factor 2.56 latency 4 samples, Newton failures 0 (rescued 0), max iterations 10 | -| iir | SIN-1000Hz--6dBFS | 1.087 | -138.5 dB | PASS | processBlock 0.076 s for 0.200 s of audio: 37.8 % of one core, real-time factor 2.65 +| iir | SIN-1000Hz--6dBFS | 1.087 | -138.5 dB | PASS | processBlock 0.079 s for 0.200 s of audio: 39.7 % of one core, real-time factor 2.52 latency 4 samples, Newton failures 0 (rescued 0), max iterations 19 | -| iir | SIN-5000Hz--40dBFS | 0.987 | -138.5 dB | PASS | processBlock 0.090 s for 0.200 s of audio: 45.0 % of one core, real-time factor 2.22 +| iir | SIN-5000Hz--40dBFS | 0.987 | -138.5 dB | PASS | processBlock 0.110 s for 0.200 s of audio: 55.2 % of one core, real-time factor 1.81 latency 4 samples, Newton failures 0 (rescued 0), max iterations 16 | -| iir | SIN-5000Hz--20dBFS | 1.048 | -138.5 dB | PASS | processBlock 0.100 s for 0.200 s of audio: 50.1 % of one core, real-time factor 1.99 +| iir | SIN-5000Hz--20dBFS | 1.048 | -138.5 dB | PASS | processBlock 0.101 s for 0.200 s of audio: 50.7 % of one core, real-time factor 1.97 latency 4 samples, Newton failures 0 (rescued 0), max iterations 18 | -| iir | SIN-5000Hz--6dBFS | 1.032 | -138.5 dB | PASS | processBlock 0.574 s for 0.200 s of audio: 286.8 % of one core, real-time factor 0.35 -latency 4 samples, Newton failures 3955 (rescued 58), max iterations 32 | -| iir | DI-GTR L | 0.950 | -138.5 dB | PASS | processBlock 1.230 s for 5.000 s of audio: 24.6 % of one core, real-time factor 4.07 +| iir | SIN-5000Hz--6dBFS | 1.040 | -138.5 dB | PASS | processBlock 0.131 s for 0.200 s of audio: 65.6 % of one core, real-time factor 1.52 +latency 4 samples, Newton failures 0 (rescued 0), max iterations 50 | +| iir | DI-GTR L | 0.950 | -138.5 dB | PASS | processBlock 1.256 s for 5.000 s of audio: 25.1 % of one core, real-time factor 3.98 latency 4 samples, Newton failures 0 (rescued 0), max iterations 18 | -| iir | DI-GTR LL | 0.955 | -138.5 dB | PASS | processBlock 1.175 s for 5.000 s of audio: 23.5 % of one core, real-time factor 4.25 +| iir | DI-GTR LL | 0.955 | -138.5 dB | PASS | processBlock 1.234 s for 5.000 s of audio: 24.7 % of one core, real-time factor 4.05 latency 4 samples, Newton failures 0 (rescued 0), max iterations 19 | -| iir | DI-GTR R | 1.046 | -138.5 dB | PASS | processBlock 1.192 s for 5.000 s of audio: 23.8 % of one core, real-time factor 4.19 +| iir | DI-GTR R | 1.046 | -138.5 dB | PASS | processBlock 1.212 s for 5.000 s of audio: 24.2 % of one core, real-time factor 4.12 latency 4 samples, Newton failures 0 (rescued 0), max iterations 18 | -| iir | DI-GTR RR | 1.049 | -138.5 dB | PASS | processBlock 1.230 s for 5.000 s of audio: 24.6 % of one core, real-time factor 4.07 +| iir | DI-GTR RR | 1.049 | -138.5 dB | PASS | processBlock 1.248 s for 5.000 s of audio: 25.0 % of one core, real-time factor 4.01 latency 4 samples, Newton failures 0 (rescued 0), max iterations 23 | diff --git a/harness/reports/M6/20261018_x2_rates_newton_fix_full2x.md b/harness/reports/M6/20261018_x2_rates_newton_fix_full2x.md new file mode 100644 index 0000000..701970a --- /dev/null +++ b/harness/reports/M6/20261018_x2_rates_newton_fix_full2x.md @@ -0,0 +1,48 @@ +# M6 A1: full engine (exact J4) at lower internal rates, plugin model check + +- Date 2026-10-18; options: tol 0.0001; rates 48 kHz × [2]. +- Plugin model check (D-051): ESR ≤ -20 dB vs SPICE (cached 384000 Hz references, 48 kHz band, first 5 s of every DI track, first 0.1 s excluded). Unseen settings: the 16 X4 validation settings, 10 s, vs the engine at 16x (first 1 s excluded). Cost: ampwav --stats on 10 s of DI GTR L, one run at a time; oversampling filters not included. + +## Summary + +| Rate | vs SPICE worst (CRUNCH / DRIVE / HOT) | Check | Unseen settings vs 16x (worst / median) | Newton failures (not rescued) / runs, max iterations | Cost default / HOT (% of one core) | +|---|---|---|---|---|---| +| 2x (96 kHz) | -45.3 / -48.5 / -24.0 dB | PASS | -20.8 / -39.0 dB | 0 (0) / 28, 56 | 27.1 / 42.2 | + +## vs SPICE per clip + +| Clip | 2x | +|---|---| +| CRUNCH GTR L | -45.8 dB | +| CRUNCH GTR LL | -45.3 dB | +| CRUNCH GTR R | -46.1 dB | +| CRUNCH GTR RR | -45.7 dB | +| DRIVE GTR L | -48.5 dB | +| DRIVE GTR LL | -49.7 dB | +| DRIVE GTR R | -49.5 dB | +| DRIVE GTR RR | -48.9 dB | +| HOT GTR L | -24.3 dB | +| HOT GTR LL | -25.2 dB | +| HOT GTR R | -25.2 dB | +| HOT GTR RR | -24.0 dB | + +## Aliasing (power outside the harmonics of f0, relative to the total; 16x for reference) + +Each cell: non-harmonic power, then Newton failures (not rescued) in that 2 s run. Non-converged samples add non-harmonic power, so a cell with many failures measures solver error as well as aliasing. + +| Preset | f0 | amplitude (FS) | 16x | 2x | +|---|---|---|---|---| +| CRUNCH | 5000 Hz | 0.1 | -25.3 dB, 0 (0) | -20.5 dB, 0 (0) | +| CRUNCH | 5000 Hz | 0.4 | -24.4 dB, 0 (0) | -17.3 dB, 0 (0) | +| CRUNCH | 9000 Hz | 0.1 | -40.9 dB, 0 (0) | -18.2 dB, 0 (0) | +| CRUNCH | 9000 Hz | 0.4 | -40.0 dB, 0 (0) | -14.9 dB, 0 (0) | +| HOT | 5000 Hz | 0.1 | -25.1 dB, 0 (0) | -16.5 dB, 0 (0) | +| HOT | 5000 Hz | 0.4 | -25.0 dB, 0 (0) | -15.2 dB, 0 (0) | +| HOT | 9000 Hz | 0.1 | -38.8 dB, 0 (0) | -16.4 dB, 0 (0) | +| HOT | 9000 Hz | 0.4 | -33.3 dB, 0 (0) | -14.9 dB, 0 (0) | + +## Cost + +| Rate | ns per engine sample (default / HOT) | % of one core at 48 kHz | +|---|---|---| +| 2x | 2820 / 4393 | 27.1 / 42.2 | diff --git a/harness/tolerances.py b/harness/tolerances.py index ba3fa25..76d7750 100644 --- a/harness/tolerances.py +++ b/harness/tolerances.py @@ -73,7 +73,8 @@ # per-block overrides of a tolerance: the Newton maximum is "the configured limit", which is 32 for the two roots # of the full amp, the preamp B1234 and the power amp B56 (D-052; was 12 / 16, D-045); every other root has 12 -OVERRIDES = {(b, 'newton_max_iterations'): (32, 'max') for b in ('b56', 'full', 'b1234', 'preamp')} +OVERRIDES = {(b, 'newton_max_iterations'): (32, 'max') for b in ('b56',)} +OVERRIDES.update({(b, 'newton_max_iterations'): (64, 'max') for b in ('full', 'b1234', 'preamp')}) # preamp 64 (D-064) def status(milestone, block_id, check, value): From 3ff638d422964d6705ef85cb7e69789fdb726296 Mon Sep 17 00:00:00 2001 From: CatastrophicCoder Date: Sun, 18 Oct 2026 22:50:01 +0300 Subject: [PATCH 2/2] m6: M6 report and plugin CPU after D-064; pluginval and auval pass --- harness/reports/M6/20261018_M6_report.md | 22 +++---- harness/reports/M6/20261018_auval.log | 8 +-- harness/reports/M6/20261018_plugin_cpu.md | 66 +++++++++---------- harness/reports/M6/20261018_pluginval_au.log | 2 +- .../reports/M6/20261018_pluginval_vst3.log | 2 +- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/harness/reports/M6/20261018_M6_report.md b/harness/reports/M6/20261018_M6_report.md index 282ff7a..bb954a4 100644 --- a/harness/reports/M6/20261018_M6_report.md +++ b/harness/reports/M6/20261018_M6_report.md @@ -5,7 +5,7 @@ items stay open); widened by owner decisions during M6 to the accuracy target (D (D-054 – D-060) and reference-model refinements from listening (D-058, D-059, D-061, D-062). - macOS 15.7, Apple clang 17, Release · JUCE 8.0.15 · pluginval 1.0.4 · ngspice 47 · main at 0b5f06e (PR #4) -- Details per step: `docs/PROGRESS.md` (M6), DECISIONS D-049 … D-062, the reports cited below. +- Details per step: `docs/PROGRESS.md` (M6), DECISIONS D-049 … D-064, the reports cited below. ## Outcome in one paragraph @@ -25,23 +25,23 @@ above the 20 % working budget. | Oversampling | 2x (2x / 4x / 8x / 16x selectable) | D-054 | | Power Amp Rate | Full (Half selectable) | D-060, confirmed after a listening test | | Preamp → power amp junction | exact J4 (joint solve) | X1, D-053 | -| Newton | maxIter 32 (both roots), residual tolerance 1e-4 V, adaptive half-steps on | D-052, D-055, D-056 | +| Newton | maxIter 64 preamp root / 32 power-amp root, EL34 pair 3 step halvings, residual tolerance 1e-4 V, adaptive half-steps on | D-052, D-055, D-056, D-064 | | Knob changes | matrix updates in double precision every 128 samples while a knob moves | D-057 | | Latency at 48 kHz | 49 samples FIR (≈ 1.0 ms); IIR lower | oversampler only | -## Verification (final, after D-062; reports dated 2026-10-18) +## Verification (final, after D-064; reports dated 2026-10-18) | Check | Result | Status | |---|---|---| | M4 full acceptance at 768 kHz (`M4/20261018_full_acceptance.md`) | 107 PASS; CRUNCH / DRIVE DI −60.2 … −62.1 dB | PASS | | Full acceptance at 384 kHz, exact J4 (`…_fs384000_j4exact.md`) | 107 PASS | PASS | -| HOT (Master, Presence 1.0) at 384 kHz (`…_j4exact_hot.md`) | 20 PASS / 1 FAIL: DI −40.3 … −41.5 dB; FAIL = 2 rescued first-solve Newton failures on one clip | 1 FAIL (Newton count) | -| Plugin model check, 2x Full, 1e-4 V (`20261018_x2_rates_d062_full2x.md`) | vs SPICE worst CRUNCH / DRIVE / HOT −45.3 / −48.5 / −24.0 dB; unseen settings vs 16x worst −20.8 dB | PASS (≤ −20 dB) | +| HOT (Master, Presence 1.0) at 384 kHz (`…_j4exact_hot.md`) | 21 PASS: DI −40.3 … −41.5 dB, 0 Newton failures (before D-064: 2 rescued on one clip) | PASS | +| Plugin model check, 2x Full, 1e-4 V (`20261018_x2_rates_newton_fix_full2x.md`) | vs SPICE worst CRUNCH / DRIVE / HOT −45.3 / −48.5 / −24.0 dB; unseen settings vs 16x worst −20.8 dB; Newton 0 failures over 28 runs (before D-064: 102, 3 unrescued) | PASS (≤ −20 dB) | | Block tests (M2 / M3 / M4, 2026-10-18) | b12 105 / 106 / 106, b1234 119, b3 87, b34 94, b56 106, b5open 88 PASS, 0 FAIL; b6 96 PASS / 1 FAIL (known 5 kHz 20 V Newton median, D-043) | PASS except the known b6 item | | Knob jumps vs SPICE | b12 −55.9, b1234 −39.1 … −55.1, b34 −53.1 … −67.6, b56 Presence −62.9 dB | PASS (≤ −20 dB) | | Plugin vs ampwav null test, 2x Full (`20261018_plugin_null_2x_full.md`) | 26 / 26, worst −138.5 dB | PASS (≤ −60 dB) | | pluginval strictness 5 (VST3, AU), auval | SUCCESS / SUCCESS / SUCCEEDED (`20261018_pluginval_*.log`, `20261018_auval.log`) | PASS | -| Automation at audio rate (96 kHz, Full, exact J4, 1e-4 V) | 56 runs, no NaN / Inf, 0 unrescued | PASS | +| Automation at audio rate (96 kHz, Full, exact J4, 1e-4 V) | 56 runs, no NaN / Inf, 0 failures | PASS | Notes: the b56 / b6 SWP-lo-0.1V references stop with "timestep too small" at RELTOL 1e-8 (recorded-input nodes; independent of the tube model) and are rendered once more at RELTOL 1e-7 by `render_spice`, noted in their @@ -51,8 +51,8 @@ reports (as the M3 cascade does). Earlier reports describe earlier models (Koren | Situation | % of one core | |---|---| -| Default knobs, static | 27.1 | -| Every knob 10, static | 50.8 | +| Default knobs, static | 27.0 | +| Every knob 10, static | 49.7 | | Owner's NAM-matched settings (Preamp 10, Master 10, Presence 8) | ≈ 47 | | All six knobs moving (LFO / jumps, host blocks 512 or 64) | 32.8 … 34.7 | | Same at Power Amp Rate Half (for comparison) | default ≈ 19, NAM settings ≈ 31.5 | @@ -84,8 +84,8 @@ Also fixed during M6: the standalone blocks' default supplies were still pre-D-0 ## Open items -- HOT acceptance: 1 FAIL (2 rescued first-solve Newton failures on one DI clip at 384 kHz). -- Plugin model check: 102 first-solve failures (3 unrescued) over 28 runs, almost all at extreme unseen knob settings. +- Closed by D-064: the HOT acceptance FAIL (2 rescued first-solve Newton failures) and the plugin model check's 102 + first-solve failures (3 unrescued); now 0 in both. - CPU above the 20 % working budget at high Master (≈ 47 %); optimisation candidates: the Newton solve and the device maths (profile: LU ≈ 29 %, libm ≈ 26 %, Newton loop ≈ 34 % at HOT). - Speaker load: kept after comparison with measured 4x12 curves (T1511, T1281, G12K-85; D-063); an era-matched G12-65 / @@ -98,4 +98,4 @@ Also fixed during M6: the standalone blocks' default supplies were still pre-D-0 D-049 (performance options), D-050 (PyTorch for X3), D-051 (−20 dB ESR), D-052 (maxIter 32), D-053 (exact J4 at half rate), D-054 (plugin defaults 2x / exact J4), D-055 (tolerance 1e-4 V), D-056 (half-steps on), D-057 (matrix updates), -D-058 (EL34 fit), D-059 (speaker load), D-060 (Full default), D-061 (plate clamp), D-062 (C2), D-063 (speaker load kept after comparison with measured curves). +D-058 (EL34 fit), D-059 (speaker load), D-060 (Full default), D-061 (plate clamp), D-062 (C2), D-063 (speaker load kept after comparison with measured curves), D-064 (Newton budget). diff --git a/harness/reports/M6/20261018_auval.log b/harness/reports/M6/20261018_auval.log index c8eb1a9..e3a4b88 100644 --- a/harness/reports/M6/20261018_auval.log +++ b/harness/reports/M6/20261018_auval.log @@ -15,12 +15,12 @@ Component Version: 0.0.1 (0x1) -------------------------------------------------- TESTING OPEN TIMES: COLD: -Time to open AudioUnit: 10.234 ms +Time to open AudioUnit: 11.440 ms WARM: -Time to open AudioUnit: 6.247 ms +Time to open AudioUnit: 6.148 ms This AudioUnit is a version 2 implementation. FIRST TIME: -Time for initialization: 10.030 ms +Time for initialization: 9.406 ms * * PASS -------------------------------------------------- @@ -65,7 +65,7 @@ VERIFYING SPECIAL PROPERTIES: VERIFYING CUSTOM UI Cocoa Views Available: 1 - JUCE_AUCocoaViewClass_a0ff1c23697f1de4 + JUCE_AUCocoaViewClass_ff005cee92b3e93d PASS HAS FACTORY PRESETS diff --git a/harness/reports/M6/20261018_plugin_cpu.md b/harness/reports/M6/20261018_plugin_cpu.md index e01907b..8239803 100644 --- a/harness/reports/M6/20261018_plugin_cpu.md +++ b/harness/reports/M6/20261018_plugin_cpu.md @@ -1,39 +1,39 @@ # M6 plugin CPU under knob automation -- Date 2026-10-18, commit `d37baf0 (dirty)`; `amp2203_render plugin` at the plugin defaults (2x, Power Amp Rate Full, exact J4, Newton tol 1e-4 V, half-steps on; D-054 – D-056, D-060), FIR oversampling, 20 s of DI GTR L at 48000 Hz; processBlock time only. +- Date 2026-10-18, commit `daf089b (dirty)`; `amp2203_render plugin` at the plugin defaults (2x, Power Amp Rate Full, exact J4, Newton tol 1e-4 V, half-steps on; D-054 – D-056, D-060), FIR oversampling, 20 s of DI GTR L at 48000 Hz; processBlock time only. - Automation between host blocks: lfo = 10 Hz triangle 0 → 10 → 0, jump = 0 ↔ 10 every 50 ms; "all" moves the six knobs together. One render at a time. | Base | Knob(s) | Modulation | Host block | CPU (% of one core) | Newton failures (rescued) | |---|---|---|---|---|---| -| default | — | static | 512 | 27.1 | 0 (0) | -| every knob 10 | — | static | 512 | 50.8 | 40 (40) | -| default | preampVolume | lfo | 512 | 26.2 | 0 (0) | -| default | preampVolume | jump | 512 | 25.8 | 0 (0) | -| default | treble | lfo | 512 | 27.6 | 0 (0) | -| default | treble | jump | 512 | 27.3 | 0 (0) | -| default | middle | lfo | 512 | 27.2 | 0 (0) | -| default | middle | jump | 512 | 27.2 | 0 (0) | -| default | bass | lfo | 512 | 27.1 | 0 (0) | -| default | bass | jump | 512 | 27.2 | 0 (0) | -| default | master | lfo | 512 | 31.4 | 4 (4) | -| default | master | jump | 512 | 31.2 | 5 (5) | -| default | presence | lfo | 512 | 28.4 | 0 (0) | -| default | presence | jump | 512 | 28.5 | 0 (0) | -| default | all | lfo | 512 | 32.8 | 0 (0) | -| default | all | jump | 512 | 34.6 | 2 (2) | -| every knob 10 | preampVolume | lfo | 512 | 43.4 | 16 (16) | -| every knob 10 | preampVolume | jump | 512 | 43.0 | 24 (24) | -| every knob 10 | treble | lfo | 512 | 48.7 | 24 (24) | -| every knob 10 | treble | jump | 512 | 47.8 | 25 (25) | -| every knob 10 | middle | lfo | 512 | 48.2 | 28 (28) | -| every knob 10 | middle | jump | 512 | 48.5 | 24 (24) | -| every knob 10 | bass | lfo | 512 | 52.4 | 35 (35) | -| every knob 10 | bass | jump | 512 | 52.0 | 31 (31) | -| every knob 10 | master | lfo | 512 | 38.3 | 6 (6) | -| every knob 10 | master | jump | 512 | 38.4 | 8 (8) | -| every knob 10 | presence | lfo | 512 | 47.4 | 23 (23) | -| every knob 10 | presence | jump | 512 | 48.3 | 27 (27) | -| every knob 10 | all | lfo | 512 | 33.1 | 0 (0) | -| every knob 10 | all | jump | 512 | 34.6 | 4 (4) | -| default | all | jump | 64 | 34.2 | 7 (7) | -| every knob 10 | all | jump | 64 | 34.7 | 10 (10) | +| default | — | static | 512 | 27.0 | 0 (0) | +| every knob 10 | — | static | 512 | 49.7 | 0 (0) | +| default | preampVolume | lfo | 512 | 25.6 | 0 (0) | +| default | preampVolume | jump | 512 | 25.3 | 0 (0) | +| default | treble | lfo | 512 | 26.9 | 0 (0) | +| default | treble | jump | 512 | 27.4 | 0 (0) | +| default | middle | lfo | 512 | 26.8 | 0 (0) | +| default | middle | jump | 512 | 26.6 | 0 (0) | +| default | bass | lfo | 512 | 26.6 | 0 (0) | +| default | bass | jump | 512 | 26.6 | 0 (0) | +| default | master | lfo | 512 | 31.0 | 0 (0) | +| default | master | jump | 512 | 30.8 | 0 (0) | +| default | presence | lfo | 512 | 27.9 | 0 (0) | +| default | presence | jump | 512 | 28.0 | 0 (0) | +| default | all | lfo | 512 | 31.5 | 0 (0) | +| default | all | jump | 512 | 34.3 | 0 (0) | +| every knob 10 | preampVolume | lfo | 512 | 42.9 | 0 (0) | +| every knob 10 | preampVolume | jump | 512 | 42.4 | 0 (0) | +| every knob 10 | treble | lfo | 512 | 47.8 | 0 (0) | +| every knob 10 | treble | jump | 512 | 49.9 | 0 (0) | +| every knob 10 | middle | lfo | 512 | 47.9 | 0 (0) | +| every knob 10 | middle | jump | 512 | 48.4 | 0 (0) | +| every knob 10 | bass | lfo | 512 | 52.4 | 0 (0) | +| every knob 10 | bass | jump | 512 | 51.6 | 0 (0) | +| every knob 10 | master | lfo | 512 | 37.2 | 0 (0) | +| every knob 10 | master | jump | 512 | 38.5 | 0 (0) | +| every knob 10 | presence | lfo | 512 | 46.8 | 0 (0) | +| every knob 10 | presence | jump | 512 | 47.4 | 0 (0) | +| every knob 10 | all | lfo | 512 | 32.6 | 0 (0) | +| every knob 10 | all | jump | 512 | 34.5 | 0 (0) | +| default | all | jump | 64 | 33.5 | 0 (0) | +| every knob 10 | all | jump | 64 | 33.9 | 0 (0) | diff --git a/harness/reports/M6/20261018_pluginval_au.log b/harness/reports/M6/20261018_pluginval_au.log index ff74411..88aa9e5 100644 --- a/harness/reports/M6/20261018_pluginval_au.log +++ b/harness/reports/M6/20261018_pluginval_au.log @@ -1,5 +1,5 @@ Started validating: /Users/kimmo/Library/Audio/Plug-Ins/Components/Amp2203.component -Random seed: 0x2e108e +Random seed: 0x1928b3c Validation started Strictness level: 5 ----------------------------------------------------------------- diff --git a/harness/reports/M6/20261018_pluginval_vst3.log b/harness/reports/M6/20261018_pluginval_vst3.log index 619f549..926ea51 100644 --- a/harness/reports/M6/20261018_pluginval_vst3.log +++ b/harness/reports/M6/20261018_pluginval_vst3.log @@ -1,5 +1,5 @@ Started validating: /Users/kimmo/Library/Audio/Plug-Ins/VST3/Amp2203.vst3 -Random seed: 0x1ec231b +Random seed: 0x36c839c Validation started Strictness level: 5 -----------------------------------------------------------------