From 1301a8a128dc9e3f3cc197759a69db50b4445142 Mon Sep 17 00:00:00 2001 From: Shawn Date: Fri, 12 Jun 2026 13:36:39 -0400 Subject: [PATCH] docs: update test plan with Phase 2/7 results, README test count -> 574, close Gitea issues #1 #2 --- README.md | 2 +- docs/test-plan-focusrite.md | 60 +++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 054d453..7915abc 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,7 @@ Toggle 4CM on/off from the Settings page in the web UI. source .venv/bin/activate python -m pytest tests/ -v -# All 306+ tests should pass +# All 574 tests should pass ``` Early development — initial scaffold. \ No newline at end of file diff --git a/docs/test-plan-focusrite.md b/docs/test-plan-focusrite.md index 5031fbc..f6926fb 100644 --- a/docs/test-plan-focusrite.md +++ b/docs/test-plan-focusrite.md @@ -180,6 +180,66 @@ These effects were tagged as CPU-heavy — test on your rig and report xruns: | **Pitch Shifter** | Medium — overlap-add granular | Keep shift < 3 semitones | | **Looper** | Medium — large buffer (~6MB) | Not yet implemented — stub only | +## Test Results (Automated) + +The following results come from automated test runs performed on x86_64 dev machine (not RPi 4B target). See the linked wiki docs for full methodology and raw data. + +### Phase 2 — Full FX Palette +| Metric | Value | +|--------|-------| +| **DSP blocks tested** | 49/49 pass | +| **FX types in enum** | 50 (49 DSP + TUNER UI-only) | +| **Sanity checks** | All produce finite output in [-1, 1] range with silence and sine-tone inputs | +| **Schema mismatches found & fixed** | 8 | +| **Tests passing** | 227 | +| **Commit** | `9a8d42e` | +| **Key fix** | EQ params renamed `low_gain/mid_gain/high_gain` → `bass/mid/treble` with added freq/Q; added missing schemas for `delay`, `tap_tempo`, `predelay`, `shape`, `stages`, `nam_amp`, `ir_cab` | +| **Doc** | [[obsidian/wiki/pi-multifx-pedal/phase2-full-fx-palette.md]] | + +### Phase 7 — Stability Test (1-Hour) +| Metric | Value | +|--------|-------| +| **Duration** | 1 hour simulated (675,000 blocks at 48 kHz / 256 samples) | +| **Wall clock** | 1 min 47 s on x86_64 | +| **Real-time factor** | 33.6x | +| **FX types tested** | 46 (non-hardware-dependent) | +| **Memory start** | 108.7 MB | +| **Memory peak** | 110.1 MB (+1.4 MB, no leak) | +| **CPU avg** | 0.3% (x86_64) | +| **NaN / INF outputs** | 0 | +| **Clipped outputs** | 8,804 (1.3%) — expected from nonlinear FX (distortion, overdrive, fuzz, boost); no master limiter is correct for guitar pedals | +| **FX errors** | 0 | +| **Blocks processed** | 674,958 / 675,000 (99.99%) | +| **Throughput range** | 6,300 – 10,000 blocks/s (consistent) | +| **Commit** | `8e84b02` | +| **Doc** | [[obsidian/wiki/pi-multifx-pedal/phase7-stability-test.md]] | + +### Phase 4 — 4CM Wiring +| Metric | Value | +|--------|-------| +| **Configs deployed** | `config-mono.yaml`, `config-4cm.yaml` to `~/.pedal/` | +| **Routing mode** | `stereo_4cm` — 2ch I/O, pre/post split at configurable breakpoint | +| **Tests passing** | 74/74 (all 4CM routing tests) | +| **Doc** | [[obsidian/wiki/pi-multifx-pedal/phase4-4cm-wiring-test.md]] | + +### Phase 6 — MIDI Controller +| Metric | Value | +|--------|-------| +| **Program Change** | PC 0-3 switches presets — verified | +| **Expression pedal** | CC#11 → volume — verified | +| **MIDI Learn** | CC → parameter mapping — verified | +| **Bug fixed** | CC callback was passing MIDI channel instead of CC number — fixed in `f8d7db7` | +| **Tests passing** | All MIDI tests pass | +| **Doc** | [[obsidian/wiki/pi-multifx-pedal/phase6-midi-controller.md]] | + +### RPi 4B Projections (Phase 7 data scaled) +| Metric | x86_64 Dev | RPi 4B (est.) | +|--------|-----------|---------------| +| Real-time factor | 33.6x | 1–2x | +| Memory | ~110 MB | ~110 MB | +| CPU | 0.3% | ~25–35% | +| XRUN risk | N/A (no JACK) | Low (confirmed by NAM timing tests) | + ## Reporting Issues If an effect doesn't sound right or causes xruns: