Building A Linux Music Studio Part 2 - page 3

Fixing Volume Levels

January 3, 2008

By
Carla Schroder

The normalize command (which is called normalize-audio on Debian and its offspring) adjusts the volume levels of WAVE, MPEG, and OGG files. Your own live recordings tend to vary more in volume levels than commercial CDs, but no matter where your tunes come from you can easily adjust a batch of them to similar levels. Its simplest invocation looks like this:

$ normalize *.wav

This converts all the WAVE files in a folder to the same absolute volume level. This gives you a consistent volume level for everything; for example, you're building a music collection on a hard drive, so you're adding to it over time, or you like stuffing batches of CDs into your player and letting it run for hours. Using normalize this way ensures that everything will always be at the same volume level, so you won't get any rude surprises. You may even convert one song at a time.

But you might not always want to do this. Suppose you accidentally recorded an entire session at too low a level- you want to amplify it, and you want to preserve the relative sound levels of the songs. So all the songs won't be the same, but some will be quieter. You'll want the -b, or batch mode for this:

The -m or mix mode is different from either of these. It does not use an absolute value, but adjusts the volume level to an average of all the songs in the set:

$ normalize -m *.wav

So there will be variations from one set to the next.

You may also use this on mp3 and ogg files; look for the normalize-mp3 and normalize-ogg scripts. These convert to WAVE, normalize the files, and then convert them back. If your distribution doesn't have these, installing normalize from sources is easy. Or you can use the SoX command to convert the files to WAVE and back again. A source of confusion is normalize can operate directly on mp3 files without performing a WAVE conversion, but this does not re-encode the files; it just changes a tag in the file, and many mp3 players don't support these tags. It's better to actually re-encode the files.