Early development version of clipper plugin output stage


When working on new clipper plugin I suddenly found that oversampling can’t avoid intersample clips in all cases. Oversampling can reduce possibility of them but not completely avoid. See cooly picture (top samples are exactly 0 dB but the real signal is far above):

The idea is first to calculate real peak value using oversampled peak meter and next apply gain reduction not for single sample but for some window around it.

I’ve implemented both oversampled peak meter and window function-based gain reduction stage in this softclipper test plugin:

[Serp 2 Clipper Win 32 64 VST version]

This is signal above after this soft clipper:

As you can see now it doesn’t exceed 0 dB.

Why I call this clipper “soft”? Because it sounds very soft! But technically gain reduction knee is hard.

Clipper plugin parameters:

  1. “Gain” – signal gain before clipping
  2. “Clip” – clipping threshold
  3. “Oversamp” – turn on or off signal oversampling (signal upsampling for peak detection is always off)
  4. “GR.shape” – gain reduction shape
  5. “St.mode” – stereo modes:
  • “Stereo” – linked stereo mode (Gain Reduction applied to both channels in equal proportion);
  • “2Mono” – unlinked stereo mode (both channels processed independent);
  • “Mono” – make mono from stereo source and process it;
  • M/S, M, S – experimental modes.


  1. Gain reduction shapes are sample-based not time based. So they sound different in different sample rates.
  2. Upsampling/downsampling stages have 32-bit precision.
  3. Even if signal oversampling is off upsampling delay line is used so the sound is not “bit-transparent” if no gain reduction applied (2 lowest bits are affected I suppose).
  4. Real clipping threshold is -0.05 dB below given. Real input gain is -0.1 dB below given.
  5. If signal oversampling is on it can 0.1 dB overshoot threshold given.
  6. In M/S, M, S modes clipper doesn’t work as “brickwall” so L and R channels can overshoot threshold given.
  7. Anyway it’s “early development” version.

My plans for near future:

  1. To write Molot usage manual.
  2. To make minor Molot release.
  3. To make open-source new oversampler release and share information how SoX resampler can be used in plugins.
  4. To continue new plugin development. It should be Limiter/Clipper for master buss.

PS. No news on “Molot” Mac version update.


6 responses to “Early development version of clipper plugin output stage

  1. Jay Key 2011/10/17 at 05:02

    Hi !

    So if I understood right, this one is kind of a “preview” of the forthcoming “Limiter/Clipper for master buss”, right ?

    I would suggest, 64-bit float internal precision (not the code, just the algo for people that don’t know the difference) for the upsampling and algo ? Don’t know if it sounds better, but some developers insist on that as a “feature” so I imagine it should be better.

    That said, why is the “GR shape” not time based (curious about that) ?

    That said, I would suggest different saturation curves to chose from (at least one subtle, and one “heavy”).

    And as for the final GUI, I’d suggest something in the lines of Molot, but with maybe a VU showing GR with a black needle, and saturation amount with a red needle (PSP MixSaturator does that it seems). With some dark grey background and a white VU, to be really clear and quick/easy to look at.

    Hope that makes sense, it’s late here and I’m not sure of all I wrote.

    Keep up the great work man !

  2. Jay Key 2011/11/11 at 02:24

    Hi ! Thanks for coding that. Can’t wait to see/hear the final clipper plugin. Keep up the great work man.

  3. bob 2011/11/20 at 01:25

    this is a nice reading, thanks Vlad.
    Not standart approach..

  4. Pingback: RMS limiter module enhanced « vladg/sound

  5. Pingback: True peak limiting module enhanced « vladg/sound

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: