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: lossyWAV 1.4.2 Development (was 1.5.0) (Read 107916 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: lossyWAV 1.5.0 Development

Reply #50
Thanks for the cosmetic bug report. :D

I'll try to come up with a better description of the difference that the Hybrid shaping method brings soon.
lossyWAV -q X -a 4 -s h -A --feedback 2 --limit 15848 --scale 0.5 | FLAC -5 -e -p -b 512 -P=4096 -S- (having set foobar to output 24-bit PCM; scaling by 0.5 gives the ANS headroom to work)


Re: lossyWAV 1.5.0 Development

Reply #52
@Nick:
Quote
Thanks for the cosmetic bug report. :D
I'll try to come up with a better description of the difference that the Hybrid shaping method brings soon.
No sweat. It's truly amazing how you always come up with improvements for lossyWAV (already being an excellent audio compressor with outstanding sound quality, and the latest speed improvements are always welcome).
Thanks a lot for your continued efforts!


Re: lossyWAV 1.5.0 Development

Reply #54
downsample to 44100Hz automatically?
As this has noting to do with the lossywav topic, it would be better to use the search function or open a new topic in the foobar2000 -> general section.
Hint: processing -> DSP -> resampler
In theory, there is no difference between theory and practice. In practice there is.

Re: lossyWAV 1.5.0 Development

Reply #55
downsample to 44100Hz automatically?
As this has noting to do with the lossywav topic, it would be better to use the search function or open a new topic in the foobar2000 -> general section.
Hint: processing -> DSP -> resampler

Yep, figured that out with a quick search. Very impressed with lossyWAV so far.

Re: lossyWAV 1.5.0 Development

Reply #56
@Nick:
Code: [Select]
Expiry: n.b. This beta version expires on 26th of April, 2016
So far, obviously no one had/reported issues with v1.41j.
Wouldn't it make sense to drop the "drop-dead date" for a final version 1.42?

Re: lossyWAV 1.5.0 Development

Reply #57
That sounds like a plan.

I'll release one more beta (because of the current drop dead date) and then start final code tidy up prior to release of 1.4.2 in due course.

.... and done (well, the beta, anyway).

lossyWAV beta 1.4.1k attached to post #1 in this thread.
lossyWAV -q X -a 4 -s h -A --feedback 2 --limit 15848 --scale 0.5 | FLAC -5 -e -p -b 512 -P=4096 -S- (having set foobar to output 24-bit PCM; scaling by 0.5 gives the ANS headroom to work)

Re: lossyWAV 1.5.0 Development

Reply #58
Hint: processing -> DSP -> resampler

Actually, lossyWAV should be the final step - otherwise the carefully zeroed lsbs will probably become non-zero and the compression advantage (using the wasted-bits feature) would be lost.
lossyWAV -q X -a 4 -s h -A --feedback 2 --limit 15848 --scale 0.5 | FLAC -5 -e -p -b 512 -P=4096 -S- (having set foobar to output 24-bit PCM; scaling by 0.5 gives the ANS headroom to work)

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #59
Although the zip file's name is "lossyWAV_beta_1.4.1jk.zip", there's just "k" inside...  ;)
Thanks for the update and the positive outlook for a "non-drop-dead" version - and maybe it'll come "(...) with a better description of the difference that the Hybrid shaping method brings..."
Thank you very much Nick!

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #60
I have a query. I have been playing with lossywav to compare what could be done with it to produce an equivalent to  MQA ie essentially lossy 24/96. I can see that lossywav would compare favourably in terms of the size of files. Anyway I noticed that the settings only allow analysis up to 20,000 kHz. Is there any way to allow analysis higher since i know higher bitrates are supported. I tried creating a high pass filltered version of the file (>24KHz) and noted that lossywav produces exactly zero change since it analyses zero noise.

I do appreciate that doing anything over 20kHz is probably pointless since no one can hear over that frequency etc etc . But if we are allowed to put that to one side, and noting that higher sample rates are supported. Would it be possible to tweak the parameters to allow analysis up to 48 KHz and/or analsis only over 22/24kHz?

 If we assume that there is a market for compressed 24/96 for streaming, it would be nice if this could done in an open source way involving pure LPCM.

I have another query which was that when apply lossyway to a full range 24 bit recording and looking at the correction file I got a big hump in frequency  response   right in the most sensitive audible range and at around -100db. Maybe low enough in level not o be a problem, but this surprised me as I had expected there to be the least energy in the correction file in the most audible places. Have I misread this (very far from expert obvs)

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #61
Seems MQA does a good job already with creating a need.
Is troll-adiposity coming from feederism?
With 24bit music you can listen to silence much louder!

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #62
The frequency limit for analysis is the upper bound of the frequency band within which the lowest fft result bin is sought - this level is then used to determine how many bits can be removed (before the added noise exceeds a particular level).

Why would anyone want the low point in the signal's frequency distribution to be sought outwith the limits of human hearing?

Does the spectral shape of the correction file resemble that of the original? If so then the adaptive shaping would seem to be working.
lossyWAV -q X -a 4 -s h -A --feedback 2 --limit 15848 --scale 0.5 | FLAC -5 -e -p -b 512 -P=4096 -S- (having set foobar to output 24-bit PCM; scaling by 0.5 gives the ANS headroom to work)

 

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #63
The frequency limit for analysis is the upper bound of the frequency band within which the lowest fft result bin is sought - this level is then used to determine how many bits can be removed (before the added noise exceeds a particular level).

Why would anyone want the low point in the signal's frequency distribution to be sought outwith the limits of human hearing?

Does the spectral shape of the correction file resemble that of the original? If so then the adaptive shaping would seem to be working.
Sorry if i am being obtuse here. Obviously I understand that on a rational bit reduction program based on audibility, the entire band over 22khz (arguably lower) would removed. But if we can be allowed to go with the idea that one wants to allow the noise above 22Khz to be more efficiently packed as we would do in the sub 22Khz region, don;t we need to analyse the region over 22khz. I was hoping to work out a way of looking at the high passed file in isolation (so that we could apply different rules above and blow 22Khz.) If I try to do this at present I get no effect at all presumably because lossy way determines that there is no noise in the range it analyses.

ON the second part, perhaps i have misunderstood the meaning of the correction files spectrum. I had assumed that the spectrum of the correction file would equate to the spectrum of the noise which had been added to the original signal wav to get to the lossywav- and that one would hope that it would have least energy in the audible range (the correction file not the signal). Have I got this the wrong way round?

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #64
I think it's reasonable to allow a user to set any arbitrary frequency limit for the analysis if they wish. Without shaping it will dramatically reduce the number of bits that can be removed. With shaping, the reduction will not be quite so dramatic, but still significant. LossyWAV isn't removing anything above 20kHz (or whatever limit you set) - it's just swamping it in noise if the content above 20kHz is at a much lower level than the content below 20kHz (which is usually the case).

You can trick lossyWAV in to doing what you want (though it won't quite to the "proper" analysis, so don't use this for encoding, just to get a feel for what might happen). Take your 96kHz audio in to an audio editor (or other program) which lets you change the sample rate specified in the WAVE header without resampling the audio. Just say that it's 48kHz or 44.1kHz or 32kHz (this operation should be instant by the way - if you see a progress bar, it's resampling, which you don't want!), and re-save it. If you play it, it should  be at half speed. Now send the result through lossyWAV. If you went for 48kHz sampling, it will analyse up to 40kHz (thinking it's 20kHz). If you went for 32kHz sampling, it will analyse everything. See what happens. You can go back in to the audio editor and put the sample rate flag back to 96kHz to get a usable file if you want. Note that the analysis calculations within the real audio band will be "wrong" because you've forced lossyWAV to misinterpret the frequencies. Hence you might in theory introduce audible problems with this approach. It's just so you can have a play and see the kind of bitrates you would get if this was done "properly".

Cheers,
David.

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #65
. Note that the analysis calculations within the real audio band will be "wrong" because you've forced lossyWAV to misinterpret the frequencies. Hence you might in theory introduce audible problems with this approach. It's just so you can have a play and see the kind of bitrates you would get if this was done "properly".

Cheers,
David.
Thanks David. If I am using a  file high passed at 24khz or so before playing at half speed, then will the result be correct? At least there won't be an audioband to mess up.

Sorry if these questions seem dumb, or the task futile, but it seems to me that if as MQA presumes, there is a market fro streaming 24/96 files, then lossywav really could provide an open source way of doing it which should work much better with subsequent eqing than the somewhat opaque MQA process, and should work for anyone with a 24/96 dac.

What I am ideally tryig to work out is whether the file could be made to compress 24/96 to somethign like ordinary 16/44 (or 24/44)plus a variable bit rate version of the next octave with just enough snr to preserve whatver actual signal there is in that band. The end product may just be very well compressed 16/96 or 24/96. or perhaps a basic 16/44 file with another file which can be mixed with it.

My major concern is to work out how to get lossywav to analyse that addtional octave and apply noise based on the characteristic of that octave not the audible range.

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #66
I wonder if even a more predictable way for the filesize could be to simple use 16bit 96kHz with a noise shaped dither. I did no test for that but played with Shibatas SSRC, shape 2 and 16bit 88.2kHz. The files seem to be smaller as MQA'd.
Is troll-adiposity coming from feederism?
With 24bit music you can listen to silence much louder!

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #67
My major concern is to work out how to get lossywav to analyse that addtional octave and apply noise based on the characteristic of that octave not the audible range.

I'll produce a new beta with more flexibility applied to the "-l, --limit" parameter. Should be posted tomorrow morning.

I'll also see about adding a new adaptive shaping sub-method that will attempt to significantly reduce added noise in the audible range. Can't promise that for tomorrow though.
lossyWAV -q X -a 4 -s h -A --feedback 2 --limit 15848 --scale 0.5 | FLAC -5 -e -p -b 512 -P=4096 -S- (having set foobar to output 24-bit PCM; scaling by 0.5 gives the ANS headroom to work)

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #68
lossyWAV beta 1.4.1m attached to post #1 in this thread.
lossyWAV -q X -a 4 -s h -A --feedback 2 --limit 15848 --scale 0.5 | FLAC -5 -e -p -b 512 -P=4096 -S- (having set foobar to output 24-bit PCM; scaling by 0.5 gives the ANS headroom to work)

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #69
Wow thanks very much

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #70
No problem..... :)
lossyWAV -q X -a 4 -s h -A --feedback 2 --limit 15848 --scale 0.5 | FLAC -5 -e -p -b 512 -P=4096 -S- (having set foobar to output 24-bit PCM; scaling by 0.5 gives the ANS headroom to work)

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #71
Dear HA folks, I see  sundance asked about  "...a better description of the difference that the Hybrid shaping method brings..." I am interested in the understanding of this thing too. Could somebody bring this?
Thanks.

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #72
Could somebody bring this?

Only me, I'm afraid (until I publish the source when 1.4.2 is released)....

Basically the existing adaptive noise shaping method creates a "desired noise shape" from the FFT results of the 1.5msec and 20msec FFT analyses, using an increasing proportion of one / decreasing proportion of the other as frequency increases.

What the hybrid method does is to take into account FFT results from all analysis lengths carried out - and adds them together (there is some stretching involved for all but the longest FFT).  The order in which additional FFTs are introduced (by the -a, --analyses parameter) has been reversed so that the 10msec FFT is the first additional one added - this seems to improve the shape of the noise introduced by the adaptive shaping.
lossyWAV -q X -a 4 -s h -A --feedback 2 --limit 15848 --scale 0.5 | FLAC -5 -e -p -b 512 -P=4096 -S- (having set foobar to output 24-bit PCM; scaling by 0.5 gives the ANS headroom to work)

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #73
Thank you Nick.C!
If I use 1,4,1m with command line  '--quality high' Is that option still the best recommended setting for this level of quality or I can improve the quality by adding force hybrid shaping to the command line? 

Re: lossyWAV 1.4.2 Development (was 1.5.0)

Reply #74
If I am using a  file high passed at 24khz or so before playing at half speed, then will the result be correct? At least there won't be an audioband to mess up.
Your highpassed file has little or nothing in the audioband, hence the noise floor in the audioband is exceptionally low. Hence lossyWAV probably won't remove any bits, as it will attempt to preserve that artificially low noise floor. Hence highpassing the file isn't going to tell you anything useful about the ultrasonics because the very act of highpassing the audio stops lossyWAV from doing anything.

Quote
Sorry if these questions seem dumb, or the task futile, but it seems to me that if as MQA presumes, there is a market fro streaming 24/96 files, then lossywav really could provide an open source way of doing it which should work much better with subsequent eqing than the somewhat opaque MQA process, and should work for anyone with a 24/96 dac.
Neither dumb nor futile. You can certainly use lossyWAV to preserve 96kHz audio at lower bitrates without introducing the 22.05Hz filtering that the inventors of MQA believe is so terrible.

Be careful if you try to copy some of the other ideas from MQA though - there are patents. I haven't read them carefully enough to give an opinion, and IANAL.

Cheers,
David.