VST Request - Crest Factor Decreaser

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

Good morning everyone,

I am looking for a plugin developer to create a 32-bit VST2 plugin that has one specific purpose.

The goal of this plugin would be reduce the crest factor (that is, DR values closer to "0" on the TT-Dynamic Range Meter) but without modifying the RMS value.

For example - Let's suppose we have a song that has the following:

Crest Factor: DR11
RMS: -12.50db

When a limiter is applied, the DR value wil lower but it will be accompanied by a higher RMS value...For example:

Crest Factor: DR8
RMS: -9.50db

What I am after is a plugin that can modify the audio to achieve something like this:

Crest Factor: DR8
RMS: -12.50db

The idea is to keep the RMS value the same as, or as close to, the original RMS value as possible when the audio is normalized to 0dbfs.

I don't know the best way to accomplish this, nor do I know of a plugin/filter that can do this directly or indirectly. Perhaps this already can be accomplished in an indirect way (and if so, please tell me how).

I am prepared to pay for this project, I do not expect this to be done for free.

Any help with this would be greatly appreciated.
Thanks.

Post

You may want to have a limiter set to -3dB in your case, or a little bit more, and add a small make up gain.
It could be done on the fly (with artefacts) by estimating the power of the signal (with look ahead), and then use a limiter to remove the transients a little bit and then apply a factor of new power / previous power.
Shouldn't be too hard to implement with ATK (at least without trying to limit too much the artefacts).

Post

Hi Miles,

What would be the limitations with this approach? Could the crest factor in the aforementioned example be pushed to DR6 or DR5 without changing the RMS?

Also, let me note that this plug-in would not be run in real-time. Look-ahead for precise power calculations does not need to be limited in any way for my purposes.

Would you be able to make this for me?

Any other ideas out there or is Miles' approach best for this?

Thanks.

Post

Maybe I'm not understanding the request wrong but you can not reduce the Dynamic Range(Crest) without increasing the RMS while normalizing to 0dbfs, the math and physics just don't line up. Crest in a nut-shell is Peak minus RMS. When you change the one, you change the other.

Post

A plugin means that this is something in a DAW, so in real time. If you want an offline process, then it's not a plugin (or a plugin for something different then a DAW ;) ).

And indeed, forgot about the normalization which would change RMS.

Post

Miles1981 wrote:A plugin means that this is something in a DAW, so in real time. If you want an offline process, then it's not a plugin (or a plugin for something different then a DAW ;) ).
This is wrong. Every DAW has offline processing or destructive processes (like reverse, normalize). It can do this with a plugin, too. They are of course not real time.

Post

But what the plugin sees is not the full track, it is strictly the same without the real time constraints. So what I say still holds: you wan't wait to have the full track before starting processing, so not a DAW plugin, but an external app.
You can't do a reverse track with a plugin with the VST API for instance.

Post

I remember a dev saying in offline processing you'll get the whole file/data as 1 big block. So it will set the blocksize inside the plugin to the size of the data block. Then you can do whatever you want to it.
For example ProTools has a "Capture" or "Analyze" button for offline processes, so the plugin can analyze the whole region/track before processing it.

I don't know how different several DAWs are handling this or how limited the different plugin APIs are. But stating the fact that a plugin always is real-time or that it cannot process the whole track is just wrong.

Post

Let me elaborate a bit more.

A song I have has a DR5 crest value and -9.50db RMS.

When I apply phase rotation from the filter in a btoadcast processor called Stereo Tool, the resulting file, when normalized to full scale has a DR10 crest factor and RMS of -11db.

So, I went from a 4.5db difference between DR and RMS to a 1db difference

My goal is to do the opposite. If I am presented with a track that is DR10 and -11db RMS, I want to get it to DR5 and RMS -9.5db

So the goal, however it can be done, is to increase the difference between the two values.

When I get home tonight, I can post waveform screenshots of the song I justed as an example.

Also, perhaps I mis-wrote the portion about real-time. What I meant is that latency is no issue since the songs will be processed all the way through, and then listened to.

Thanks.

Post

Soundplex wrote:I don't know how different several DAWs are handling this or how limited the different plugin APIs are. But stating the fact that a plugin always is real-time or that it cannot process the whole track is just wrong.
So you haven't written a plugin yet.
Perhaps some hosts optimize the rendering by giving you a full clip (not the full track, the DAWs are optimized), but even then, if you have a parameter change there, you won't get the full clip, just up to the clip, and there are no indication if you have the full clip or just part of it. What you have is a chunk of data that you need to process. So no, you can't do what you say you can do (in general).

Post

Miles1981 wrote:if you have a parameter change there, you won't get the full clip
You can't have parameter changes in an offline process... I think we're not talking about same thing.

Post

Crest is there just to give you a very broad understanding of how much of a "leeway" your peaks have above "the body" of a track. So, to decrease it and to leave RMS alone, you can just kill the peaks with any limiter you'd like and don't gain back, or gain back moderately. In super-short, just kill peaks don't normalize.

The whole other question is why.

I feel like you're coming from a very strange place, saying that a Stereo Tool did this and that in terms of numbers. Why? Because (a) they don't describe anything about the quality or purpose of the process, so we don't know if it's good or bad, and (b) doesn't even tell us much about loudness, because RMS is considered a very unreliable metric. You would want to use something like LUFS; TT-DR is considered obsolete even by its developer Ian Shepherd.

So, maybe people could be more of help if we knew what we're aiming for.
https://soundcloud.com/vospi
I love music, worked with a number of music/rhythm/dance games like Pump It Up, In The Groove, Cytus and Deemo, and teach music production.

Post

Soundplex wrote:
Miles1981 wrote:if you have a parameter change there, you won't get the full clip
You can't have parameter changes in an offline process... I think we're not talking about same thing.
Yes you can, it's called automation.

Post

matt42 wrote:
Soundplex wrote:
Miles1981 wrote:if you have a parameter change there, you won't get the full clip
You can't have parameter changes in an offline process... I think we're not talking about same thing.
Yes you can, it's called automation.
That's why I thought there might be some mis-communication. A traditional offline/destructive process like I mentioned doesn't have automation. You just select a region or a clip and apply a process (normalization, reversing, EQ, another plugin, whatever), done. Like within an audio editor. I never experienced a DAW that can automate parameters within this process and I honestly didn't need it.

Of course there is offline processing with automation, for example when you render a track. But that's not what came first to my mind when I read it doesn't need to run in realtime...

Post

Vospi wrote:Crest is there just to give you a very broad understanding of how much of a "leeway" your peaks have above "the body" of a track. So, to decrease it and to leave RMS alone, you can just kill the peaks with any limiter you'd like and don't gain back, or gain back moderately. In super-short, just kill peaks don't normalize.

The whole other question is why.

I feel like you're coming from a very strange place, saying that a Stereo Tool did this and that in terms of numbers. Why? Because (a) they don't describe anything about the quality or purpose of the process, so we don't know if it's good or bad, and (b) doesn't even tell us much about loudness, because RMS is considered a very unreliable metric. You would want to use something like LUFS; TT-DR is considered obsolete even by its developer Ian Shepherd.

So, maybe people could be more of help if we knew what we're aiming for.
My apologies.

Let me try this in a slightly different way:

In the following picture, we have a waveform of a song that has a crest factor of DR5 and an RMS value of -9.50db.

http://imgur.com/AhQviRO

After being "phase rotated", the song has a DR11 value with an RMS of -12.64db and looks like this:

http://imgur.com/kfeemHM

What I believe has happened to the song after being phase rotated (by looking at the waveform and the numbers) is that the song is hitting 0dbfs less often. Certain "difficult" sounds (in this song that is powerful sub-bass) has been softened/tamed to remove the stress from the clipper in the broadcast processor.

The reason I bring that into the conversation is because is that phase rotation seems to do almost exactly the opposite of what I want to do. I am not quite sure exactly sure the processing needed to accomplish my goal but I understand what it is I want.

If we have a crest factor and RMS value that are within 1db of each other, no sound in the song will sound any more powerful than any other sound beyond 1db of difference. If we have a song with a crest factor and RMS difference of 3db or 4db perhaps, then certain sounds that are meant to be louder and more powerful will be, and sounds that should be quieter will be quieter.

In the example song I used above, the loud bass and drums are noticeably louder and more powerful than the vocals--but after the phase rotation filter is applied, the powerful bass and drums are almost identical in volume/power to the vocals.

If I have an overcompressed song to begin with, I want to increase the difference between the quiet and loud sounds by making those loud sounds hit 0dfs as often as possible. This would, in turn, create a larger difference between the RMS and crest factor.

So if I am given the "phase rotated" example above (DR11 and RMS -12.46), I want to de-phase rotate it so that the sounds that are meant to be loud and powerful (or those that, by being louder, would create a crest factor closer to 0) would be increased as much as possible, without changing the overall RMS power.

I sincerely apologize if my explanation is as abysmal as I believe it to be...I do not want to post samples of this song due to copyright issues--but the numbers I listed above clearly correspond to the power/volume differences within the song that would be quickly recognized if heard (I'd be more than happy to send A/B samples via PM if requested).

Thanks.

Post Reply

Return to “DSP and Plugin Development”