BOL Characterization
BOL (Bellweather Observation Lab) is our custom characterization tool that analyzes plugins from the outside—no access to internal state. Transfer curves, THD analysis, and envelope timing verification, all driven by our bol-probe runners.
What is BOL?
BOL treats plugins as black boxes. We send audio in, measure what comes out, and compare against expected behavior. This catches bugs that unit tests miss because it tests the complete signal chain, not individual components.
Think of it like measuring a hardware compressor: you don't open the chassis, you just send test signals and verify the output matches spec.
BOL Gate vs BOL Lab
BOL Gate
Pass/fail release check. Runs during rc and rc_gui lanes. Verifies the plugin's behavior hasn't drifted from baseline. Binary outcome: PASS or FAIL.
BOL Lab
Extended characterization. Runs during the lab lane. Generates detailed transfer curves, THD profiles, and envelope timing data for analysis and comparison.
Characterization Modes
Transfer Curve Analysis
Sweep input level from −60dB to +12dB and plot output level. Verifies gain reduction curve matches design spec. Run via bol-probe --characterization transfer-curve.
Pass criteria: 99%+ match to committed baseline. Detects unexpected nonlinearities or compression curve drift.
Envelope Response
Send tone burst (sudden loud signal) and measure attack/release timing. Compares actual envelope to theoretical values. Run via bol-probe --characterization envelope.
Pass criteria: Attack within 0.5ms of spec, release within 1ms. Detects ballistics bugs.
Total Harmonic Distortion (THD)
Send pure sine wave, measure harmonic content. Verifies saturation stages introduce intended harmonics, not unwanted artifacts. Run via bol-probe --characterization thd.
Pass criteria: THD <0.01% at typical settings. Harmonic profile matches analog reference.
Baseline Policy
Baselines are committed artifacts in the repo under plugins/production/<Plugin>/tests/baselines/bol/.
We only update baselines with explicit write commands—never implicitly. This prevents accidental “normalization” of bugs. Lab runs compare by default when a baseline exists, with configurable sensitivity via --threshold.
If the comparison fails, it means the plugin's behavior changed. Could be a bug, could be an intentional improvement—either way, we investigate before updating the baseline.
Example Results
BwsPressure v1.0.0 — PASS
- Transfer curve baseline match:
- 99.8%
- Attack timing accuracy:
- within 0.3ms
- Release timing accuracy:
- within 0.8ms
- THD at typical settings:
- 0.008%