Updates · September 2026

v1.7.2: a transparent output stage, and the sample that froze the output

The limiter on Laura's output is gone. It compressed everything above -10 dBFS four to one and clipped the first samples of any loud attack, and sub-heavy patches paid for it at levels that didn't feel loud. The plugins now hand the host exactly what the patch makes. This release also fixes the reverb bug behind last week's frozen output, a read past the end of a delay buffer, and a crash when a host sends a bigger buffer than it announced.

Thanks to Beatsbasteln for both reports, and for the hunch about the out-of-bounds read, which was exactly right.

Highlights

  • The output limiter is gone. Measured, it was a fixed 4:1 compressor above -10 dBFS with a 2 ms attack, an instant second stage, 4.75 dB of make-up gain and a hard clip. A 30 Hz sine at -6 dBFS came out with 4% distortion, and a pluck peaking at -3 dBFS was clipped at its onset while the compressor caught up. The plugins now output the raw signal. The standalone rounds only the last two and a half decibels before the sound card, with a curve that has no memory, so it can't pump and can't ride a bass note.
  • Preset levels don't move. The make-up gain the limiter added is kept as a fixed trim, and the bank measures the same loudness before and after, to a tenth of a decibel on most presets. The compressor was riding peaks rather than loudness, so on the 37 presets that were leaning on it what changes is the shape of their transients and sub notes, not how loud they are. Twenty-nine presets did move and were re-levelled. Most of those are pads and textures using the plate or shimmer reverb at half modulation or more, where the plate fix below shifted the level by up to 2.4 dB either way. The rest are a kick that had been sitting on the clip and a bass that had been 4 dB hot since an earlier pass.
  • The frozen output from last week has a cause now. v1.7.1 added a guard so one bad sample mutes a few milliseconds instead of pinning the output at a constant. This release fixes what produced the bad sample: the hall reverb read one sample past the end of its delay memory every few minutes of play and fed whatever sat there back into itself. The same pattern was in the plate reverb and the reverb pre-delay. All three are fixed, and the guard stays.
  • A host that sends a bigger audio buffer than it announced no longer crashes Laura or Laura FX. The buffer is split and processed in pieces.
  • If anything inside the synth ever runs away toward infinity, the output mutes and the effects reset within one buffer instead of blasting at full scale until the numbers stop being numbers.
  • The plate reverb is cleaner at high Mod. Its modulated delay ran out of memory on the positive half of the swing and spliced in stale samples.
  • Your patches, packs and license carry over. A saved project sounds the same, except that sub-heavy patches keep their peaks now and may read a little higher on a meter. Laura FX moves to 1.7.2 alongside Laura and gets the buffer fix.

Details

Beatsbasteln wrote that he was hitting the limiter on sounds that didn't feel loud, sub-heavy ones and patches with an offset in the waveform, and that it distorted them before he could high-pass them in the DAW. He also suggested I try other buffer sizes to shake out an out-of-bounds read, since the frozen output looked like a NaN coming from somewhere. Both turned out to be right, and both could be measured.

The limiter was the stock one from the framework, and I had never looked at what it actually does. Its threshold only moves the second stage. The first stage is a 4:1 compressor above -10 dBFS that you can't turn off, and after both stages it adds 4.75 dB and hard-clips. So every patch quieter than -10 dBFS was made 4.75 dB louder, everything above it was compressed, and a bass note's peaks rode the detector inside each cycle. I rendered the whole bank through it. 37 presets sat in the compression zone and two of them, Plastic Sub and Psy Kick Knock, were on the clip. The v1.0.9 notes called this stage a transparent safety net. It wasn't, and I was wrong to say so.

Removing it outright would have moved every preset's level, and more than half the bank has its master gain too high to make the difference back up. So the 4.75 dB stays as a plain fixed gain and the compressor and the clip go. I rendered the bank through both versions and measured: the loudness is the same to a tenth of a decibel on most presets, because a peak compressor with a two millisecond attack changes the shape of a kick or a sub note, not its average level. What did move was the plate. Its modulated delay had been running out of memory on the positive half of the swing and splicing in near-dry samples, so patches with the plate or shimmer reverb at half modulation or more, most of the pads and textures in the bank, shifted by up to 2.4 dB when that was fixed. Those twenty-nine presets were re-levelled back to the target. Nothing else in the bank moved by more than a third of a decibel. In a DAW you now get the patch as it is. The standalone keeps a soft ceiling because it feeds a sound card that clips at 0 dBFS regardless, and a rounded edge sounds better than the driver's. It's a curve, not a compressor, so a 30 Hz sine at -6 dBFS passes through it bit for bit.

The reverb bug is the one I'm glad to have found. I built the plugin with a memory checker and ran the fuzz harness at a few buffer sizes. Within five minutes it stopped on the hall reverb reading one sample past the end of a delay line. The read position was computed in floating point, and when it landed a hair below zero and got wrapped, it rounded to exactly the buffer length. In a normal build that read is whatever the allocator left after the buffer, and it goes straight into the feedback loop. It happened once every few minutes of hall reverb, on any buffer size, and it had been there since the hall shipped. You cannot find that by listening. The same mistake was in the plate reverb and the reverb pre-delay. All three compute the index in whole samples now.

The buffer-size test also showed that a host handing over more samples than it promised crashed on the first block. Hosts are supposed to respect the limit and most do. The fix is thirty lines, so now it can't happen at all.

If you own Laura this is a free update, as every update is.

← All updates