Skip to main content

Topic: Fixed the Furious sample (Read 3679 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • shadowking
  • [*][*][*][*][*]
Fixed the Furious sample
Hello David,


I was playing around yesterday trying to understand the compression behavior of furious sample. In lossless mode it using the high modes it doesn't show anything abnormal. Joint stereo -j1 does improve it a bit - not as dramatic as fast or normal mode.  I recall you said in the past that joint stereo effect with high modes is more limited (esp -hh).

However in the lossy mode furious which is said to be near mono shows a strange behavior. L/R stereo -j0 which works very well in most samples causes a steep decline in S/N readings and also perceived quality. I don't know why but I decided to play with the -cc option and suddenly it worked !  but in reverse ? !  as -cc is supposed to favor compression a bit over quality.  Here -cc solves the bug or abnormality. What do you think?  . I posted the result:

C:\stuff\music\abx\artificial>wavpack fur*.wav -yhhj1 -nb350 -c

WAVPACK  Hybrid Lossless Audio Compressor  Win32 Version 4.60.1
Copyright © 1998 - 2009 Conifer Software.  All Rights Reserved.

ave noise = -67.12 dB, peak noise = -51.77 dB
created Furious.wv (+.wvc) in 0.30 secs (lossless, 55.04%)

C:\stuff\music\abx\artificial>wavpack fur*.wav -yhhj0 -nb350 -c

WAVPACK  Hybrid Lossless Audio Compressor  Win32 Version 4.60.1
Copyright © 1998 - 2009 Conifer Software.  All Rights Reserved.

ave noise = -56.32 dB, peak noise = -40.69 dB
created Furious.wv (+.wvc) in 0.22 secs (lossless, 47.91%)


C:\stuff\music\abx\artificial>wavpack fur*.wav -yhhj0 -nb350 -cc

WAVPACK  Hybrid Lossless Audio Compressor  Win32 Version 4.60.1
Copyright © 1998 - 2009 Conifer Software.  All Rights Reserved.

ave noise = -64.93 dB, peak noise = -50.78 dB
created Furious.wv (+.wvc) in 0.18 secs (lossless, 53.88%)
wavpack 4.8 -b4x4s0.75c

  • bryant
  • [*][*][*][*][*]
  • Developer (Donating)
Fixed the Furious sample
Reply #1
Sorry for the long delay in getting to this; I have been working on some other, less fun, projects.... 

After looking at this a little, it does seem to make sense. The thing to keep in mind is that WavPack has two different mechanisms to take advantage of correlation between the stereo channels. The first is joint stereo where we convert left+right to mid+side and encode those instead. In the fast and normal modes that's the only method we use and the channels are completely independent after that point. However, in the higher modes we do additional decorrelation between the channels because even after conversion to M/S there's still usually significant correlation between them.

For the hybrid mode things are a little different. That cross-channel correlation still improves compression beyond M/S encoding, however I found that it often resulted in more noise in the lossy portion. I never really figured out why, but it seemed that quantization noise might be leaking between the channels, or some other weird thing was going on. In any event, I decided to eliminate that cross-channel correlation in hybrid mode, but make it available as an option with the -cc switch (because it did usually improve the compression ratio).

The furious sample is, as you say, almost mono, so all cross-channel processing is going to make an improvement. Joint-stereo is enabled by default, and so that does a decent job. If you force that off in hybrid mode with -j0, however, you are turning off all such processing and that's the worst possible situation for this sample. Enabling cross-channel decorrelation with -cc fixes it again (almost as well as joint stereo), as you saw.

I'm not sure why you would want to force off joint stereo because I think it usually makes an improvement in quality, and certainly with pop music that has a strong component mixed to center that helps mask noise. But if you do, it certainly makes sense to use -cc to get at least some cross-channel correlation (as this sample certainly shows).

Thanks for posting this...it gave me an excuse to go through old archives looking for that sample! 

  • shadowking
  • [*][*][*][*][*]
Fixed the Furious sample
Reply #2
Hello David,

Thanks for your explanation. it makes more sense now. I did some testing and as you said enabling the cross-channel correlation show a bit worse noise using the -n switch on average, But its usually nothing ( less than 1db) , some samples were neutral and others actually did better with -cc .  I did some brief listening tests with -hhc and -hhcc --use-dns and I think I like -cc better ! ?

Also I read a post where Ghido told you Optimfrog doesn't use joint stereo because his decorrelation is that good. I also read that monkeys audio use something similar.  I started to use -hhj0cc as I can get joint stereo like advantages without having it on all the time and -hhx1 takes twice as long. So far its working great. What do you think ?
wavpack 4.8 -b4x4s0.75c

  • bryant
  • [*][*][*][*][*]
  • Developer (Donating)
Fixed the Furious sample
Reply #3
Well, the only thing that comes to mind is that for lossless compressors there really is no fundamental difference between incorporating joint stereo (technically, encoding M/S) and doing the cross-channel correlation later. Whatever gets the most compression is best.

However, with lossy encoding there is a big difference because the resulting quantization noise follows the channel coding. So, for example, if you had a recording that was almost mono (like a solo instrument or centered vocalist) and you encoded this as true stereo, the quantization noise would end up panned hard left and right, where it would be easy to hear. On the other hand, if you used M/S coding, most of the noise would end up centered too, where it would be easily masked by the source. Of course, in a recoding where there was little or no correlation between channels (e.g., Beatles, or orchestral recordings with lots of reverb) then the opposite would be true.

That's why I would think that the -x modes make the most sense for this because the best encoding mode (L/R or M/S) is chosen on a per block basis based on the material. Of course, it does take extra time and if L/R encoding sounds better to you then I'm sure that's fine. But yeah, I would use -cc in that case to make sure you're taking advantage of some cross-channel correlation.

  • shadowking
  • [*][*][*][*][*]
Re: Fixed the Furious sample
Reply #4
Hello David,

So far I am very pleased with -cc along with the high modes. Is it possible to add an override switch in addition to -cc , but this new switch won't generate the .wvc files? 
  • Last Edit: 18 April, 2016, 09:48:35 AM by shadowking
wavpack 4.8 -b4x4s0.75c

  • bryant
  • [*][*][*][*][*]
  • Developer (Donating)
Re: Fixed the Furious sample
Reply #5
Hi shadowking,

I'm glad those settings are working out for you!

Yeah, I think I could add a --cross-correlation option to do what you want. The -cc switch also overrides the noise shaping, but you've already taken care of that with -s, so it should be identical (except you won't have to delete the .wvc files).

I'm already pretty far along with the 5.0 version and probably will not make any changes to 4.80 (it's been almost a month since the official release and have not heard anything), so I'll probably just throw this into the first 5.0 alpha.

Thanks again for the feedback!



  • bryant
  • [*][*][*][*][*]
  • Developer (Donating)
Re: Fixed the Furious sample
Reply #6
The 5.0.0-alpha release has the --cross-decorr option added.

  • shadowking
  • [*][*][*][*][*]
Re: Fixed the Furious sample
Reply #7
Thanks David. I'll test and let you know .
wavpack 4.8 -b4x4s0.75c