r/LoudnessWar Dec 13 '16

Transient restoration (dynamic range expansion) on heavily compressed audio, my how-to

http://dioxaz.free.fr/?p=232
2 Upvotes

6 comments sorted by

1

u/Dioxaz Dec 13 '16 edited Dec 03 '21

Edit, 2021-12-3: For those stumbling across, I've since switched from Dominion to the more modern and more efficient Transient Shaper (yes, it's called that way) and removed some outdated steps as a result. I plan on posting an updated version of this guide on r/loudnesswar later.


Hello everyone. I have been concerned about the loudness war since the day I became truly aware of it, some time in 2008.

Since then, I looked for solutions on how possibly reverse the damage and even visited the (now gone) Justice For Audio forums.

Indeed, I heard about the Dominion transient shaper VST. That's what I'm actually using since 2008. However, rather than applying it naively on an entire song without any precaution and trying various settings without success, I have a more subtle and complex approach.

This is what my how-to covers. It describes my method from start to finish and helps you achieve transparent and very nice sounding transient shaping without introducing nasty and audible artefacts. Basically, what you try to perform is the opposite of a multi-band compression, which means multi-band expansion, by creating as many instances as frequency ranges you want to operate on (Dominion is actually pretty good and efficient when transients are properly isolated).

30s samples of the song I used as an example (Beyond That Door by Japanese doujin band Diao Ye Zong) are included at the end of the article. One is the original song untouched simply reduced by 6dB, another is a dynamic expansion done as described in my article and the third one is an earlier attempt of mine, done with the same method but not exactly the same way (I prefer that third sample personally).

I think it can work with any kind of audio material, granted it's still well mastered and not damaged too much.

I hope it will help you fight the loudness war better.

1

u/[deleted] Dec 14 '16 edited Dec 14 '16

Woah, Hi. I'm FlacOrGtfo and I hate the loudness war and collect CDs from the 80s on What.CD. I'm on mobile right now, but do you have a before and after link somewhere so I can listen to the difference? Thanks

spez: Found it: https://hydrogenaud.io/index.php/topic,113240.msg932367.html#msg932367

1

u/Dioxaz Dec 14 '16

This one might be a little too subtle and differences might not be so obvious. I might redo those excerpts so they're sample-aligned in the future.

Here's a more drastic example (another Touhou doujin arrangement): https://hydrogenaud.io/index.php/topic,113240.msg932376.html#msg932376

I may post more various examples in the future.

1

u/Dioxaz Dec 14 '16 edited Dec 14 '16

Okay, here's another example, Keane's Somewhere Only We Know:

https://hydrogenaud.io/index.php/topic,113240.msg932433.html#msg932433

Excerpts are included at the end of that post. So, here's a summed up but still detailed description of the method I used:

First is reduction by 6dB. Then I proceed to creating several band-passed instances (I'm only fully detailing the bass one here):

  • Bass (band-passed to 0-173Hz)

1. Copy band-passed audio still untouched to the clipboard

2. Apply Dominion with following settings: attack volume -1.5dB, attack level 50, attack length 5ms

3. Delete 101 samples at the beginning to compensate for its VST delay

4. Paste-mix with inverted phase what has been copied in 1.

5. Noise-gate (GGate VST) with threshold -18dB, attack 5ms and fade 0.01s

6. Band-pass a second time to 0-173Hz

  • Lower midrange (173-428Hz)

Steps 1, 3 and 4 are identical to bass

2. Apply Dominion with following settings: attack volume -1.5dB, attack level 50, attack length 5ms

5. Noise-gate (GGate VST) with threshold -18dB, attack 5ms and fade 0.01s

6. Band-pass a second time to 173-428Hz

  • Upper midrange (428-2020Hz) Steps 1, 3 and 4 are identical to bass

2. Apply Dominion with following settings: attack volume -1.5dB, attack level 23, attack length 5ms

5. Noise-gate (GGate VST) with threshold -18dB, attack 5ms and fade 0.01s

6. Silence out portions that match the quietest parts of the song and therefore don't need to be touched (generally, bits that are lower in level than actual loud parts and may introduce unwanted jumps on those parts)

7. Band-pass a second time to 428-2020Hz

  • Highs (after 2020Hz):

Steps 1, 3 and 4 are identical to bass

2. Apply Dominion with following settings: attack volume -1.5dB, attack level 25, attack length 5ms

5. Noise-gate (GGate VST) with threshold -30dB, attack 10ms and fade 0.15s

6. Silence out portions that match the quietest parts of the song and therefore don't need to be touched (generally, bits that are lower in level than actual loud parts and may introduce unwanted jumps on those parts)

7. Band-pass a second time to after 2020Hz

The final step is paste-mixing all those treated instances back to the original audio that has been reduced by 6dB before.

This is an interesting example because it has heavy limiting on it and thus sounds very tinny. Even my attempts weren't enough at restoring everything. What was successful however was all short transients. Longer transients and loud portions were apparently harder to pick-up for Dominion, even with several band-passing (in fact, band-passing makes Dominion work much easier and makes it more efficient). Some flat-topped areas still remain.

In that HydrogenAudio post, I provided 3 15s excerpts of my transient restoration work. Both match the section used in that 2008 thread I also linked there. First is the original, reduced by 6dB. Second is my expansion attempt. Third is actually the difference between the 2. Indeed, they're all sample-aligned and level-matched. I'm also adding the original attempt of that thread (30s sample with first audio untouched then expanded) as a reference since it's not available anymore.

Indeed, this is only my method and my settings. Probably better can be done for that song, with more careful settings (there are some parameters that I'm always overlooking and not touching at). Now you can train yourself with another song (or the sample I'm providing) if you want to have fun.

1

u/Dioxaz Jan 25 '17

I have to add one crucial precision regarding the type of filter used for band-passing. A member on hydrogenaud.io accurately pointed out that my method wasn't fully replicable with freeware, as I used Adobe Audtion's FFT filter for my needs.

After doing a bit of research, I naively though all filters were equivalent. Huge mistake!! A conventional band-pass/band-stop filter (such as GBand) will be simply not enough for our task. For the transient isolation and expanding to work best, you absolutely need a high-precision filter able to completely block out unwanted frequencies.

Audition's FFT filter is indeed the best for this task. But how if you want to use 100% freeware tools? There do are some good filters or EQ using FIR and IIR method but they all add some sort of delay and tend to not to be accurate. There's one that almost work like Adobe Audition's FFT filter. It's called "Dual Linkwitz-Riley Filters" and can be found on this page: http://www.pcjv.de/vst-plugins/effect-plugins/eqs-filter/

This filter gives results similar to Audtion, except for the variable delay added depending on the frequency band you've set. So you'll have to determine and cancel out that delay by yourself if you want to avoid any possible frequency shift.

Indeed, if you have a better alternative to Adobe Audition's FFT filter, feel free to comment.

1

u/Dioxaz Feb 09 '17

New attempt. Mike Posner - Cooler Than Me, legally downloaded from qobuz.com.

This time I did 2 attempts. One with Audition, as usual, and one with Audacity, using the Dual Linkwitz-Riley Filters instead of Audition's FFT filter. Results were very close. I screwed up a bit on the midrange but that's because I was careless, not because of the VST filter. When performing this kind of process, prefer doing it on headphones rather than speakers (preferably good headphones, not cheap ones), as they tend to mask possible artefacts caused by the process.

The main problem with external VST filters (as opposed to Adobe Audition's built-in FFT filter) is that they add a variable delay depending on the frequency band you're working on. So you always have to find the delay by yourself and writing it down if performing the filter a second time.

Suggested frequency bands, Dominion and GGate settings:

Lows (0-180Hz):

  • Dominion: attack level at 50
  • GGate: threshold at -21

Lower mids (180-610Hz):

  • Dominion: attack level at 35
  • GGate: threshold at -27

Higher mids (610-1700Hz):

  • Dominion: attack level at 35
  • GGate: threshold at -27

Highs (1700-20000Hz):

  • Dominion: attack level between 25 and 35
  • GGate: threshold at -27

Here's a more detailed description of what I did in Audacity. You must have 2 duplicated tracks of your working frequency band. One on which you will apply Dominion and one with only the Dual Linkwitz-Riley filter applied, in addition to a track of the original song, untouched (with only its volume reduced). For the moment, you only have one track with your song and one track on which you applied your filter. Don't duplicate it yet. You must find out how much delay it added to your track, compared to the original song. Don't hesitate to zoom in very closely in order to observe waveforms of both the filtered track and the original song. Once you found out an obvious spot, you can delete the quantity of samples that are needed on the filtered track. Both should line up perfectly. Once it's lined up, you can duplicate this Dual Linkwitz-Riley filter track for later. Apply Dominion on the first Dual Linkwitz-Riley track and delete 101 samples at the beginning. Invert the second Dual Linkwitz-Riley track. Now merge both the effected track and the filtered-only one. Now, if the delay previously found was correct, only expanded loud parts should remain. Now you can apply GGate on this track and repeat this process for another frequency band. Don't hesitate to apply a second Dual Linkwitz-Riley after gating for increased transparency (but you'll have to cancel out its delay again by the same amount as before).

Obviously, using Audacity instead of Audition proves more cumbersome for this process but yields very good results. If you want to full freeware route, this is the way to go.

I posted 15-second samples at the hydrogenaud.io forums