docs: update ARCHITECTURE.md diagram to show 4-channel VirtualBass direct feed and baked User EQ convolution flow

This commit is contained in:
mynameisdeleted
2026-09-01 11:12:53 -04:00
parent 78fb42948d
commit 7cafe63395

View File

@@ -18,26 +18,25 @@ This document provides a comprehensive technical blueprint of the **Next-Gen Aud
## 🔬 2. Compressed-Chain Single-Stage FIR Engine
### 2.1 LTI Stage Collapsing
Traditional laptop DSP pipelines cascade 10 to 20 separate IIR biquads and convolver stages, consuming heavy CPU cycles and adding phase distortion. The Next-Gen Engine uses standard-library Python ([`bake-graph.py`](file:///home/steve/w11/mbp15-1-audio-dsp/bake-graph.py)) to perform single-pass LTI convolution:
Traditional laptop DSP pipelines cascade 10 to 20 separate IIR biquads and convolver stages, consuming heavy CPU cycles and adding phase distortion. The Next-Gen Engine uses standard-library Python ([`bake-graph.py`](file:///home/steve/w11/mbp15-1-audio-dsp/bake-graph.py)) to perform single-pass LTI convolution that bakes User EQ, Voicing EQ, and Crossover filters directly into the 4-channel driver convolvers:
$$\text{FIR}_{\text{baked}}(t) = \text{EQ}_{\text{voicing}}(t) * \text{EQ}_{\text{crossover}}(t) * \text{IR}_{\text{driver}}(t)$$
$$\text{FIR}_{\text{baked}}(t) = \text{EQ}_{\text{user}}(t) * \text{EQ}_{\text{voicing}}(t) * \text{EQ}_{\text{crossover}}(t) * \text{IR}_{\text{driver}}(t)$$
```mermaid
graph TD
A["Raw Audio Input (FL / FR)"] --> B["Bankstown VirtualBass (2nd/3rd Order Harmonics)"]
B --> C["User Equalizer (user_eq)"]
C --> D1["Woofer Main FIR (baked-woofers-*.wav)<br/>5.0ms Lead Trimming"]
C --> D2["Woofer Lookahead FIR (baked-lookahead-woofers-*.wav)<br/>0.0ms Lead (5.0ms Advance)"]
C --> E1["Tweeter Main FIR (baked-tweeters-*.wav)<br/>5.0ms Lead Trimming"]
C --> E2["Tweeter Lookahead FIR (baked-lookahead-tweeters-*.wav)<br/>0.0ms Lead (5.0ms Advance)"]
B -->|4-Channel Direct Feed| C1["Woofer Main FIR (baked-woofers-*.wav)<br/>Bakes User EQ + Crossover (5.0ms Lead)"]
B -->|4-Channel Direct Feed| C2["Woofer Lookahead FIR (baked-lookahead-woofers-*.wav)<br/>Bakes User EQ + Crossover (0.0ms Lead)"]
B -->|4-Channel Direct Feed| D1["Tweeter Main FIR (baked-tweeters-*.wav)<br/>Bakes User EQ + Crossover (5.0ms Lead)"]
B -->|4-Channel Direct Feed| D2["Tweeter Lookahead FIR (baked-lookahead-tweeters-*.wav)<br/>Bakes User EQ + Crossover (0.0ms Lead)"]
D1 --> F["Woofer Limiter (wlim:in)"]
C1 --> E["Woofer Limiter (wlim:in)"]
C2 -->|Sidechain Advance| E
D1 --> F["Tweeter Limiter (tlim:in)"]
D2 -->|Sidechain Advance| F
E1 --> G["Tweeter Limiter (tlim:in)"]
E2 -->|Sidechain Advance| G
F --> H1["Woofer Drivers (Left / Right)"]
G --> H2["Tweeter Drivers (Left / Right)"]
E --> G1["Woofer Drivers (Left / Right)"]
F --> G2["Tweeter Drivers (Left / Right)"]
```
### 2.2 Parallel Lookahead Sidechain Limiting