Normalize track volume
Bug #642268 reported by
Sean M. Pappalardo
This bug affects 6 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mixxx |
Fix Released
|
Wishlist
|
Vittorio Colao |
Bug Description
It would be very handy if Mixxx could, at track load time, auto-adjust the Gain knob so that the loudest part of the track is just below clipping. This would offer maximum dynamic range and avoid sudden large volume differences while saving the time it takes to do manual monitoring and adjustment.
Related branches
lp://staging/~l0rdt/mixxx/features_replaygain
- Albert Santoni: Approve
- William Good: Needs Fixing
-
Diff: 3141 lines (+2338/-75) (has conflicts)36 files modifiedmixxx/build/depends.py (+15/-1)
mixxx/build/qtcreator/mixxx.pro (+5/-0)
mixxx/lib/replaygain/replaygain_analysis.c (+431/-0)
mixxx/lib/replaygain/replaygain_analysis.h (+58/-0)
mixxx/res/mixxx.qrc (+30/-29)
mixxx/res/schema.xml (+9/-0)
mixxx/src/analyserqueue.cpp (+3/-0)
mixxx/src/analyserrg.cpp (+80/-0)
mixxx/src/analyserrg.h (+29/-0)
mixxx/src/analyserwaveform.cpp (+3/-3)
mixxx/src/analyserwavesummary.cpp (+1/-1)
mixxx/src/dlgpreferences.cpp (+22/-8)
mixxx/src/dlgpreferences.h (+3/-0)
mixxx/src/dlgprefreplaygain.cpp (+129/-0)
mixxx/src/dlgprefreplaygain.h (+43/-0)
mixxx/src/dlgprefreplaygaindlg.ui (+267/-0)
mixxx/src/dlgprefsound.cpp (+399/-0)
mixxx/src/dlgprefsound.h (+79/-0)
mixxx/src/dlgprefsounddlg.ui (+220/-0)
mixxx/src/dlgreplaygaindlg.ui (+237/-0)
mixxx/src/engine/enginepregain.cpp (+87/-11)
mixxx/src/engine/enginepregain.h (+14/-2)
mixxx/src/library/dao/trackdao.cpp (+8/-4)
mixxx/src/library/dao/trackdao.h (+1/-0)
mixxx/src/library/librarytablemodel.cpp (+1/-0)
mixxx/src/library/trackcollection.cpp (+1/-1)
mixxx/src/player.cpp (+9/-1)
mixxx/src/player.h (+1/-0)
mixxx/src/soundsource.cpp (+72/-3)
mixxx/src/soundsource.h (+4/-1)
mixxx/src/soundsourceproxy.cpp (+1/-0)
mixxx/src/trackinfoobject.cpp (+25/-1)
mixxx/src/trackinfoobject.h (+9/-0)
mixxx/src/waveform/waveformrenderbeat.cpp (+2/-0)
mixxx/src/waveform/waveformrendersignal.cpp (+31/-9)
mixxx/src/waveform/waveformrendersignal.h (+9/-0)
description: | updated |
summary: |
- Auto-adjust Gain knob if ReplayGain tag is present + Auto-adjust Gain knob (normalize audio) |
Changed in mixxx: | |
assignee: | nobody → RJ Ryan (rryan) |
Changed in mixxx: | |
milestone: | none → 1.9.0 |
Changed in mixxx: | |
status: | Confirmed → In Progress |
Changed in mixxx: | |
status: | In Progress → Fix Committed |
summary: |
- Auto-adjust Gain knob (normalize audio) + Normalize track volume |
Changed in mixxx: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
I think Replay Gain can be more useful when comparing two different tracks than using it as you suggested.
As an example, imagine one records with the same volume (e.g. energy) two audio tracks, say audio1 and audio2.
audio1 is a signal at 500Hz and audio2 is at 1kHz. Human ears will perceive audio1 louder than audio2 (perceived loudness can reach 10dB).
To rectify this, in Replay Gain algorithm signals are filtered through a "equal loudness" filter. As a second step, the track is divided in 50ms chunks and energy mean is calculated and such values are sorted in ascending order."The value which most accurately matches human perception of perceived loudness is around 95%, so this value is used by Replay Level".
This means that if gain is set accordingly to replay gain tag and just below clipping, one can have clippings since the loudest value is not the replay gain suggested one.
On the other hand, if these values are used to compare two tracks and pregain of one track is auto-adjusted to reach the same "perceived loudness" of the other (and both are "far away" from clipping), one can switch from one track to the other and the audience will not perceive any volume difference.
My suggestion is hence the following:
If both tracks have ReplayGain tags set and if button on Channel X is pushed, pregain of track on Channel X is set accordingly to pregain value of the other track and the two ReplayGain tags.
I did something similar in a mapping for Hercules DJ Control Mp3 ( http:// www.mixxx. org/forums/ viewtopic. php?f=7& t=1648 ) but not (obviously) using ReplayGain algorithm or tags.