Native OTT-like compression

Sorry if this has been done before. I made some great parallel compression chains. These are meant to be put into sends and you use a multiband send on each bus or group track. Even values as low as -56 dB really beef up tracks without increasing any volume on the master at all. Just copy and paste and have fun! S, M and LCOMP stands for short, medium and long attack and release times. :wink:

Send 1 (SCOMP) Lows

<FilterDeviceContainerClipboard doc_version="0">
  <DeviceContainerSlot type="TrackFilterDeviceChain">
    <SelectedPresetName>Init</SelectedPresetName>
    <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
    <SelectedPresetIsModified>true</SelectedPresetIsModified>
    <Devices>
      <SendTrackMixerDevice type="SendTrackMixerDevice">
        <CustomDeviceName>Mixer</CustomDeviceName>
        <IsMaximized>true</IsMaximized>
        <IsSelected>false</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>false</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <Panning>
          <Value>0.5</Value>
          <Visualization>Device only</Visualization>
        </Panning>
        <Volume>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </Volume>
        <Surround>
          <Value>0.0</Value>
          <Visualization>Device only</Visualization>
        </Surround>
        <PostPanning>
          <Value>0.5</Value>
          <Visualization>Device only</Visualization>
        </PostPanning>
        <PostVolume>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </PostVolume>
        <SmoothParameterChanges>true</SmoothParameterChanges>
      </SendTrackMixerDevice>
      <GainerDevice type="GainerDevice">
        <CustomDeviceName>In</CustomDeviceName>
        <IsMaximized>true</IsMaximized>
        <IsSelected>false</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>true</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <Volume>
          <Value>4</Value>
          <Visualization>Mixer and Device</Visualization>
        </Volume>
        <Panning>
          <Value>0.5</Value>
          <Visualization>Device only</Visualization>
        </Panning>
        <LPhaseInvert>false</LPhaseInvert>
        <RPhaseInvert>false</RPhaseInvert>
        <SmoothParameterChanges>true</SmoothParameterChanges>
      </GainerDevice>
      <BusCompressorDevice type="BusCompressorDevice">
        <IsMaximized>true</IsMaximized>
        <IsSelected>true</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>true</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <Threshold>
          <Value>-60</Value>
          <Visualization>Device only</Visualization>
        </Threshold>
        <Ratio>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </Ratio>
        <Attack>
          <Value>0.0700035021</Value>
          <Visualization>Device only</Visualization>
        </Attack>
        <Release>
          <Value>0.2225416</Value>
          <Visualization>Device only</Visualization>
        </Release>
        <MakeUp>
          <Value>18</Value>
          <Visualization>Mixer and Device</Visualization>
        </MakeUp>
        <Knee>
          <Value>24</Value>
          <Visualization>Device only</Visualization>
        </Knee>
      </BusCompressorDevice>
      <MaximizerDevice type="MaximizerDevice">
        <IsMaximized>true</IsMaximized>
        <IsSelected>false</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>true</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <InputGain>
          <Value>18</Value>
          <Visualization>Device only</Visualization>
        </InputGain>
        <Threshold>
          <Value>-24</Value>
          <Visualization>Device only</Visualization>
        </Threshold>
        <TransientRelease>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </TransientRelease>
        <LongTermRelease>
          <Value>80</Value>
          <Visualization>Device only</Visualization>
        </LongTermRelease>
        <Ceiling>
          <Value>0.0</Value>
          <Visualization>Mixer and Device</Visualization>
        </Ceiling>
      </MaximizerDevice>
    </Devices>
  </DeviceContainerSlot>
</FilterDeviceContainerClipboard>

Send 2 (MCOMP) Mids

<FilterDeviceContainerClipboard doc_version="0">
  <DeviceContainerSlot type="TrackFilterDeviceChain">
    <SelectedPresetName>Init</SelectedPresetName>
    <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
    <SelectedPresetIsModified>true</SelectedPresetIsModified>
    <Devices>
      <SendTrackMixerDevice type="SendTrackMixerDevice">
        <CustomDeviceName>Mixer</CustomDeviceName>
        <IsMaximized>true</IsMaximized>
        <IsSelected>false</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>false</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <Panning>
          <Value>0.5</Value>
          <Visualization>Device only</Visualization>
        </Panning>
        <Volume>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </Volume>
        <Surround>
          <Value>0.0</Value>
          <Visualization>Device only</Visualization>
        </Surround>
        <PostPanning>
          <Value>0.5</Value>
          <Visualization>Device only</Visualization>
        </PostPanning>
        <PostVolume>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </PostVolume>
        <SmoothParameterChanges>true</SmoothParameterChanges>
      </SendTrackMixerDevice>
      <GainerDevice type="GainerDevice">
        <CustomDeviceName>In</CustomDeviceName>
        <IsMaximized>true</IsMaximized>
        <IsSelected>true</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>true</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <Volume>
          <Value>4</Value>
          <Visualization>Mixer and Device</Visualization>
        </Volume>
        <Panning>
          <Value>0.5</Value>
          <Visualization>Device only</Visualization>
        </Panning>
        <LPhaseInvert>false</LPhaseInvert>
        <RPhaseInvert>false</RPhaseInvert>
        <SmoothParameterChanges>true</SmoothParameterChanges>
      </GainerDevice>
      <BusCompressorDevice type="BusCompressorDevice">
        <IsMaximized>true</IsMaximized>
        <IsSelected>false</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>true</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <Threshold>
          <Value>-60</Value>
          <Visualization>Device only</Visualization>
        </Threshold>
        <Ratio>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </Ratio>
        <Attack>
          <Value>0.0995037109</Value>
          <Visualization>Device only</Visualization>
        </Attack>
        <Release>
          <Value>0.315515101</Value>
          <Visualization>Device only</Visualization>
        </Release>
        <MakeUp>
          <Value>18</Value>
          <Visualization>Mixer and Device</Visualization>
        </MakeUp>
        <Knee>
          <Value>18</Value>
          <Visualization>Device only</Visualization>
        </Knee>
      </BusCompressorDevice>
      <MaximizerDevice type="MaximizerDevice">
        <IsMaximized>true</IsMaximized>
        <IsSelected>false</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>true</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <InputGain>
          <Value>18</Value>
          <Visualization>Device only</Visualization>
        </InputGain>
        <Threshold>
          <Value>-24</Value>
          <Visualization>Device only</Visualization>
        </Threshold>
        <TransientRelease>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </TransientRelease>
        <LongTermRelease>
          <Value>80</Value>
          <Visualization>Device only</Visualization>
        </LongTermRelease>
        <Ceiling>
          <Value>0.0</Value>
          <Visualization>Mixer and Device</Visualization>
        </Ceiling>
      </MaximizerDevice>
    </Devices>
  </DeviceContainerSlot>
</FilterDeviceContainerClipboard>

Send 3 (LCOMP) Highs

<FilterDeviceContainerClipboard doc_version="0">
  <DeviceContainerSlot type="TrackFilterDeviceChain">
    <SelectedPresetName>Init</SelectedPresetName>
    <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
    <SelectedPresetIsModified>true</SelectedPresetIsModified>
    <Devices>
      <SendTrackMixerDevice type="SendTrackMixerDevice">
        <CustomDeviceName>Mixer</CustomDeviceName>
        <IsMaximized>true</IsMaximized>
        <IsSelected>false</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>false</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <Panning>
          <Value>0.5</Value>
          <Visualization>Device only</Visualization>
        </Panning>
        <Volume>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </Volume>
        <Surround>
          <Value>0.0</Value>
          <Visualization>Device only</Visualization>
        </Surround>
        <PostPanning>
          <Value>0.5</Value>
          <Visualization>Device only</Visualization>
        </PostPanning>
        <PostVolume>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </PostVolume>
        <SmoothParameterChanges>true</SmoothParameterChanges>
      </SendTrackMixerDevice>
      <GainerDevice type="GainerDevice">
        <CustomDeviceName>In</CustomDeviceName>
        <IsMaximized>true</IsMaximized>
        <IsSelected>false</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>true</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <Volume>
          <Value>4</Value>
          <Visualization>Mixer and Device</Visualization>
        </Volume>
        <Panning>
          <Value>0.5</Value>
          <Visualization>Device only</Visualization>
        </Panning>
        <LPhaseInvert>false</LPhaseInvert>
        <RPhaseInvert>false</RPhaseInvert>
        <SmoothParameterChanges>true</SmoothParameterChanges>
      </GainerDevice>
      <BusCompressorDevice type="BusCompressorDevice">
        <IsMaximized>true</IsMaximized>
        <IsSelected>true</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>true</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <Threshold>
          <Value>-60</Value>
          <Visualization>Device only</Visualization>
        </Threshold>
        <Ratio>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </Ratio>
        <Attack>
          <Value>0.223394245</Value>
          <Visualization>Device only</Visualization>
        </Attack>
        <Release>
          <Value>0.386748999</Value>
          <Visualization>Device only</Visualization>
        </Release>
        <MakeUp>
          <Value>18</Value>
          <Visualization>Mixer and Device</Visualization>
        </MakeUp>
        <Knee>
          <Value>12</Value>
          <Visualization>Device only</Visualization>
        </Knee>
      </BusCompressorDevice>
      <MaximizerDevice type="MaximizerDevice">
        <IsMaximized>true</IsMaximized>
        <IsSelected>false</IsSelected>
        <SelectedPresetName>Init</SelectedPresetName>
        <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
        <SelectedPresetIsModified>true</SelectedPresetIsModified>
        <IsActive>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </IsActive>
        <InputGain>
          <Value>18</Value>
          <Visualization>Device only</Visualization>
        </InputGain>
        <Threshold>
          <Value>-24</Value>
          <Visualization>Device only</Visualization>
        </Threshold>
        <TransientRelease>
          <Value>1.0</Value>
          <Visualization>Device only</Visualization>
        </TransientRelease>
        <LongTermRelease>
          <Value>80</Value>
          <Visualization>Device only</Visualization>
        </LongTermRelease>
        <Ceiling>
          <Value>0.0</Value>
          <Visualization>Mixer and Device</Visualization>
        </Ceiling>
      </MaximizerDevice>
    </Devices>
  </DeviceContainerSlot>
</FilterDeviceContainerClipboard>
2 Likes

But take care of parallel routing with a band splitter device. The band splitter device will alter the phase (maybe could be compensated instead?), so I am not sure whether you will get phase cancellation or not, if you use mutliple band splits in parallel. Maybe not, if you use the same band split filter on each device.

2 Likes

Yeah it is a known issue. I have evaluated what works and what doesnā€™t, for example, a band splitter routing to Exciter or Cabinet Sim will create really terrible (and visible on the spectrum) phase issues. So far I have tested this configuration on multiple sources and sounds good. But as you say, problems arise when using multiple band splitters, or worse, different filters. Namely, using this on a kick alone and then on the drum bus where the kick is will totally ruin the kick. This is why I only use this on my major busses or group tracks. Btw, the OTT band split is 120 (or 80?) Hz and 2.5 kHz.

1 Like

Thanks for sharing these details! But so far, isnā€™t it more easy then to use the free OTT vst simply?

1 Like

You are welcome! Maybe, but Renoise has a lot of linux users, and as far as I know xfer OTT is not available for them, and making it native can offer some advantages like setting the gain for each band in each group, and further enhancements in each send like distortion, etcā€¦ As well, there are some disadvantages; this is not upward compression and will never be, and the level of compression depends directly on the level being sent to each send track (this is why there is a maximizer set to -24 dB) but that can be good because low mixing levels will make room for more compression.

Cheers! :slight_smile:

3 Likes

Thatā€™s true, and it isnā€™t bad to know a native only way either. I think it might be actually possible to do upwards compression using the signal follower+gain?

Iā€™ve just experimented with signal follower -> Logic -> Gainer.

I managed to make a nice preset, you can controll compression with an LFO Curve!! It can also upwards compress, just set up the curve properly!!!

Its not perfect though. Attack/Decay only work for boost/cut movements, not engage/disengange what would sound proper. Also levels are wonky, and sometimes there can push through ugly peaksā€¦

So use it with care, it is highly experimental. Better use a maximizer in the end to manage the peaksā€¦

SigFnDynamics.xrdp (22.3 KB)

2 Likes

Thatā€™s a nice try! I wonder though if it is really upwards compression? EDIT: Oh neat, I have drawn this now:
image

This is just like Melda Dynamics free draw, very nice. Works here better with this curve in the signal follower:
image
So I have more space for the quieter area.

Here another try:
ffx upwards test.xrdp (14.7 KB)

1 Like

Yeah you got it rightā€¦a straight diagonal line from lower left to upper right corner is neutral, any parts below it will result in gain reduction for that range, parts above it will result in boosting.

I think Iā€™ll try to give the beast some more love, better ā€œcurvesā€ for attack/release, and I already have some kind of freaky idea brewing in my head how I could make proper attack/release work. Also I will have to look into balancing the signal follower settingsā€¦

I donā€™t really know how far this could be pushed, though. Also its nature to sometimes generate ugly peaks when boosting will have to be revisited, I guess it is a dealbreaker for serious usage of the thing.

1 Like

This is great! I wish I knew how to program formulas tho :sweat_smile:

UPDATE

This is the best one Iā€™ve made so far, using Modulated by input SFWs, Dynamic EQ and Dynamic Saturation. No phase issues, and an actual change of dynamics and character as you increase the send levels instead of having a squashed signal, increases apparent volume instantly without gain, outputs a smiley pink noise-like EQ response. Beautiful! Better than OTT and maybe even waves C4
upward spec.xrnt (18.3 KB)

2 Likes

@Bluethereal - this is a sweet tool! I went ahead and put it in a Doofer, and am uploading that here, in case anybody wants to expand/contract the whole thing. Let me know if Iā€™ve got it hooked up right?

OTT Compressor.xrdp (21.5 KB)

11 Likes

All good! Thank you :slight_smile:

just tried it. This shit sounds better than ott man thanx

2 Likes

Iā€™m glad! Thanks a lot

1 Like

Turbo hype to see people pushing the meta of their DSP effects into making things that sound better than the respective emulation of plugins. Iā€™m super excited to pick this apart and study it. <3

3 Likes

this OTT dynamic eq doofer made my morning! Combining it with my impulsetracker-style Tremor formula, now using a gate device threshold for volume changes faster than one tick, itā€™s bringing a lot of life to the sound :]

2 Likes

Thatā€™s great news! Iā€™m happy that particular Doofer worked out for 'ya :slight_smile:

1 Like

This would be godly if we could just figure out how to do a wet/dry knob like the ā€œdepthā€ knob on the plugin. the depth knob is whatā€™s still keeping me using the plugin tbh

1 Like

Ok this is really messy but I gave it a few macros and tried my best to do a pseudo-wet/dry for the ā€œdepthā€ knob
OTT 5.xrdp (44.8 KB)

2 Likes