Repository navigation
Cleaner and about half the CPU.
The anti-aliasing, the MIX fix and the high-sample-rate cap below change the sound: a cleaner top end when bright material is driven hard. Every other change in this release leaves the output unchanged, verified bit-identical or within -72 dB of the previous build.
Half the CPU
Measured on one core at 44.1 kHz, stereo, 128-sample blocks, all four reactors active, both builds on the same machine in the same run:
| Oversampling | 1.0.1 | 1.1.0 | 1.0.1 HQ | 1.1.0 HQ |
|---|---|---|---|---|
| 1X | 8.8% | 3.6% | 8.7% | 3.6% |
| 2X (default) | 13.9% | 6.8% | 14.4% | 7.7% |
| 4X | 24.3% | 12.5% | 25.5% | 14.8% |
| 8X | 44.9% | 23.6% | 47.3% | 28.0% |
The CPU table in the README has been re-measured with this build.
- Compressor gain is computed with one fast log and one fast exp per sample instead of library calls.
- Finite-value checks use a bit test. MSVC compiles
std::isfiniteto a function call, and the engine makes a lot of them. - The clip curves read from precomputed tables.
- FURNACE skips its fold when the fold has no effect, and reactor pre-EQ stages that pass the signal through are skipped.
Less aliasing
Driving the reactors hard used to fold harmonics back below the note as off-key tones. FURNACE's two clips and ARC's clip and fold are now anti-aliased (first-order antiderivative), with the extra half-sample delay compensated so the reactor paths stay aligned.
Off-key energy below a hot 7.9 kHz tone (lower is cleaner):
| Oversampling | 1.0.1 | 1.1.0 |
|---|---|---|
| 1X | -10.3 dB | -22.6 dB |
| 2X (default) | -15.3 dB | -30.5 dB |
| 4X | -25.2 dB | -44.9 dB |
| 8X | -38.2 dB | -56.1 dB |
1.1.0 at 1X is now cleaner than 1.0.1 at 2X.
High sample rates
Oversampling now stops at about 400 kHz internally. Above that, extra oversampling cost CPU without an audible benefit:
- At 88.2 and 96 kHz, 8X runs as 4X.
- At 176.4 and 192 kHz, 4X and 8X run as 2X.
96 kHz at 8X went from 88% of a core to 26%.
MIX
The dry path now goes through the same oversampling filters as the wet path, so the two stay in phase when blended. At 50% MIX, the top-end dip caused by the mismatch fell from 6.9 dB to 2.4 dB.
Compatibility
Sessions and presets load unchanged. The defaults are still 2X with HQ off.
Fixes
- The source zip now includes JUCE's
extras/Buildfolder (juceaide and the CMake helpers). The 1.0.1 source zip was missing it, so it could not configure without a separate JUCE checkout.