Vertaling is werk in uitvoering!
Normalization of mp3 audio files (June 2009)
- My problem, unequal playback level of mp3 songs
- My objective
- How is normalization calculated
- How is the volume change applied to the mp3 files
- Optimizers investigated
- Reference db values used by optimizers
- Track and album gain, what is it? How does WinAMP and MP3Gain hande this?
- How do the players handle the normalization
- My conclusions and actions
Having a fairly large set of mp3 files I found that the playback level over different songs and also on different players gave different loudness results. The same song would play noticeably louder on one player than on another and on one player all songs did not play equally loud. I am using iTunes (v8.0) to manage my song collection, WinAMP (v5.552) player on the computers, iRiver mp3 player(model IFT 180) and Nokia phone as standalone players and an iPOD (classic 30GB).
ObjectiveWanted to change/modify the mp3 files such that on all players the music is at same level and each player plays different songs at the same level.
There are (at least) 2 common ways of determining the normalization of a file.
|Peak||With peak normalization the max level in the file is determined. The audio is then scaled such that the peak is at the predefined max level. This max level seems to differ between optimizers.The advantage of peak normalization is that it is fast. The optimizer only needs to look for the max level in the song. The disadvantage of peak normalization can be explained with an example. Here I took 2 sceenshots with the same scale from Nero Wave Edittor of 2 songs.
A peak normalization example of a typical hard rock song:
A peak normalization example of a typical easy listening song:
As you can imagen the hard rock song sounds much louder during playback.
|Loudness||With loudness a level is determined how loud a file sounds to the human ear. A popular method is called ReplayGain. ReplayGain defines an algorythm to calculate the normalization and the format of the volume data to store, it does not prescribe exactly how and where the volume data is stored in the file! For mp3 it seems to recommend ID3 tags. A ref value is used around which the volume is adjusted. A typical heavy metal song (with a high sound level throughout the song) gets a normalization level below this reference and an easy listening song (with more quiet passages) above. Therefore the reference is well below the maximum. A reference value of 89 db seems to be recommended.The advantage of the loudness methods can be explained using the same two songs.
A loudness normalization example of a typical hard rock song:
A loudness normalization example of a typical easy listening song:
As you can see the hard rock song is scaled back to make it 'appear' as loud as the hard rock song after play back.
Changing the volume of an mp3 file
There are also several possibilities to apply the determined normalization, ie.e modify the playback level of an mp3 file:
|Recode audio||This means that the audio is encoded again when a volume change is made. With each volume adjustment this method reduces the quality of the audio. Recognized by all players, even by a CD played back on the audio set.|
|Global gain field||This method uses a gain adjustment field in each frame (portion/slice) of the mp3 file. All frames get the same adjustment value. The advantage of this method is that it is lossless and is recognized by all players that adhere to the MP3 standard, including CD player.This method adjusts volume in steps of 1.5 db. This is small enough for the human ear.|
|Tags||The normalization information is stored inside the meta information of the MP3 file. This can be ID3v2 tags or APEv2 tages. The detail of how the information is stored varies with the software that calculates the normalization. Every company seems to have its own tags definition.The advantage of this method is that it is lossless. The disadvantage is that is only works with compatible players.|
These methods may co-exist in the mp3 file! Meaning that the 'global gain field' may have been modifed by one optimizer and a tag may have been written by another optimizer. This is especially a problem if first a normalizer is used that uses tagging follewed by a normalizer that uses the global gain field. The last optimizer would not recognise the tag. A player that would recognise the normalization tag could then potentially play back at the wrong volume.
A volume normalizer can, in theory, use any of the above methods for determining the normalization and any of the above methods to apply this to the mp3 file. Since software vendors do not like to work together and each thinks there methods is the best, this is very likely to cause problems. Especially with files from an unknown source.
|Nero wave edittor||This is an audio file edittor. It does normalization using the peak method. It stored the normalization by re-coding the audio file.|
Uses the ReplayGain method to determine the optimization and adjusts the audio volume by modifying the global gain field.Also stores information in APEV2 tags but this is used by MP3Gain for recovery / roll back only and not used by players.
|MPTrim3||Small utility that can check, repair, trim, fade, normalize individual mp3 files.Uses the peak method to determine the normalization and adjusts the audio volume by modifying the global gain field.|
|iTunes||Uses the peak method to determine the normalization and writes the found values to proprietary ID3v2 tags.
This function called 'sound check' must be enabled in the preferences.
In the above screenshot the normalization is set to off. Note, setting this to off will not remove the normalization tags.iTunes will simply ignore it.
When 'sound check' is ON the volume normalization is visible in the 'file info' box:
The information is saved in proprietary ID3v2 COMMENT tags (highlighted line in screenshot Mp3tag):
|WinAMP||Uses the ReplayGain method to determine the normalization and writes the found values to proprietary ID3v2 tags.
The function is made available with a plugin:
The normalization of files in the playlist or library can be executed by:
After calculation the results can be saved as track or as album:
Whether or not normalization is done by WinAMP can be seen from the file info:
'not present' means that normalization is not done. In this case only track normalization is saved.
The information is saved in proprietary ID3v2 tags (screenshot Mp3tag):
Track & Album Gain
To make things more complicated usually normalization is (can be) calculated both for single tracks and albums. Track gain is applicable for individual songs. Album gain is used with songs belonging to the same album. When playing back an album the player should use album gain values. Since I have independent songs I only want to work with Track Gain. Some of my mp3 songs have their album tag filled in. Would this trigger the album playback? To find out I did some experiments. Made 4 audio files, 1 without album field, 3 with album field info and with 6db difference in playback.
The result of the WinAMP normalization is:
WinAMP gives the options to save the calculated track or album data. Saving as 'track data' just saves the track data and leaves the album data untouched. Saving as 'album data' saves both the track AND album data. During playback WinAMP can either use the track data or album data. This is determined by a setting in the preferences.
Now, playing back in 'track mode' results in all tracks sounding at a similar level. Playing back in 'album mode' plays the songs at different volume levels. The advantage of this method is that you can decide at playback how to play the songs. For my collection of mp3's I would always use the 'track mode' for playback.
MP3Gain works different. I can calculate both track and album normalization data for the same set of files.
After saving the album result to the files you get this:
After playback the tracks differ in volume as you would expect. However there is no option to play as track or album.
Note, both WinAMP and MP3Gain do not seem to read the contents of the album field. With MP3Gain all files you are analysing (just the selection or all loaded files) are considered as part of the album. WinAMP considers all analyzed files as one album, even if album field is not used or has different content. So, if you actually want to use album normalization this needs to be done album by album.
Most optimizers and players give the level of the audio in dB's or as a percentage. The max level of an signal in the mp3 file expressed is 100% or 103 db. Optimizers use different reference values for the normalization. Optimizers that uses the peak method for normalization use a higher reference value then normalizers that use the loudness method for normalization. For instance, the loudness optimizer MP3Gain defaults to 89db. This is 14 db below maximum. With this value there is room for louder signals in the audio file without clipping. WinAMP and MP3Gain give very comparible normalizing results, so I believe that WinAMP also uses 89 db as a reference. The peak optimizer MP3Trim seems to use a reference value of around 96 db. iTunes seems to have a reference of around 94 db.
|WinAMP||During playback WinAMP uses its track/album setting together with normalization data in the file. It does not use nor recognize iTunes data.|
|iPOD||During playback the iPOD uses the volume check setting of iTunes and reads the iTunes normalization data in the file. It does not use nor recognize WinAMP data.|
|iRiver player||Only affected by the normalization method 'recode' or 'global gain'. Does not read any ID3 tag written by iTunes and WinAMP|
|CD player||Not tested.|
Conclusions and actions taken
- The loudness normalization gives the most consistent result during playback.
- The 'recode' and 'global gain method is handled by virtualy every player.
- The 'global gain' method smallest steps of 1.5 db is small enough.
- With the 'global gain' method there is no quality loss if normalization is calculated again
These are the steps I follow to clean up and normalize an mp3 file:
- Strip all normalizations tags from the file, leave other meta data untouched.
- Use MP3Gain to calculate and apply TRACK normalization.
To make tag information consistent I also do the following:
- Change filename and correct spelling, file name: "Artist" - "Title".mp3"
- Manualy enter values for genre, year and album (if known)
- Write artist and title data from file name to artist and title tags. (this makes tag info equal to file name)
For the manipulation of the IDv3 tags I use Mp3tag. To clean the mp3 from any unwanted IDv3 tags I use my own tool, see www.rjut.nl/SinglesUtil/mp3util For the normalization MP3Gain.
In iTunes I DO NOT use the normalization of the songs. DO NOT set the checkmark.