Transient split with VolumeShaper

Can we use Cableguys VolumeShaper and its transient detection together with REAPERs routing capabilities to split a signal into transient and sustain sections? Yes we can! This is a another transient shaper on steroids!

Why split a signal by amplitude?

Splitting a signal into its transient and sustained components seems to be a powerful approach that gains more popularity. I covered another approach to split a signal by amplitude already in a previous post, which is similar to what we are doing today.

Instead of splitting a signal strictly by amplitude into an “upper” and “lower” part, we are splitting a signal into a short first section (the transient) and a more quiet section (the sustained part):

Time domain of a drum sample, showing a transient section in the beginning and the sustained section afterward.

Transient detection and split

We are building our approach on Cableguys VolumeShaper, which ships a transient detection algorithm we can use to cleanly make above separation in any signal we want. Again, this allows us to throw any FX on either the transient or the sustained sections of a signal-

Catching the transient

We set up two of REAPER 7s FX containers. One container for processing the transient and a second for the sustained part. A 2-band joiner JSFX plugin mixes both stereo channels again:

REAPER FX chain containing two FX containers, one for each, the transient and the sustained section of a sound, and a 2-band joiner to merge both container outputs again.

Transient Split FX Chain

To catch the transient we are using an instance of ShaperBox with the VolumeShaper:

An instance of VolumeShaper with an envelope selecting the first quarter of a 1/32th time frame.

Transient selection with VolumeShaper

A mouseover above the first white point, roughly behind the 1/128 mark, shows exactly how long the time window for our transient selection is. In the status bar at the bottom we can read a length of 19.5 ms, before the fade-out starts.

Also notice that we selected to trigger on “Audio”, with the settings cogwheel next to it.

By clicking, we access the transient detection configuration:

VolumeShapers audio trigger configuration window with all options for detecting transients.

Transient detection configuration

Most importantly we can set the algorithm to be geared towards drums, general or complex sounds. We can set a threshold and even a trigger shift with some pre-roll buffering. A high- an low-pass can be used to ignore a certain section of the frequency range.

By tweaking these settings we can configure exactly how we want to catch the transient. The configuration depends on the signal and where you want to make the cut.

Additionally, the shape of the fade envelop decides how you go from the transient signal to the sustained signal. You really have the option for any shape here!

Smooth transition to sustain

The second container, supposed to process the sustained section, should be run in parallel to the first. Just right-click it in the FX list and select the corresponding option:

Set the sustain FX container to be parallel to the transient container.

Set the sustain FX container to be parallel to the transient container

We route the sustain container to receive its input from channels 1/2 and send its output to 3/4:

Route the container to use 1/2 as input and 3/4 as output.

Container routing

This way, we can cleanly mix both again together with the JSFX 2-band joiner at the end of the main chain.

Within the sustained container, we insert as a first FX instance an exact copy of the VolumeShaper we just configured above!

VolumeShaper for sustain selection by using the 'flip horizontally' option.

VolumeShaper for sustain selection

By starting from an exact copy, we know the transient detection is exactly the same. Additionally we can sue the “Flip horizontal” option in the right-click context menu of the volume envelope. This way we get a clean cross fade between the transient and the sustained signal.

Does it null?

Yes! ShaperBox sometimes needs a playback-restart if it thinks it changed its behavior with respect to latency compensation. But if everything is set right, this approach is a very clean cut that does null with a phase-inverted non-treated copy.

Pro’s and con’s and crazy ideas

  • pro: Easy to set up, as long if you own VolumeShaper.
  • pro: Any cross fade possible
  • pro: Reuse ShaperBoxs transient detection with all its capabilities
  • con: You need to keep both VolumeShaper envelopes and transient configuration in sync, if you are after a clean separation
  • con: Many tracks with multiple transient-split FX chains like this are probably resource heavy. The ReaGate approach is likely more light-weight, but inherently different.
  • con: Not necessarily obvious which time-scale to choose (1/64 vs. 1/32 vs. 1/16, …) and always signal dependent

A couple of crazy ideas:

    • Imagine a Signal where the transient section of different frequency sections happen at different times! I.e. shifting the cross-fade left/right for different bands.
  • Different fade-shapes to leave out parts of the signal or emphasize certain sections by processing them in both FX chains
  • Triggering on the transient, but totally wild envelope shapes to do things I cannot really anticipate right now

Sound examples

Here is the same dry drum loop, from the previous post:

The transient FX container gets a preamp emulation and some wave shaping again. We set the crossfade at around 1/64th:
The sustained section gets an instance of reverb:
And both mixed together:

How is this useful?

Can we use Cableguys VolumeShaper and its transient detection together with REAPERs routing capabilities to split a signal into transient and sustain sections? We build another transient shaper, allowing us to put any FX on each part of the signal!
Want to comment? Send a mail to