Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions docs/DECISIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
6 changes: 6 additions & 0 deletions docs/PROGRESS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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):

Expand Down
2 changes: 1 addition & 1 deletion docs/VERIFICATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 3 additions & 2 deletions docs/WDF_DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
2 changes: 1 addition & 1 deletion engine/src/Preamp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ using devices::FourTriodes;
using devices::FourTriodesLoad;

constexpr stage::RootNetwork<kNumNodes, kNumElements, kNumRootPorts> kNet{kElements, kRoot};
const solver::MultiportNewton<kNumRootPorts> kRootSolver = FourTriodes::solverK<kNumRootPorts>(32);
const solver::MultiportNewton<kNumRootPorts> kRootSolver = FourTriodes::solverK<kNumRootPorts>(64); // D-064 (was 32, D-052)
const solver::MultiportNewton<kNumRootPorts> kDcSolver = FourTriodes::solverK<kNumRootPorts>(500); // reset() only

} // namespace
Expand Down
4 changes: 2 additions & 2 deletions engine/src/devices/TwoPentodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
86 changes: 43 additions & 43 deletions harness/reports/M3/20261018_b1234_DEFAULT.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion harness/reports/M3/20261018_b1234_knob_jump.md
Original file line number Diff line number Diff line change
@@ -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.

Expand Down
Loading
Loading