IPB

Welcome Guest ( Log In | Register )

MPC VBR flaws (low volume & ringing), audible under specific conditions
guruboolez
post Jun 23 2005, 10:22
Post #1





Group: Members (Donating)
Posts: 3474
Joined: 7-November 01
From: Strasbourg (France)
Member No.: 420



Iíve read recently some complaints about musepack and distortions occurring with classical music (examples here and here). There were no ABX tests to confirm them. According to my previous listening tests at ~175 kbps, musepack performs not only very well with various kinds of instrumental and vocal samples, but also better than competitors. But Iíve also noticed in the past one issue with this audio format that my previous test didnít revealed, and itís a very big one. Iíd like to bring out this problem to the community, which wasnít as far as I know warned about this kind of flaw.

Before carrying and before some seeing zealous users bare its teeth, I have to make clear that this issue only occurs in specific conditions. The problem is confined to low-volume musical content, and is mainly audible when this content has to be listened to a higher playback volume. In other words, affected tracks must have low volume parts, and tracks with high dynamic are not really concerned (you canít constantly push the volume on such material: your neighbors wonít appreciate it). The problem becomes really critical with low-volume tracks only. People who have to live with the consequences of the ďloudness warĒ are certainly not used to encounter such tracks, but for classical fans, tracks that are replaygained at +10 dB, +20 dB and sometimes +30 dB are all except a rare thing (tracks with corrected gain beyond +25 dB are nevertheless very rare). The encoded material would exhibit strong artifacts with ReplayGan set with Track Mode (they wonít be audible otherwise, except maybe as a subtle form of distortion Ė it could explain some recent complains about musepack and classical music). With RG enabled, even untrained people will be shocked by the terrible ringing that run across this musical material. MPC, with --standard profile, and to some degree --extreme and also Ėinsane is apparently not sensitive enough to handle low volume situation.


At this stage of my account, some people would be probably tempted to claim that such issue is normal with perceptual encoding, and that all other formats will suffer from the same issue in this specific playback condition. But a quick comparison would immediately deny all validity to this idea. Iíve compared musepack --standard to comparable MP3, AAC and Vorbis presets, and these competitors showed the ability to encode properly (no ringing, flat lowpass at high level) the same material. Even stranger, MP3 at 128 kbps, or Vorbis at 90 kbps (!), or AAC (faac!) at 100 kbps perform *much* better than musepack --standard. In other words, perceptual encoders (at least modern one) could handle this situation transparently at mid/low bitrate, even with VBR; only musepack fails, and badly. It might be interesting to note that the VBR model is apparently flawed: with --standard, the bitrate drops to unusual value (110Ö140 kbps), and quality to an even more abnormal threshold. An illustration (graphical Ė listening tests were performed upstream - click for link) could make things easier to understand:



Iíve also uploaded an additional gallery - the last one looks very weird! and sounds even worse as it looks.


The ringing, and the austere lowpass, are obvious on these screenshots. Quality is objectively worse than MP3@128; subjectively speaking, the audibility is Ėas usual- linked to various conditions: hardware, player settings (RG or not), listenerí sensitivity to ringing. Some users wonít notice it, some others will be frightened. The important point to note here is that other audio formats have no problems; my purpose wasnít to make an infertile comparison between MPC and other. Based on this comparison, Iím tempted to say that MPC could rejoin them with some tuning. Anecdotal point: LAME had recently serious issue (which also concern 3.90.3 ABR at mid/low bitrate) and they were recently solved by developers. I think Gabriel worked on an adaptive ATH threshold, and it might be a lead for MPC developer or for some users which are interested to play with current encoder switches.


Iíve uploaded some samples. The gain for short samples is necessary different from the gain of complete sample; but Iíve tried to cut sample with similar gain. The WavPack samples uploaded have all the native gain and the track_peak of the full track. Iíve also duplicated the track gain to the album gain.

http://guruboolez.free.fr/MPC/quiet_tracks_replaygained.zip

Two appendix in this zip file : a piano sample for which track gain for the sample doesnít really match to the track gain of the full track (+40 dB instead of +25 dB) ; and a very noisy track for which musepack doesnít have any problem, despite of high gain correction.


This report is probably the last one Iíll do for MPC (a developer have claim their lack of interest for improving classical at --standard), but I nevertheless hope it will help to improve the encoder. Playing with command line (in order to change ATH or noise sensitivity) might be enough to solve or reduce this issue; therefore, every MPC user could contribute. In the meantime, users should be aware of this issue.

This post has been edited by guruboolez: Jun 23 2005, 10:26
Go to the top of the page
+Quote Post
 
Start new topic
Replies
CiTay
post Jun 28 2005, 20:09
Post #2


Administrator


Group: Admin
Posts: 2376
Joined: 22-September 01
Member No.: 3



As promised, here is the answer that i got from Frank Klemm today. I translated it from german.


CODE
The calculated masked threshold is indeed depending on the level. It changes if lower levels
are approached. This modification was made sometime between encoder version 1.06 and 1.1.

With high levels, the NMR (noise-to-mask-ratio) was raised by 0.5 dB, with low levels,
it was lowered. The masked threshold (ATH) was lowered by 6 dB in total.

The original behavior was that, up to a certain threshold, things were coded with full NMR,
and after that it would suddenly get muted. A signal around that switching threshold
produced audible artifacts, despite the fact that many bits were used for coding.

The current behavior is that the coding gradually gets worse with very low levels and there's
almost no usable signal in the end. Only when this point is reached, the coding is stopped.

When you're looking at the error signal over the signal strength, there's a slowly declining
function that approaches the ATH from above. The old behavior first caused the error signal to
fall ca. 20 dB below the ATH and only raise to ATH-level again when the coding was stopped.

Extensive listening tests with headphones were conducted (headphones because of the high
listening level). For listening material, among others, the Bolero by M. Ravel was used.
Volume was adjusted to ca. 114 dB SPL at -0 dB signal strength.

At this volume, noise in the recording and quantization artefacts are already an issue with
many 16 bit recordings. As long as this level is not (clearly) exceeded, the quality of the
coding was clearly better, despite the lower bitrate (even though the NMR was raised by 0.5 dB
and the ATH lowered by 6 dB, there are spare bits with almost every kind of music).
The fluctuation in the coding - which was caused by activation and deactivation of subbands -
disappears.

But if you turn up the volume clearly above this level (ca. from 120 dB SPL at -0 dB signal
strength on), you hear the coding errors which are then pretty different from the older versions.

Now, if you disregard the question "what good are replaygains above +10 dB?" (with classical
music, only album-based replaygain should be used anyway), the problem can be solved by
lowering the ATH. It will result in a slightly higher bitrate.

If this problem is relevant for daily use in any kind of way, i dare say "no".
For most pop titles, you can increase the ATH by 30 dB and still not notice anything.
Even with classical music, 10 dB are often possible.

A clean solution is not possible with a 1-pass-coder; you would first need a rough
volume estimation of the whole song to estimate the maximum position of the volume knob -
and even then, you could still re-adjust during the title.

Furthermore, i would recommend corrections within Replaygain. A "quick-to-hack" solution
would be that the title-based replaygain of neighboring tracks in an album must not
differentiate by more than 6 dB.

From these (calculated) values:

- 7,81 dB
- 6,41 dB
- 7,61 dB
+4,81 dB
- 8,11 dB
- 6,12 dB
+1,12 dB
- 9,12 dB

you will then get:

- 7,81 dB
- 6,41 dB
- 7,61 dB
- 2,11 dB        // raised to -8,11 + 6
- 8,11 dB
- 6,12 dB
- 3,12 dB        // raised to -9,12 + 6
- 9,12 dB


Then, short voice tracks/interludes/preludes etc. don't get boosted to +40 dB anymore.
Because this is currently the only limit: Replaygain values of more than +40 dB are
simply reduced to 0 dB (not really that clean either). This limit should also be
reduced to +12 dB (corresponds to K-26).

If this proposal is taken up, i could send some reasonably tuned example code.
Somewhere in the depths of my hard disk there should be something.
In that code, the increase of these "holes" is also depending on the Album-replaygain,
the title length and sometimes from more distant neighboring tracks.
A "1 second digital null" before the first title approximately gets the value of the
first track, a "2 second digital null" in between two tracks gets the mean value
of both tracks.



static const Profile_Setting_t  Profiles [16] = {
   { 0 },
   { 0 },
   { 0 },
   { 0 },
   { 0 },
/*    Short   MinVal  EarModel  Ltq_                min   Ltq_  Band-  tmpMask  CVD_  varLtq    MS   Comb   NS_        Trans */
/*    Thr     Choice  Flag      offset  TMN   NMT   SMR   max   Width  _used    used         channel Penal used  PNS    Det  */
   { 1.e9f,  1,      300,       30,    3.0, -1.0,    0,  106,   4820,   1,      1,    1.,      3,     24,  6,   1.09f, 200 },  // 0: pre-Telephone
   { 1.e9f,  1,      300,       24,    6.0,  0.5,    0,  100,   7570,   1,      1,    1.,      3,     20,  6,   0.77f, 180 },  // 1: pre-Telephone
   { 1.e9f,  1,      400,       18,    9.0,  2.0,    0,   94,  10300,   1,      1,    1.,      4,     18,  6,   0.55f, 160 },  // 2: Telephone
   { 50.0f,  2,      430,       12,   12.0,  3.5,    0,   88,  13090,   1,      1,    1.,      5,     15,  6,   0.39f, 140 },  // 3: Thumb
   { 15.0f,  2,      440,        6,   15.0,  5.0,    0,   82,  15800,   1,      1,    1.,      6,     10,  6,   0.27f, 120 },  // 4: Radio
   {  5.0f,  2,      550,        0,   18.0,  6.5,    1,   76,  19980,   1,      2,    1.,     11,      9,  6,   0.00f, 100 },  // 5: Standard
   {  4.0f,  2,      560,       -6,   21.0,  8.0,    2,   70,  22000,   1,      2,    1.,     12,      7,  6,   0.00f,  80 },  // 6: Xtreme
   {  3.0f,  2,      570,      -12,   24.0,  9.5,    3,   64,  24000,   1,      2,    2.,     13,      5,  6,   0.00f,  60 },  // 7: Insane
   {  2.8f,  2,      580,      -18,   27.0, 11.0,    4,   58,  26000,   1,      2,    4.,     13,      4,  6,   0.00f,  40 },  // 8: BrainDead
   {  2.6f,  2,      590,      -24,   30.0, 12.5,    5,   52,  28000,   1,      2,    8.,     13,      4,  6,   0.00f,  20 },  // 9: post-BrainDead
   {  2.4f,  2,      599,      -30,   33.0, 14.0,    6,   46,  30000,   1,      2,   16.,     15,      2,  6,   0.00f,  10 },  //10: post-BrainDead
};


The Ltq_offset entry is the alteration of the masked threshold against the standard model.
A reduction by 6 dB decreases the ATH by 6 dB in the whole frequency range.

The value left of that (EarModel) can be used for ATH fine-tuning for higher frequencies.
An increasing by 20 results in a ATH decrease by 1.5 dB at 10 KHz and 6 dB at 20 KHz.

--quality 6 against --quality 5 has the following differences in the ATH with this:

- 6,0 dB for low frequencies
- 6,5 dB for 8 kHz
- 7,0 dB for 11 kHz
- 8,0 dB for 16,3 kHz
- 9,0 dB for 20 kHz
-10,0 dB for 23 kHz

If there are further questions or if something was unintelligible, just keep asking.
I still have no time, but when i have 15 minutes silence, i can answer such things.

Motto of the day: The ingeniousness of a construction lies within its simplicity.
Everyone can build something complicated. (Sergeij P. Koroljow)
Go to the top of the page
+Quote Post

Posts in this topic
- guruboolez   MPC VBR flaws (low volume & ringing)   Jun 23 2005, 10:22
- - shadowking   I confirm serious problems under these special lis...   Jun 23 2005, 11:07
- - Acid8000   What I understand from your post guru is that at ...   Jun 23 2005, 11:24
- - rjamorim   I think you should put more creativity into your r...   Jun 23 2005, 15:24
- - Gambit   I haven't seen this mentioned anywhere, so I t...   Jun 23 2005, 15:41
|- - guruboolez   QUOTE (Gambit @ Jun 23 2005, 03:41 PM)QUOTE ...   Jun 27 2005, 10:27
- - Gabriel   The obvious workaround is to check the track gain ...   Jun 23 2005, 20:33
- - Lefungus   QUOTE (guruboolez @ Jun 23 2005, 11:22 AM)Thi...   Jun 23 2005, 20:33
|- - Dibrom   QUOTE (Lefungus @ Jun 23 2005, 11:33 AM)QUOTE...   Jun 23 2005, 22:01
||- - mtm   QUOTE (Dibrom @ Jun 23 2005, 11:01 PM)I would...   Jun 23 2005, 22:23
||- - GeSomeone   QUOTE (guruboolez @ Jun 23 2005, 11:22 AM)Thi...   Jun 27 2005, 12:18
|- - rjamorim   QUOTE (Lefungus @ Jun 23 2005, 04:33 PM)The c...   Jun 23 2005, 22:21
- - mtm   guruboolez, thank you very much for your input. I ...   Jun 23 2005, 21:43
- - CiTay   Thanks again for that summary, guruboolez. I alrea...   Jun 24 2005, 01:20
- - CiTay   Frank replied from work that he will comment as so...   Jun 24 2005, 10:33
- - mtm   My sincerest thanks to everyone involved.   Jun 24 2005, 14:40
- - xmixahlx   dibrom's speed enhancements were focused on PP...   Jun 27 2005, 20:32
|- - Dibrom   QUOTE (xmixahlx @ Jun 27 2005, 11:32 AM)dibro...   Jun 27 2005, 21:04
- - CiTay   As promised, here is the answer that i got from Fr...   Jun 28 2005, 20:09
- - CiTay   I'm a bit surprised nobody has to say anything...   Jul 2 2005, 21:40
|- - rjamorim   QUOTE (CiTay @ Jul 2 2005, 05:40 PM)I'm a...   Jul 2 2005, 21:56
||- - CiTay   QUOTE (rjamorim @ Jul 2 2005, 10:56 PM)Well, ...   Jul 2 2005, 22:37
|- - guruboolez   QUOTE (CiTay @ Jul 2 2005, 09:40 PM)I'm a...   Jul 5 2005, 13:33
|- - markanini   QUOTE (guruboolez @ Jul 5 2005, 01:33 PM)QUOT...   Jul 5 2005, 14:45
||- - guruboolez   QUOTE (markanini @ Jul 5 2005, 02:45 PM)I don...   Jul 5 2005, 16:17
|- - Dibrom   QUOTE (guruboolez @ Jul 5 2005, 04:33 AM)QUOT...   Jul 5 2005, 16:25
|- - guruboolez   QUOTE I think it's probably worth noting that ...   Jul 5 2005, 16:51
|- - Vertigo   QUOTE QUOTE I think it's probably worth noting...   Jul 5 2005, 17:26
- - Vertigo   Hahaha, I love it when robert comes in to save the...   Jul 3 2005, 00:54
|- - rjamorim   QUOTE (Vertigo @ Jul 2 2005, 08:54 PM)Hahaha,...   Jul 3 2005, 01:01
- - Dibrom   Do we need to split this thread again to stay on t...   Jul 3 2005, 01:32
- - Cyaneyes   Just to comment on Frank's thoughts on Track g...   Jul 3 2005, 02:43
|- - Andavari   QUOTE (Cyaneyes @ Jul 2 2005, 07:43 PM)Just t...   Jul 3 2005, 03:47
|- - Lyx   *nevermind - i mixed up trackgain and albumgain*   Jul 3 2005, 04:27
- - xmixahlx   ...if this problem only occurs in music with ridic...   Jul 3 2005, 11:29
- - Lime   I think a workaround is easy. Just do a replaygain...   Jul 5 2005, 15:10
- - Raptus   QUOTE (Gabriel @ Jun 23 2005, 11:33 AM)The fi...   Jul 5 2005, 15:41
|- - Shade[ST]   wouldnt this type of adjustment make the ath usele...   Jul 5 2005, 15:47
- - Gabriel   QUOTE wouldnt this type of adjustment make the ath...   Jul 5 2005, 16:04
|- - Dibrom   QUOTE (Gabriel @ Jul 5 2005, 07:04 AM)If I re...   Jul 5 2005, 16:46
- - Dibrom   QUOTE (guruboolez @ Jul 5 2005, 07:51 AM)QUOT...   Jul 5 2005, 17:26
|- - guruboolez   QUOTE Well haven't you gotten polite answers i...   Jul 5 2005, 18:52
- - Dibrom   QUOTE QUOTE By that, I mean that changing this in ...   Jul 5 2005, 17:26
- - Vertigo   I think we need to send Guruboolez the HA Controve...   Jul 5 2005, 17:32
|- - rjamorim   QUOTE (Vertigo @ Jul 5 2005, 01:32 PM)I think...   Jul 5 2005, 17:51
|- - Vertigo   QUOTE (rjamorim @ Jul 5 2005, 08:51 AM)QUOTE ...   Jul 5 2005, 17:57
- - Jebus   I think there seems to just be an issue with ATH a...   Jul 5 2005, 20:22
- - CiTay   I got a new e-Mail from Frank (he follows this thr...   Jul 8 2005, 22:19
|- - ChristianHJW   QUOTE (CiTay @ Jul 8 2005, 09:19 PM)I got a n...   Jul 10 2005, 09:45
- - Gabriel   Isn't the purpose of track gain to be able to ...   Jul 9 2005, 11:16
|- - Frank Klemm   QUOTE (Gabriel @ Jul 9 2005, 12:16 PM)Isn...   Jul 9 2005, 14:47
|- - Frank Klemm   Example for changing title based replaygains from ...   Jul 9 2005, 14:58
|- - Frank Klemm   Other examples where ReplayGain makes nonsense. Es...   Jul 9 2005, 15:16
||- - Frank Klemm   A lot of albums have nearly no differences between...   Jul 9 2005, 15:22
|- - guruboolez   QUOTE This is not an article about Musepack, but a...   Jul 10 2005, 23:22
||- - Dibrom   QUOTE I won't say that ReplayGain is the cause...   Jul 11 2005, 00:15
||- - Gambit   QUOTE (Dibrom @ Jul 11 2005, 12:15 AM)I think...   Jul 11 2005, 00:22
|||- - Dibrom   QUOTE (Gambit @ Jul 10 2005, 03:22 PM)QUOTE (...   Jul 11 2005, 00:25
|||- - rjamorim   QUOTE (Dibrom @ Jul 10 2005, 08:25 PM)Well ca...   Jul 11 2005, 00:28
|||- - Dibrom   QUOTE (rjamorim @ Jul 10 2005, 03:28 PM)QUOTE...   Jul 11 2005, 00:33
|||- - rjamorim   QUOTE (Dibrom @ Jul 10 2005, 08:33 PM)Umm.. I...   Jul 11 2005, 00:41
|||- - Dibrom   QUOTE (rjamorim @ Jul 10 2005, 03:41 PM)Well,...   Jul 11 2005, 00:59
|||- - rjamorim   Thanks for your clarification. So, from that, one...   Jul 11 2005, 01:02
|||- - Dibrom   QUOTE (rjamorim @ Jul 10 2005, 04:02 PM)Thank...   Jul 11 2005, 01:05
|||- - CiTay   QUOTE (Dibrom @ Jul 11 2005, 02:05 AM)'Co...   Jul 11 2005, 01:26
|||- - guruboolez   QUOTE (CiTay @ Jul 11 2005, 01:26 AM)With tha...   Jul 11 2005, 11:53
|||- - CiTay   QUOTE (guruboolez @ Jul 11 2005, 12:53 PM)Now...   Jul 11 2005, 13:01
|||- - guruboolez   QUOTE (CiTay @ Jul 11 2005, 01:01 PM)QUOTE (g...   Jul 11 2005, 14:14
||- - guruboolez   QUOTE (Dibrom @ Jul 11 2005, 12:15 AM)The inv...   Jul 11 2005, 02:18
|- - rjamorim   QUOTE (Frank Klemm @ Jul 9 2005, 10:47 AM)Rep...   Jul 11 2005, 00:13
|- - Frank Klemm   QUOTE (rjamorim @ Jul 11 2005, 01:13 AM)QUOTE...   Jul 11 2005, 18:23
|- - mtm   QUOTE (Frank Klemm @ Jul 11 2005, 07:23 PM)Th...   Jul 12 2005, 05:07
|- - Frank Klemm   QUOTE (mtm @ Jul 12 2005, 06:07 AM)QUOTE (Fra...   Jul 12 2005, 22:39
- - Gambit   It seems funny to me that you would try to fix Rep...   Jul 9 2005, 11:48
- - mtm   Thank you for your posts, Mr Klemm. They certainly...   Jul 9 2005, 18:51
- - mtm   I just want to say I agree with everything Dibrom ...   Jul 11 2005, 01:35
|- - guruboolez   QUOTE (mtm @ Jul 11 2005, 01:35 AM)I don...   Jul 11 2005, 02:26
- - Dibrom   I think I probably agree with guruboolez. I'm...   Jul 11 2005, 13:11
|- - ancl   QUOTE (Dibrom @ Jul 11 2005, 02:11 PM)I think...   Jul 11 2005, 13:33
||- - Dibrom   QUOTE (ancl @ Jul 11 2005, 04:33 AM)The 2-pas...   Jul 11 2005, 13:53
|- - CiTay   QUOTE (Dibrom @ Jul 11 2005, 02:11 PM)I think...   Jul 11 2005, 13:40
|- - Dibrom   QUOTE (CiTay @ Jul 11 2005, 04:40 AM)Yes, it...   Jul 11 2005, 13:57
|- - guruboolez   QUOTE (CiTay @ Jul 11 2005, 01:40 PM)"Ho...   Jul 11 2005, 14:27
|- - CiTay   QUOTE The current problem of MPC is not to be sure...   Jul 11 2005, 15:07
|- - guruboolez   QUOTE (CiTay @ Jul 11 2005, 03:07 PM)I don...   Jul 11 2005, 15:23
|- - CiTay   QUOTE (guruboolez @ Jul 11 2005, 04:23 PM)May...   Jul 11 2005, 15:33
|- - guruboolez   QUOTE (CiTay @ Jul 11 2005, 03:33 PM)The thre...   Jul 11 2005, 15:50
|- - CiTay   QUOTE (guruboolez @ Jul 11 2005, 04:50 PM)QUO...   Jul 11 2005, 16:03
- - 2Bdecided   I think the concentration on ReplayGain is mislead...   Jul 11 2005, 14:49
|- - guruboolez   QUOTE (2Bdecided @ Jul 11 2005, 02:49 PM)btw,...   Jul 11 2005, 15:01
|- - Dibrom   QUOTE (2Bdecided @ Jul 11 2005, 05:49 AM)The ...   Jul 11 2005, 15:14
||- - guruboolez   QUOTE Yes, but looking back the original quote fro...   Jul 11 2005, 15:35
|- - Frank Klemm   QUOTE (2Bdecided @ Jul 11 2005, 03:49 PM)The ...   Jul 11 2005, 18:14
- - CiTay   Also, guruboolez, i want to apologize to you again...   Jul 11 2005, 15:30
- - krazy   QUOTE (Frank Klemm @ Jul 12 2005, 01:23 AM)I ...   Jul 11 2005, 19:36
|- - Frank Klemm   QUOTE (krazy @ Jul 11 2005, 08:36 PM)QUOTE (F...   Jul 11 2005, 19:51
- - 2Bdecided   If you play nogap tracks out of sequence, you...   Jul 12 2005, 10:53
|- - seanyseansean   QUOTE (2Bdecided @ Jul 12 2005, 10:53 AM)A ne...   Jul 12 2005, 10:57
|- - dev0   QUOTE (2Bdecided @ Jul 12 2005, 10:53 AM)That...   Jul 12 2005, 11:17
- - guruboolez   I made a similar comparison, using short samples d...   Jul 13 2005, 00:41
2 Pages V   1 2 >


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 16th April 2014 - 08:16