View Issue Details

IDProjectCategoryView StatusLast Update
0011957MediaMonkey for AndroidPlaybackpublic2019-11-11 16:47
Reporterrusty 
PriorityurgentSeveritymajorReproducibilityalways
Status feedbackResolutionopen 
Product Version1.0.4 
Target Version1.3.7Fixed in Version 
Summary0011957: Volume leveling is very limited for low-volume tracks
DescriptionThe 90% default volume level when volume leveling is enabled doesn't give much headroom for low volume tracks, and so they continue to play quietly.

Several ideas for a solution are proposed at: http://www.mediamonkey.com/forum/viewtopic.php?f=21&t=74554&start=15#p385682
TagsNo tags attached.
Fixed in build

Relationships

related to 0008911 closedmarek Implement volume leveling 
related to 0012086 closedmarek Summary: Refactor and improvements of playback 
related to 0011907 assignedmartin Replace equalizer with 10-band equalizer 
related to 0013592 resolvedmartin Volume Leveling doesn't work (Regression) 

Activities

rusty

2014-08-27 21:04

administrator   ~0040433

Please confirm whether this is being fixed as part of the playback-related improvements in 1.1.

marek

2014-09-18 17:29

developer   ~0040512

No, it isn't part of new implementation because it isn't related. We still use the same Android library. We can use one of the simple method. Btw. BASS library that will be implemented to support FLAC and other files might have better possibilities to do this because it contains some basic DSP functions.

rusty

2015-03-16 20:30

administrator   ~0042295

Last edited: 2015-03-16 20:31

View 2 revisions

Note: the root cause of this issue was tagged as obsolete at:
https://code.google.com/p/android/issues/detail?id=66935

Which implies that it should be easily fixable??

marek

2015-07-21 18:28

developer   ~0042721

It is still not fixable. I don't know why they marked it as obsolete.

We probably should use some approach using other audio engine than MediaPlayer - this is related to 0011907.

martin

2016-10-12 13:02

developer   ~0045907

Recapitulation of current implementation. Based on 0008911:

Media player volume must be in range <0.0-1.0> so
if volume_leveling is disabled, then volume is 1.0 (100%) else (90% * multiplier):

Multiplier = exp( ln(10)*Leveling/20);
Volume = Multiplier*0.9;
 
plotted on google
https://www.google.cz/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=plot+exp(ln(10)*x%2F20)*0.9

Value examples:
...
volumeLevel -20.0 dB calcCoef 0.1 volume 0.09000000134110452
volumeLevel -15.0 dB calcCoef 0.17782794 volume 0.16004514545202256
volumeLevel -10.0 dB calcCoef 0.31622776 volume 0.2846049875020981
volumeLevel -5.0 dB calcCoef 0.56234133 volume 0.5061071991920472
volumeLevel -4.0 dB calcCoef 0.63095737 volume 0.5678616285324097
volumeLevel -3.0 dB calcCoef 0.70794576 volume 0.6371511876583099
volumeLevel -2.0 dB calcCoef 0.7943282 volume 0.7148953914642334
volumeLevel -1.0 dB calcCoef 0.8912509 volume 0.8021258175373077
volumeLevel 0.0 dB calcCoef 1.0 volume 0.9
volumeLevel 0.5 dB calcCoef 1.0592537 volume 0.9533283233642579
volumeLevel 1.0 dB calcCoef 1.1220185 volume 1.009816610813141 =>cut to 1.0
volumeLevel 2.0 dB calcCoef 1.2589254 volume 1.1330328941345216 =>cut to 1.0
...

 
It means that volume leveling takes effect only in range <~-20dB;1dB>.
Also -5.0 dB reduce volume to about 45% of original (90%) volume.

rusty

2019-10-11 14:29

administrator   ~0055008

Is it possible to fix this yet? to review:
When volume leveling coefficient is negative: MM reduces the volume correctly
When volume leveling coefficient is positive: MM only increases the volume marginally

martin

2019-11-11 16:38

developer   ~0055313

No new API for this yet, but in fact, I don't understand, why we just don't set the base volume to e.g 80% to have more space to increase the volume of silent tracks?
I know normal tracks will play more silently, but it would resolve the issue I think.

martin

2019-11-11 16:47

developer   ~0055314

Wait I found https://developer.android.com/reference/android/media/audiofx/LoudnessEnhancer
maybe this can be useful for it.