Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: lame3100k - bringing constraint VBR to Lame (Read 53662 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

lame3100k - bringing constraint VBR to Lame

Reply #25
Yes, the graphs show average bitrate for each track.
But my sentence was wrong, because it also wouldn't help if you could give something like the frame dependent audio data bitrate distribution for each track. The various encoders simply aren't comparable. What could help would be a comparison lame3100i --brV+ 224 (aka -V2+) vs. lame3100k --bCVBR 224 or a similar comparson, because 3100i uses a high cvbr level and a relatively low -Vx level, whereas 3100k uses a lower cvbr level and a higher -Vx level.
lame3995o -Q1.7 --lowpass 17

lame3100k - bringing constraint VBR to Lame

Reply #26
Great! It seems CVBR was introduced onto this version (3100k). I have one request though, I hope the --adbr switch will still be available atleast for short block (this is for personal preference).

lame3100k - bringing constraint VBR to Lame

Reply #27
The functional extension has been eesentially CVBR for quite a long time, but now I put the focus on it with the user interface as well as the documentation.

I gave away the --adbr switches for simplicity and because we now have a --cvbr option to control the strength of cvbr. Sure fine tuning as before isn't possible this way.
I can easily bring these options back, but before I do I'd like to know what exact setting are you particularly interested in? Maybe there's a more common interest in it, maybe your intention can match the --cvbr functionality.
lame3995o -Q1.7 --lowpass 17

lame3100k - bringing constraint VBR to Lame

Reply #28
I did a listening test today in order to find out something about 'rate–distortion optimization' for lame3100k.

I decided to use various settings yielding 195 kbps on average for my test collection of various pop music:

-V2
-V2 --cvbr 2.0
--bCVBR 195 (which is -V2.625 --cvbr 3.65625)
-V2.999 --cvbr 4.0
-V3.5 --cvbr 4.4
-V5 as the low anchor.

I tested with the samples:

lead-voice
harp40_1
trumpet_myPrince
herding_calls
Angels Fall First

I used abchr.jar and used encryption for the samples.

First I should say I'm not good at scoring the differences I spotted. With 'Angels Fall First' my results were so unreliable (especially I scored the original below 5.0) I had to put them into the trash.
For the other samples at least I feel so sure that I think the following conclusion is correct. But I'd welcome everybody to do a similar test.

Not talking about the low anchor, the quality of the various settings didn't vary much to my ears, with the exception of the poor quality of -V2 for 'lead-voice' and - to a much smaller extent - sec. 8-12 of 'trumpet_myPrince'.
-V2 --cvbr 2.0 came out best in an overall sense. It was always among the best scores, and a clear winner for 'herding_calls'.
-V3.5 --cvbr 4.4 was better on sample 'trumpet_myPrince', but -V2 --cvbr 2.0 wasn't much worse. On the other hand -V3.5 --cvbr 4.4 was considerably worse on 'herding_calls'.
It was previous experience already that constrained vbr level must be beyond a threshold to be really useful for tonal samples. Looks like this threshold is around --cvbr 4.5.

So even at 195 kbps it is still best to confide in a high -V level in the first place, and keep --cvbr level so low that it comes more or less for free.
Guess this isn't a surprise to many people.
lame3995o -Q1.7 --lowpass 17

lame3100k - bringing constraint VBR to Lame

Reply #29
At the beginning of the week I tried to do my first own ABX test (flac vs mp3), testing how good halb's extension is at using --cvbr auto.
I have to say I only tested one music sample ([a href=\'index.php?act=findpost&pid=0\']Dear J[/a]), doing 12 tests per setting, don't know if it's enough. Tell me if I should do more next time. 
I started using -V5 --cvbr auto going up to -V4 --cvbr auto and -V3 --cvbr auto.
-V5 --cvbr auto
Code: [Select]
19:11:54 : Test started.
19:12:15 : 01/01  50.0%
19:12:21 : 02/02  25.0%
19:12:27 : 03/03  12.5%
19:12:31 : 04/04  6.3%
19:12:38 : 05/05  3.1%
19:12:52 : 06/06  1.6%
19:12:58 : 07/07  0.8%
19:13:03 : 08/08  0.4%
19:13:09 : 09/09  0.2%
19:13:15 : 10/10  0.1%
19:13:22 : 11/11  0.0%
19:13:30 : 12/12  0.0%
19:13:31 : Test finished.

 ----------
Total: 12/12 (0.0%)
-V4 --cvbr auto
Code: [Select]
19:21:06 : Test started.
19:22:52 : 01/01  50.0%
19:23:27 : 02/02  25.0%
19:23:43 : 03/03  12.5%
19:23:59 : 04/04  6.3%
19:24:18 : 04/05  18.8%
19:24:30 : 05/06  10.9%
19:24:38 : 06/07  6.3%
19:25:07 : 07/08  3.5%
19:25:33 : 08/09  2.0%
19:25:46 : 09/10  1.1%
19:25:54 : 09/11  3.3%
19:26:13 : 10/12  1.9%
19:26:21 : Test finished.

 ----------
Total: 10/12 (1.9%)
-V3 --cvbr auto
Code: [Select]
19:27:16 : Test started.
19:28:22 : 00/01  100.0%
19:28:36 : 01/02  75.0%
19:29:16 : 02/03  50.0%
19:29:27 : 03/04  31.3%
19:29:36 : 03/05  50.0%
19:29:58 : 04/06  34.4%
19:31:39 : 04/07  50.0%
19:31:45 : 05/08  36.3%
19:31:52 : 06/09  25.4%
19:31:59 : 07/10  17.2%
19:32:18 : 08/11  11.3%
19:32:25 : 09/12  7.3%
19:32:30 : Test finished.

 ----------
Total: 9/12 (7.3%)
I think nothing special so far. Also I have to admit that -V3 was sometimes quite difficult for me to figure out.

Next step I got from -V2 up to -V0 comparing halb's extension with the offical alpha version.
lame 3.100a2 -V2
Code: [Select]
19:46:01 : Test started.
19:46:06 : 01/01  50.0%
19:46:11 : 02/02  25.0%
19:46:15 : 03/03  12.5%
19:46:22 : 04/04  6.3%
19:46:28 : 05/05  3.1%
19:46:38 : 06/06  1.6%
19:46:50 : 07/07  0.8%
19:46:55 : 07/08  3.5%
19:47:00 : 08/09  2.0%
19:47:04 : 09/10  1.1%
19:47:08 : 10/11  0.6%
19:47:13 : 11/12  0.3%
19:47:15 : Test finished.

 ----------
Total: 11/12 (0.3%)
lame 3100k -V2 --cvbr auto
Code: [Select]
19:33:29 : Test started.
19:34:07 : 01/01  50.0%
19:34:37 : 02/02  25.0%
19:34:54 : 03/03  12.5%
19:35:16 : 04/04  6.3%
19:35:29 : 05/05  3.1%
19:36:19 : 05/06  10.9%
19:36:53 : 06/07  6.3%
19:37:01 : 06/08  14.5%
19:37:43 : 07/09  9.0%
19:37:52 : 08/10  5.5%
19:38:06 : 09/11  3.3%
19:38:24 : 10/12  1.9%
19:38:26 : Test finished.

 ----------
Total: 10/12 (1.9%)
lame 3.100a2 -V1
Code: [Select]
23:45:35 : Test started.
23:45:40 : 00/01  100.0%
23:45:45 : 01/02  75.0%
23:45:50 : 01/03  87.5%
23:45:54 : 02/04  68.8%
23:45:59 : 03/05  50.0%
23:46:03 : 03/06  65.6%
23:46:08 : 04/07  50.0%
23:46:12 : 04/08  63.7%
23:46:43 : 05/09  50.0%
23:46:50 : 06/10  37.7%
23:47:09 : 07/11  27.4%
23:47:22 : 08/12  19.4%
23:47:25 : Test finished.

 ----------
Total: 8/12 (19.4%)
lame 3100k -V1 --cvbr auto
Code: [Select]
23:21:36 : Test started.
23:21:56 : 01/01  50.0%
23:22:04 : 02/02  25.0%
23:22:11 : 03/03  12.5%
23:22:34 : 04/04  6.3%
23:22:41 : 05/05  3.1%
23:22:48 : 05/06  10.9%
23:23:39 : 06/07  6.3%
23:23:57 : 07/08  3.5%
23:24:48 : 08/09  2.0%
23:24:56 : 09/10  1.1%
23:25:03 : 10/11  0.6%
23:26:22 : 11/12  0.3%
23:26:24 : Test finished.

 ----------
Total: 11/12 (0.3%)
lame 3.100a2 -V0
Code: [Select]
00:00:05 : Test started.
00:00:50 : 00/01  100.0%
00:01:00 : 01/02  75.0%
00:01:16 : 02/03  50.0%
00:02:02 : 02/04  68.8%
00:02:18 : 03/05  50.0%
00:02:43 : 04/06  34.4%
00:02:54 : 05/07  22.7%
00:03:50 : 06/08  14.5%
00:04:09 : 07/09  9.0%
00:04:53 : 08/10  5.5%
00:06:13 : 08/11  11.3%
00:06:56 : 09/12  7.3%
00:06:59 : Test finished.

 ----------
Total: 9/12 (7.3%)
lame 3100k -V0 --cvbr auto
Code: [Select]
23:35:30 : Test started.
23:35:34 : 01/01  50.0%
23:35:41 : 02/02  25.0%
23:35:46 : 03/03  12.5%
23:35:50 : 04/04  6.3%
23:36:01 : 04/05  18.8%
23:36:18 : 05/06  10.9%
23:36:45 : 06/07  6.3%
23:36:52 : 06/08  14.5%
23:37:05 : 07/09  9.0%
23:37:20 : 07/10  17.2%
23:37:36 : 08/11  11.3%
23:40:21 : 09/12  7.3%
23:40:24 : Test finished.

 ----------
Total: 9/12 (7.3%)
For some reason when using -V1 --cvbr auto it wasn't really difficult to figure out the difference between mp3 and flac. I found it more difficult using -V1 in 3.100a2.
I have to say under my normal listening surrounding I wouldn't be able to to tell the difference using -V2 --cvbr auto and higher. Honestly before I started my test I thought I wouldn't be able to hear any difference using -V2 or higher, so after the test I was a bit surprised.

I did another test using 3100k with -V0 --cvbr 9, out of curiosity.
Code: [Select]
19:38:38 : Test started.
19:39:19 : 01/01  50.0%
19:40:04 : 02/02  25.0%
19:41:39 : 03/03  12.5%
19:41:50 : 03/04  31.3%
19:43:10 : 03/05  50.0%
19:44:39 : 03/06  65.6%
19:45:41 : 04/07  50.0%
19:48:16 : 05/08  36.3%
19:48:32 : 06/09  25.4%
19:50:43 : 07/10  17.2%
19:52:14 : 08/11  11.3%
19:53:01 : 08/12  19.4%
19:53:06 : Test finished.

 ----------
Total: 8/12 (19.4%)
Did repeat the test three times, but everytime I got 7-8/12, also I have to say it was quite hard to do that, but it was possible.

If someone wants to try testing it too, the link is at the beginning (14 seconds). Little hint: listen carefully from 1-2sec - start by using V5

lame3100k - bringing constraint VBR to Lame

Reply #30
I have to say I only tested one music sample ([a href='index.php?act=findpost&pid=0']Dear J[/a]), doing 12 tests per setting, don't know if it's enough.
[...]
If someone wants to try testing it too, the link is at the beginning (14 seconds). Little hint: listen carefully from 1-2sec - start by using V5

The link is broken.

lame3100k - bringing constraint VBR to Lame

Reply #31
So even at 195 kbps it is still best to confide in a high(er) -V level in the first place, and keep --cvbr level so low that it comes more or less for free.
Guess this isn't a surprise to many people.

It was to be expected that the extension can only improve overall quality by using extra bits at critical places. In a way Kamedo2's test tells a similar story. It compares -V 1 with -V 2+ to be in the same bit rate ball park (I know that also the versions differ).

I like it that you made an effort (from 3100j on) to make the effect of the extension come at lower (bit) cost.
In theory, there is no difference between theory and practice. In practice there is.

lame3100k - bringing constraint VBR to Lame

Reply #32
... doing 12 tests per setting, don't know if it's enough. ...

Thank you very much for your test.

For a long time 8 or 10 trials were used most of the time. Since quite a while 5 trials are considered enough.
For a positive ABX result (probability for guessing <= 5%) you should be fine with a 5/5 resp. 7/8 result, or in your 12 trials case: a 10/12 result. 9/12 is not enough.

So you couldn't ABX -V3 --cvbr auto. However you were able to ABX -V2 --cvbr auto or not, as well as even -V1 --cvbr auto. From my own tests I know my sensitivity towards issues varies. Do you think this is the case here, too?
lame3995o -Q1.7 --lowpass 17

lame3100k - bringing constraint VBR to Lame

Reply #33
I have to say I only tested one music sample ([a href='index.php?act=findpost&pid=0']Dear J[/a])...

I'd like to look at your sample, too, to see if I can see something special with -V1 --cvbr auto. So it would be nice if you could give us a working link.

Other than that I think that even when using -V0 (with or without --cvbr auto) you can hear the issue of your sample (because you were repeatedly close to a good ABX result). With -V0 --cvbr 9 however there is a pretty low chance that you can still hear it (7 to 8 hits out of 12 trials).
lame3995o -Q1.7 --lowpass 17

lame3100k - bringing constraint VBR to Lame

Reply #34
I did another short listening test using 228 kbps on average with samples lead-voice, trumpet_myPrince, herding_calls and harp40_1 using -V1, --bCVBR 228, -V1.05 --cvbr 3.5, -V1.75 --cvbr 6.15, V5.
I had to throw away trumpet_myPrince because my results were unreliable (which means that any setting was excellent to me not mentioning the low anchor).

cvbr brought an improvement over standard vbr for all the other samples, but the difference is very audible only for lead-voice. Again the high -V / low --cvbr combination -V1.05 --cvbr 3.5 was best overall for me. The other extreme combination -V1.75 --cvbr 6.15 was best for harp40_1 however (though not by much).

As a consequence I will default --cvbr auto to extremely cheap cvbr values for any -Vx level.

I am about to start developing version 3100l which will contain all the aspects discussed in this thread. In case other wishes should exist please come up with them within the next days
lame3995o -Q1.7 --lowpass 17

lame3100k - bringing constraint VBR to Lame

Reply #35
Well, I would like to see two-pass ABR

lame3100k - bringing constraint VBR to Lame

Reply #36
Sorry, it's all based on VBR.
lame3995o -Q1.7 --lowpass 17

lame3100k - bringing constraint VBR to Lame

Reply #37
... doing 12 tests per setting, don't know if it's enough. ...

Thank you very much for your test.

For a long time 8 or 10 trials were used most of the time. Since quite a while 5 trials are considered enough.
For a positive ABX result (probability for guessing <= 5%) you should be fine with a 5/5 resp. 7/8 result, or in your 12 trials case: a 10/12 result. 9/12 is not enough.
So you couldn't ABX -V3 --cvbr auto. However you were able to ABX -V2 --cvbr auto or not, as well as even -V1 --cvbr auto.
From my own tests I know my sensitivity towards issues varies. Do you think this is the case here, too?

Thank you for telling me how many trials I need for a positive ABX result.
About the variation sensitivity torwards issues, don't know if I understand you right here, but sometimes I could hear the difference quite clear and sometimes I couldn't.
However you were able to ABX -V2 --cvbr auto or not - Should this be a question or not? Perhaps I should try repeating the test with -V2. When I do that should I stay with --cvbr auto or should I try it with using numbers instead of auto?

I have to say I only tested one music sample ([a href='index.php?act=findpost&pid=0']Dear J[/a])...

I'd like to look at your sample, too, to see if I can see something special with -V1 --cvbr auto. So it would be nice if you could give us a working link.

Other than that I think that even when using -V0 (with or without --cvbr auto) you can hear the issue of your sample (because you were repeatedly close to a good ABX result). With -V0 --cvbr 9 however there is a pretty low chance that you can still hear it (7 to 8 hits out of 12 trials).

The reason for posting here was mainly the test results with -V1 --cvbr auto, because I found it odd that I scored more than V2 and V3 and I couldn't explain that. 
With -V0 --cvbr 9 it was quite hard to notice the spot at all, so as I wrote before, normally I wouldn't have noticed it at all with this setting.

As for the link, I'm sorry did a litttle mistake, it should work now.
Download Testsample - Dear J

 

lame3100k - bringing constraint VBR to Lame

Reply #38
Thank you for the link. It worked now. I'll have a look into -V1 --cvbr auto behavior.
My remarks are about your -V3 --cvbr auto and -V1 --cvbr auto results which are not totally in line with your general findings. This maybe due to lame3100k behavior but maybe also because of a varying sensitivity towards the issue (which at least I have encountered when doing listening tests).

So yes, if it's not too much work I'd welcome if you could repeat the -V1 (see EDIT) as well as the -V1 --cvbr auto test.

EDIT: I looked up your listening test again. It's not only the -V1 --cvbr behavior which isn't in line with the other results. After all you could ABX both -V2 results and were close to being able to ABX both -V0 results. From that it's astonishing that your plain -V1 result was quite a bit away from being able to ABX the issue.
lame3995o -Q1.7 --lowpass 17

lame3100k - bringing constraint VBR to Lame

Reply #39
BTW, this sample (Dear J) was partially made from lossy sources.

lame3100k - bringing constraint VBR to Lame

Reply #40
I looked up the first 4 seconds of -V1 --lowpass 18200 and -V1 --cvbr auto using --frameAnalysis. The lowpass internally triggered by -V1 --cvbr auto was necessary for plain -V1 in order to see that the number of  bits used for every granule was the same or higher with the --cvbr auto variant. It was. Especially the cvbr short block behavior and bit reservoir usage strategy could work optimally here: the situation was so that bitrate on short blocks could always be very high without running low of data space. Plain -V1 instead did run out of data space on occasion.
So from that everything seems to be fine.

I also tried to hear the issue, but didn't succeed. Distorted music isn't my thing, and my hearing isn't good anyway with the exception of specific issues.
lame3995o -Q1.7 --lowpass 17

lame3100k - bringing constraint VBR to Lame

Reply #41
BTW, this sample (Dear J) was partially made from lossy sources.

Why do you think that's from a lossy source? I used the lossless version for cutting and exported to flac.

...
So yes, if it's not too much work I'd welcome if you could repeat the -V1 (see EDIT) as well as the -V1 --cvbr auto test.

EDIT: I looked up your listening test again. It's not only the -V1 --cvbr behavior which isn't in line with the other results. After all you could ABX both -V2 results and were close to being able to ABX both -V0 results. From that it's astonishing that your plain -V1 result was quite a bit away from being able to ABX the issue.

Will try doing it before weekend.

...
I also tried to hear the issue, but didn't succeed. Distorted music isn't my thing, and my hearing isn't good anyway with the exception of specific issues.

Another suggestion hearing the issue would be encoding the sample to opus at 96kbps ([a href='index.php?showtopic=100447']used this version[/a]), sounds similar to what I hear - although with lame it's far less noticeable. Maybe it helps?

lame3100k - bringing constraint VBR to Lame

Reply #42
Why do you think that's from a lossy source?

Here's the spectrogram of the beginning of the sample:



So I think it's safe to assume that a lossy source was used (among lossless, maybe) to create this track.

lame3100k - bringing constraint VBR to Lame

Reply #43
Here's the spectrogram of the beginning of the sample:
...
So I think it's safe to assume that a lossy source was used (amond the lossless, maybe) to create this track.

The source was a original CD I bought. Copyed it with EAC to flac, nothing else done. As for editing used Audacity.
What program are you using for showing the spectogram?

lame3100k - bringing constraint VBR to Lame

Reply #44
I doubt it’s even possible for a spectral analyser to be broken enough and in such a way as to present a full-bandwidth signal as though it were a lowpassed lossy encoding, if that’s what you’re implying. CDs being sourced from lossy encodes is not a new finding and much more likely to explain this observation. We have several past discussions on this phenomenon if you are interested.


lame3100k - bringing constraint VBR to Lame

Reply #46
I'd like to know what exact setting are you particularly interested in? Maybe there's a more common interest in it, maybe your intention can match the --cvbr functionality.

Not much of an issue regarding your current settings, except for short block (atleast it's a subtle issue for me) which I came up comfortable with default short block values lowered a bit (470) from -V3+ to -V0+ I used from lame3100j.

lame3100k - bringing constraint VBR to Lame

Reply #47
So if I'd use 470 kbps for short blocks whenever I use 480 kbps ATM would this make you forget about --adbr_short?
I can easily do that.
lame3995o -Q1.7 --lowpass 17

lame3100k - bringing constraint VBR to Lame

Reply #48
So yes, if it's not too much work I'd welcome if you could repeat the -V1 (see EDIT) as well as the -V1 --cvbr auto test.

EDIT: I looked up your listening test again. It's not only the -V1 --cvbr behavior which isn't in line with the other results. After all you could ABX both -V2 results and were close to being able to ABX both -V0 results. From that it's astonishing that your plain -V1 result was quite a bit away from being able to ABX the issue.
Finished testing -V1 and -V1 --cvbr auto.
lame 3.100a2 -V1
Code: [Select]
20:36:14 : 01/01  50.0%
20:36:24 : 02/02  25.0%
20:37:52 : 03/03  12.5%
20:38:08 : 04/04  6.3%
20:38:29 : 05/05  3.1%
20:39:57 : 05/06  10.9%
20:40:38 : 06/07  6.3%
20:52:32 : 07/08  3.5%
20:53:11 : Test finished.

 ----------
Total: 7/8 (3.5%)

lame 3100k -V1 --cvbr auto
Code: [Select]
15:33:38 : 01/01  50.0%
15:33:47 : 02/02  25.0%
15:33:58 : 03/03  12.5%
15:34:07 : 03/04  31.3%
15:34:49 : 04/05  18.8%
15:35:26 : 05/06  10.9%
15:35:48 : 06/07  6.3%
15:36:28 : 07/08  3.5%
15:36:32 : Test finished.

 ----------
Total: 7/8 (3.5%)
This time did only 8 tests, but I ended up scoring the same results in both.
Hope it will help?

I doubt it’s even possible for a spectral analyser to be broken enough and in such a way as to present a full-bandwidth signal as though it were a lowpassed lossy encoding, if that’s what you’re implying. CDs being sourced from lossy encodes is not a new finding and much more likely to explain this observation. We have several past discussions on this phenomenon if you are interested.
It was never my intention saying that the analyser is broken. If you can tell me the name of this phenomenon or give a link, that would be nice.
Tested the CD with TauAnalyzer:


Spectrogram of the entire song (.wav):


Spectrogram of 60 seconds of the song (.wav):


Comparing the first 15 seconds of Dear J - wave(1.) and lame 3100k -V0 --cvbr9(2.)



Also uploaded a new version of the sample I used for last two spectrograms above: Download


lame3100k - bringing constraint VBR to Lame

Reply #49
I doubt it’s even possible for a spectral analyser to be broken enough and in such a way as to present a full-bandwidth signal as though it were a lowpassed lossy encoding, if that’s what you’re implying. CDs being sourced from lossy encodes is not a new finding and much more likely to explain this observation. We have several past discussions on this phenomenon if you are interested.

It was never my intention saying that the analyser is broken. If you can tell me the name of this phenomenon or give a link, that would be nice.

OK, I just wanted to check!  Which phenomenon do you want an explanation for? One is just a bad practice used during the preparation of certain CDs, so there’s no real pattern to it, nor an agreed-upon name. The other is related to how lossy encoders implement lowpass filtering over most of the input signal and only open the filter to allow through especially significant burts of high-bandwidth content: those are the spikes you see occasionally rising above the cut-off background, which I presume correspond to loud drums/cymbals being hit. As you can probably tell, I’ve never studied this form of filter in detail, so more experienced members could provide a much better explanation.