Skip to content

VOIDWORM 1.1.0

Latest

Choose a tag to compare

@lew0nn lew0nn released this 30 Sep 11:13

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::isfinite to 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/Build folder (juceaide and the CMake helpers). The 1.0.1 source zip was missing it, so it could not configure without a separate JUCE checkout.