This project has moved and is read-only. For the latest updates, please go here.

Performing Dynamic Range Compression on WAV files?

Aug 24, 2011 at 4:27 PM


Hello, I am working on a project that needs to take in a collection of WAV files (Mu-Law format) each with differing and unknown volume levels and somehow correct them to all have roughly the same volume level (which could be a target maximum volume or range of acceptable volume levels) when played. I have tried playing with the Volume setting and re-writing the louder audio data, however while it works for changing the volume I have no way of knowing the initial loudness of the audio and amplifying it accordingly.


After some searching it seems that audio Dynamic Range Compression is what I need to implement to do what I want, however I am unsure of how to go about doing this with NAudio.


What I am trying to find out is whether NAudio has any built-in functionality for performing Dynamic Range Compression or if anyone knows of any .NET Libraries out there with that capability.


If anyone knows where I can find a Dynamic Range Compression algorithm that would also be of great help to me as well; there is a large amount of information on the process out there but unfortunately actual detailed descriptions with equations seem to be very elusive.


Any help in this regard would be much appreciated!

Sep 6, 2011 at 11:07 AM

I have implemented a compressor in .NET in the Skype Voice Changer project. There is also the SimpleCompressorStream in NAudio (although that hasn't had much attention since it was first written)