feat: single-stage baked FIR convolver graph, 5.0ms ultra-low latency, virtualbass-first topology, and eq.py CLI #6
Reference in New Issue
Block a user
Delete Branch "baked_curves"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary of Changes
This PR introduces a major architectural overhaul to the MacBook Pro 15,1 audio DSP pipeline, replacing heavy multi-stage cascaded filter processing with a single-stage baked FIR convolver architecture.
Key Achievements
⚡ Ultra-Low Latency (5.0 ms Lead Trimming):
🔊
virtualbass-First Sub-Bass Harmonic Excitation:virtualbassfirst, before all high-pass filters and equalizers.virtualbasscaptures 100% of raw 20 Hz – 60 Hz sub-bass energy to synthesize rich 80 Hz – 150 Hz upper harmonics, giving small laptop speakers deep, thunderous bass punch.✨ Crisp Treble & 100% Bit-Exact Driver Ratio:
🛡️ True-Peak Inter-Sample Peak (ISP) Guarding:
bake-graph.pyenforces a safe-0.5 dBFSceiling, eliminating inter-sample DAC clipping distortion at high volume.🎛️ Terminal Tuning CLI (
./eq.py):flat,bass-boost,vocal,warm,treble-boost), dB gain adjustments (./eq.py bass +2,./eq.py gain -20), and status reporting.user_eq.jsonwith single-line per band column alignment matchinguser_eq.example.json.🔒 PipeWire & WirePlumber Volume Restoration:
wpctlvolume and mute state snapshot & restoration across full WirePlumber reloads (./apply.sh --bake).mv -ftemporary file replacement prevents open file descriptor truncation in PipeWire.Files Modified
bake-graph.py: Dynamic FIR convolver baker & graph simplifier.apply.sh: Installed FIR file management, PipeWire reload triggers, &wpctlvolume restoration.eq.py: Terminal EQ preset & tuning CLI utility.graph.json: Topology update placingvirtualbassbeforeequalizer..gitignore: Added*.pycand__pycache__/.Verification
./sweep-analyzer.py../eq.pypreset switching and full WirePlumber reload reliability.