SC loudness with VSTPlugin (and wine, in Linux)

With the SC 3.14 livestream event coming up on Saturday, it got me thinking about squeezing a bit more loudness out of my live setup. (Typically for live-coding videos, I record to disk first, and do EQ/compression/limiting in Reaper – but that workflow won’t apply in a live-streaming situation.)

Limiter.ar for loudness maximizing isn’t necessarily the most transparent. It may be fine to bump something up just a few dB, but I tried it with some audio with a lot of bouncy attacks, and threshold around -15 or -16 was pretty awful. (I wouldn’t do that in the livestream, but it was a good test to see where it breaks down).

So I went poking around for free VST limiters, and settled on LoudMax (https://loudmax.blogspot.com/). Since it’s Mac/Win only, and I’m on Linux, I thought it might be a nice chance to write up the workflow.

Wine / yabridge part (Mac/Win users can skip)

To run Windows plug-ins in Linux, you need wine and yabridge (GitHub - robbert-vdh/yabridge: A modern and transparent way to use Windows VST2, VST3 and CLAP plugins on Linux). For yabridge, wine staging 9.21 would be ideal, but maybe not available in all systems’ package managers. That can be a bit tricky.

Anyway once you’ve got those installed, then:

  1. Copy LoudMax.vst3 into ~/.wine/drive_c/Program Files/Common Files/VST3 – Windows plug-ins need to be installed into the Windows location first.

  2. Then, at the command line:

    $ cd ...path/to/yabridge  -- wherever you put the yabridge files
    $ ./yabridgectl sync
    

This should create a folder under ~/.vst3/yabridge with a wine loader for the plug-in.

SC / VSTPlugin part

Get VSTPlugin from Releases · Pure Data libraries / vstplugin · GitLab. Install the folder into your Extensions directory.

Then:

  1. Boot the server.

  2. VSTPlugin.search – you should get an entry like “/home/****/.vst3/yabridge/LoudMax.vst3 – ok”.

    • Using yabridge – it is OK if you see “‘/home/****/.wine/drive_c/Program Files/Common Files/VST3/LoudMax.vst3’ is black-listed” – this is the original Windows plug-in, without the yabridge wrapper.
  3. Then:

    (
    SynthDef(\vstfx, { |out = 0|
    	ReplaceOut.ar(out, VSTPlugin.ar(In.ar(out, 2), numOut: 2));
    }).add;
    )
    
    (
    a = Synth(\vstfx, target: s.defaultGroup, addAction: \addAfter);
    c = VSTPluginController(a);
    c.open("LoudMax.vst3");
    )
    
    c.editor;
    

    (Note – -15 dB is too extreme! It pumped a bit, but a lot less pumping than Limiter.ar(sig, -15.dbamp) * 15.dbamp.

  4. Set the controls as you like.

  5. To restore, first: c.getn(0, c.numParameters, { |data| data.postln }); and copy the array from the post window.

  6. Then replace the c.open line with:

    c.open("LoudMax.vst3", action: { |controller, ok|
    	if(ok) {
    		controller.setn(0, [ /* ... paste your array ... */]);
    	} {
    		"LoudMax didn't load, oops".warn;
    	};
    });
    

Edit: For EQ, also just found a free, open-source Pro-Q clone, which seems quite feature-rich: Releases · ZL-Audio/ZLEqualizer · GitHub – yeah, “you can do EQ natively in SC” but here, someone else has built the GUI and included mid/side EQ, dynamic EQ with sidechain, etc. etc. etc. so it can save a lot of time. Native Linux support, too, and low CPU use.

HTH,
hjh

4 Likes