Highlights
- Resonance, EQ, the Distortion filter and the 3-band compressor stay stable at 22.05, 24 and 32 kHz. Their top frequency was fixed in hertz, so below 40 kHz it could land above half the sample rate, where these filters run away to infinity within a few milliseconds. The limit now follows the sample rate. At 44.1 kHz and above nothing changes.
- The output guard added in v1.7.1 no longer gets stuck. If a fault lasted more than about 13 ms, the guard could lock up and keep Laura silent until you changed preset. It now tries again every 50 ms, and a held note survives a single bad buffer.
- Laura FX has the same guard. A bad sample from any device, or from the track feeding it, is muted for one buffer instead of reaching your mix, and a device running away is caught before it gets loud.
- Changing presets while the sequencer was playing could, rarely, crash the plugin. The preset loader and the audio thread were both editing the sequencer's list of sounding notes. Only the audio thread touches it now.
- Spectral Morph modulation no longer buzzes on sequenced patches. Every MIDI event inside a buffer added the modulation again, so a patch with morph modulation and a running sequencer or arpeggiator stepped at buffer rate.
- After Galaxy or Constellation, keyboard notes use the patch's envelope. The voices the balls had used kept a ball's pluck envelope, so held notes died away until you touched an envelope knob. Lumen Cascade, a Constellation preset, comes out about 2 dB louder because its keyboard notes now sustain the way the patch says.
- Fractal paths, the Mycelium field, Galaxy impacts and the chaos source run at the same speed at every buffer size. They were timed in buffers, so a path drew an orbit about a third the size at 2048 samples that it drew at 128, and a bounce at a different buffer size from the one you played at sounded different. At 512 samples they behave exactly as before.
- Asym warp aliases less at high depth. Its anti-aliasing was worked out backwards, too cautious near zero and far too optimistic at full depth. High depths are a little darker and a lot cleaner. Low depths are a touch brighter.
- Smaller ones: an impulse response file with a corrupt sample no longer silences the convolution reverb, a host that reports a tempo of zero no longer freezes a synced sequencer, and two lookups that could read one value past the end of a table are clamped.
- Your patches, packs and license carry over. Laura FX moves to 1.7.3 alongside Laura.
Details
After v1.7.2 I went looking for more bugs of the same kind. Reads past the end of a buffer, filters that can run away, anything that assumes a buffer size or a sample rate. I ran the engine under a memory checker at every sample rate from 22.05 to 192 kHz, with parameters pushed to both ends of their ranges, and read every delay line and filter in the code.
The memory checker came back clean this time, which I was glad to see. What turned up instead was arithmetic. Four effects had their top frequency fixed at 16 to 20 kHz. That's fine at 44.1 kHz. At 22.05 kHz it's above half the sample rate, and past that point the filter formulas turn unstable and the output grows on every sample until it's infinite. The resonance network was behind every failure the stress test found at 22.05 kHz, and the EQ, the distortion filter and the compressor's crossover had the same problem waiting for someone to turn them up. The one filter that already handled this correctly was the main voice filter, which had been fixed for exactly this reason a while ago. The fix never made it to the other four.
The guard I added in v1.7.1 had a hole of its own. After catching a fault it waits 50 ms before trying the full recovery again, but it only counted that wait down on clean buffers. If the problem kept coming back, the count never moved and Laura stayed silent. I fed it faults of every length from one buffer up to a full second. Before the fix, anything longer than about 13 ms stuck for good. Now it recovers from all of them.
Most of these have a test that fails on the old code and passes on the new one, and I measured the whole preset bank again afterwards. Two presets moved, Lumen Cascade and Cosmic Riser, both toward the level the rest of the bank sits at. If you own Laura this is a free update, as every update is.