Old 10-20-2019, 05:17 PM   #1
blumpy
Human being with feelings
 
blumpy's Avatar
 
Join Date: Sep 2016
Posts: 508
Default Stem Compressor

I'm trying to figure out if there's a way to modify a js compressor so that I can have a grouped internal gain reduction sum as an alternative to a sidechain for stem compression.

Currently if I want to compress stems as if they were a mix buss, I have to sum all the audio track each track and send that to each stem buss as a sidechain, then each channel to its respective stem buss. All of this routing slows reaper to a crawl even on a 16 core system.

A remedy to this would an alternative to sidechain compression.... group gain reduction.

Let's say I set a compressor to group A. All group a compressors in the entire session will follow each other settings. And the gain reduction is summed between the tracks of the group eliminating the sidechain.

It's clear plugins can communicate with each other, Slate's VMR group function works like this. Is this possible within JS and can anyone point me in the direction how to modify one of the existing JS compressors to accomplish this task?

Thanks!
blumpy is offline   Reply With Quote
Old 10-20-2019, 05:27 PM   #2
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 5,220
Default

The only advantage to this, just so we're clear, is if your compressors are all set differently. If they aren't, there's no advantage over simply compressing the sum.

The routing should be simple if you disable feedback routing protection. Simply folder all the tracks or sum them to a single track bus, and route back to 3/4. Shouldn't need to route, say, 10 tracks back into each of those 10 tracks.

But to answer your question, yes I'm sure this is possible but I don't know of a script personally that can.
Fergler is offline   Reply With Quote
Old 10-20-2019, 05:33 PM   #3
blumpy
Human being with feelings
 
blumpy's Avatar
 
Join Date: Sep 2016
Posts: 508
Default They're stems

Yes, but I deliver stems. The whole point is that I can't use a buss compressor.
blumpy is offline   Reply With Quote
Old 10-21-2019, 01:49 AM   #4
geraintluff
Human being with feelings
 
geraintluff's Avatar
 
Join Date: Nov 2009
Location: mostly inside my own head
Posts: 346
Default

I think @Fergler meant something like this. For N tracks, you only need N compressors and 2*N bits of routing. (Not N*N)



(apologies for the rough diagram)

If the compressors are identical, summing these individual stems should be identical to putting that compressor on (what I've labelled) the "master pre-bus". In this layout, each "track" would actually need to be two tracks (source and bus tracks - could be child and parent for simplicity) with the "master pre-bus" routed to aux channels of the bus/parent track.

This arrangement does make it tricky if you want to change any of the compressor parameters. You'd probably want to tune the compressor on the master bus, then make N copies with side-chain input once you know what the parameters are. I can see how that's inconvenient.

For your original question:

Sending audio between JSFX is indeed possible, including compensating for latency (as long as they're not in series), and it could also be used to synchronise the parameters and so on. I've done this for my "Stereo Alignment" effect. After a bit of fiddly work, the result would basically be the same diagram, just that the "master pre-bus" would be hidden inside the global state of the effect.

Geraint
Attached Images
File Type: jpg 2019_10_21 09_43 Office Lens.jpg (27.4 KB, 445 views)
__________________
JSFX set | Bandcamp/SoundCloud/Spotify

Last edited by geraintluff; 10-21-2019 at 03:23 AM.
geraintluff is offline   Reply With Quote
Old 10-21-2019, 09:53 AM   #5
blumpy
Human being with feelings
 
blumpy's Avatar
 
Join Date: Sep 2016
Posts: 508
Default

That's how I've been accomplishing the routing to get a "glue" compression sound with stems. I ended up using ReaControlMidi to control all the parameters, but it's all the sidechaining that's the issue.

Quote:
Originally Posted by geraintluff View Post
For your original question:

Sending audio between JSFX is indeed possible, including compensating for latency (as long as they're not in series), and it could also be used to synchronise the parameters and so on. I've done this for my "Stereo Alignment" effect. After a bit of fiddly work, the result would basically be the same diagram, just that the "master pre-bus" would be hidden inside the global state of the effect.

Geraint
Excellent! I have your ReaPack but I've not used you alignment plugin. I'll dig into the code. Admittedly I'm a beginner so it will take me sometime to try to figure out what's going on and how you did it. Ultimately my goal is to modify Express Bus Compressor or major Tom or HBC-2 with grouped parameters and internal gain reduction buss/sidechaining without having to do all the routing.
blumpy is offline   Reply With Quote
Old 10-21-2019, 01:19 PM   #6
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,107
Default

Quote:
Originally Posted by geraintluff View Post
I'm wondering does this give the identical result (when the compressed stems are summed backed together) as compressing the sum, as compression is not a linear process?
nofish is offline   Reply With Quote
Old 10-21-2019, 01:29 PM   #7
blumpy
Human being with feelings
 
blumpy's Avatar
 
Join Date: Sep 2016
Posts: 508
Default

Hey mods, I accidentally hit report instead of post to the above comment. Please disregard. My fat finger hit the wrong button on my phone.

I’ve A/B’d stem sidechain compression with mix buss compression and it’s similar enough where I get the sound I’m looking for. It should be the same but whether it’s a perfect “sample for sample exactly the same process”, i can’t say.
blumpy is offline   Reply With Quote
Old 10-21-2019, 01:38 PM   #8
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,107
Default

It's actually rather rare that I deliver stems but for when I do good to know it seems similar enough.
Thanks.

edit:
Thanks also geraintluff for the technical explaination.

Last edited by nofish; 10-21-2019 at 06:36 PM.
nofish is offline   Reply With Quote
Old 10-21-2019, 04:13 PM   #9
geraintluff
Human being with feelings
 
geraintluff's Avatar
 
Join Date: Nov 2009
Location: mostly inside my own head
Posts: 346
Default

Quote:
Originally Posted by nofish View Post
I'm wondering does this give the identical result (when the compressed stems are summed backed together) as compressing the sum, as compression is not a linear process?
It should.

Compression is thoroughly not linear with regards to whatever your "control" input is (main or aux depending on config). However, the point of a side-chain is that the aux input is used to calculate a gain, and that gain is applied to the other input.

In that case, if the aux input is identical, then the calculated gain envelope should be identical - so duplicating the compressors like this should apply an identical gain envelope to each track.

Phrased alternatively: it's not linear with regards to the aux input, but it is linear with regards to the other input, which is what we need.
__________________
JSFX set | Bandcamp/SoundCloud/Spotify
geraintluff is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 10:14 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.