SPECTRALFORGE / BENCH NOTES — BN01
SPECTRALFORGE

Chimera Amp Matrix Development Log Vol.1

Turning three modes into three actual routing architectures
Document Purpose
This is not a launch article for a finished plug-in. It records the decisions, wrong assumptions, build failures and revisions encountered while creating the first Chimera Amp Matrix 1.0 test build. The scope runs from the initial routing concept and clean rebuild to the first three-OS green build, the Matrix-EQ redesign, and the Windows UI regression introduced immediately afterward.
CodeBN01
ProjectSpectralForge — Chimera Amp Matrix
Focusrouting architecture · JUCE / CMake · Classic / Dual / Matrix · LR4 crossover · Matrix Band Tone · CI / test artifact
Source of recordGitHub repository · PR #2 v1.0/rebuild · GitHub Actions
Status1.0 test-build development. Run #111 all-platform green; latest Run #112 Windows UI-verification regression remains open.
Date2026-09-23

1. Starting point — make routing itself the instrument, not merely add another amp

Chimera did not begin as a plan to increase the number of amp models. The central problem was to put three genuinely different architectures in one product: a conventional full-range rig, two complete full-range rigs in parallel, and a frequency-split system in which different amp/cab chains can own different portions of the spectrum.

INPUT → GLOBAL PRE FX → [ CLASSIC | DUAL | MATRIX ] → AMP / CAB LANE(S) → ALIGN / MERGE → POST FX → OUTPUT

The first 1.0 question was therefore not “does the amp sound finished?” but do the three modes actually implement different signal topologies? Pre/Post FX, voicing, presets and IR workflows must sit on top of that contract rather than compensate for an unclear router.

2. Classic, Dual and Matrix cannot be three presets with different names

ModeSignalLanesTone controlCrossover
Classicfull-range1full-range amp EQ + presence / resonancenone
Dualfull-range × 2 parallel2full-range amp EQ per rignone
MatrixLOW / MID / HIGH split3Drive · Level · band-relative ToneLR4, 24 dB/oct, two crossover points

In the current engine, Classic runs one full-range lane. Dual copies the same input into two full-range lanes and sums them in parallel. Only Matrix invokes the crossover. The default reference points are around 150 Hz and 1.2 kHz, and moving them changes the input range owned by each LOW, MID and HIGH lane.

Design Rule 01
A mode is a signal-path contract, not a label on the screen. If Classic and Dual appear to require crossovers, or Matrix behaves like another full-range rig, the interface is misrepresenting the architecture.

3. First UI failure — different engines still look identical when the screen does

The first test interface exposed functionality quickly around reusable lane panels. The problem was that Classic, Dual and Matrix looked too similar. The screen did not clearly communicate what each lane was receiving, when a crossover mattered, or why a single-rig mode should resemble a three-column matrix.

The revised interface shows one FULL-RANGE RIG in Classic, FULL-RANGE RIG A/B in Dual, and LOW / MID / HIGH BAND in Matrix. Crossover controls exist visually only in Matrix, while each Matrix lane displays the actual input range derived from the current crossover values.

Failure Case 01 — over-reusing the lane template
Reusing a DSP lane did not mean the UI should expose every mode through the same panel structure. The revision prioritizes the topology the player must understand, not the internal class hierarchy the developer happens to reuse.

4. Why Matrix inherited a four-band EQ — and why it had to lose it

The first Matrix lanes inherited almost the entire Classic/Dual amp strip: Drive, Level, Bass, Low Mid, High Mid, Treble, Presence and Resonance. That was implementation-friendly because the existing amp tone stage could simply be called for every lane.

But Matrix has already restricted each lane to a portion of the spectrum. A full-range four-band EQ on a LOW-only lane creates controls for energy that may not even enter the lane, and it blurs the conceptual boundary between crossover placement and tone shaping. More controls looked more flexible while making the responsibility of each lane less legible.

Failure Case 02 — assuming more EQ automatically means more useful control
For Matrix, the useful question is not how to redraw the entire spectrum again. It is how to bias the balance inside the band that already belongs to the lane. The full-range amp EQ is therefore hidden and bypassed in Matrix.

4.1 Band Tone is not another crossover

The replacement control is Band Tone. It is not another band-pass stage or a third crossover point. It is a band-relative tilt placed after the split and before amp distortion. Negative values bias the band darker; positive values bias it brighter.

Its pivot follows the geometric center of the range defined by the live crossover values instead of using a single fixed frequency. Moving the crossover therefore changes both the lane's actual input range and the reference point of its Tone control. Classic/Dual full-range EQ parameters are retained in state and merely bypassed in Matrix so mode switching does not destroy prior settings.

Design Rule 02
In Matrix, the crossover defines band ownership. Band Tone adjusts the pre-amp balance inside that band. The controls are complementary, not substitutes.

5. Beyond “it compiles on my machine” — the build pipeline is part of the product

The initial bootstrap PR was abandoned, and PR #2 restarted cleanly from main as v1.0/rebuild. The target was not just source code, but a repeatable pipeline capable of producing a testable artifact on another machine.

Layer1.0 test foundation
FrameworkJUCE 8.0.8 · C++20 · CMake 3.22+
FormatsVST3 + Standalone · AU on macOS
CIWindows / Ubuntu / macOS matrix build
DSP verificationChimeraTests through CTest
Windows UI verificationChimeraUITests + rendered UI snapshots
Distribution testWindows ZIP + SHA256 manifest

Windows also exposed the normal warning behavior of an unsigned development binary in Chrome/SmartScreen. Rather than present the test package as a signed production release, the package README explicitly identifies it as unsigned and ships a SHA256 manifest for integrity checking.

6. First complete checkpoint — Run #111

Run #111 passed build and CTest on Windows, Ubuntu and macOS. The Windows job also produced the packaged Chimera-Amp-Matrix-1.0.0-test-win64.zip and its SHA256 manifest. This was the first point at which the project had more than source code: it had a reproducible, tested and downloadable 1.0 test artifact.

Checkpoint — Run #111
Classic / Dual / Matrix routing foundation · amp/cab processing · cross-platform CI · automated DSP tests · Windows packaged artifact all passed together. This is a reference baseline, not a feature-complete release.

7. Break it again after success — the current Run #112 Windows regression

After #111, the Matrix full-range EQ was replaced by Band Tone and the mode-specific visibility/label model was rewritten. The latest code builds and passes CTest on Ubuntu and macOS. Windows also compiles successfully and produces the UI snapshots, but ChimeraUITests fails with “Wrong controls for routing mode”. Packaging is therefore intentionally skipped.

At the time of this note the regression is still open. The DSP smoke suite ChimeraTests passes, which narrows the problem away from a basic engine compile failure and toward the contract between the new mode-specific UI and the Windows UI test expectations. The next step is to resolve the exact visibility/state mismatch and restore a green build rather than bypass the test.

Failure Case 03 — a green build is not the finish line
#111 passed everywhere, but the incorrect Matrix control model was still worth changing. That change introduced a new regression in #112. The value of Bench Notes is not a perfect sequence of successes; it is traceability between a design decision and the verification it invalidated.

8. Current design position and what moves to Vol.2

Current Design Position — 2026-09-23
Classic = one full-range rig. Dual = two full-range rigs in parallel. Matrix = LOW / MID / HIGH three-band split using LR4 24 dB/oct crossover, independent amp/cab per band, and Drive + Level + crossover-relative Band Tone. Full-range amp EQ is bypassed in Matrix while its Classic/Dual state is preserved.

Vol.2 should stabilize this contract before expanding the feature list:

Source Links