lossyWAV 1.2.0 makes use of libfftw3-3.dll for double precision FFT analyses. libfftw3f-3.dll is the single precision variant. lossyWAV >1.2.0 can use either (but not both). The request was made a while ago to allow the use be able to use both (not at the same time) - apparently single precision is faster (although not by very much at all from my testing).

I just tried 1.2.2.b -Z --adaptive on bibilolo (bibiloloEssence as before to be precise) and furious.

It's much better now but it's not hard to ABX (I ABXed the last 0.8 sec. of bibiloloEssence and the last 0.9 sec. of furious).It still sounds like spontaneously added low frequency noise or kind of rumbling.

Maybe -Z (without --altpreset) can't be really competitive qualitywise, but for bibiloloEssence it does take 433 kbps which IMO should produce a better quality in case everything works alright. So I think bibiloloEssence is a good sample for improving things.

I looked at the spectograms you gave for badvilbel, Nick. Isn't the noise up to 1 kHz a bit too strong? Loos like a frequency block of rather strong noise compared to other frequency regions, and at 1 kHz our ears are pretty sensitive. Just a thought.

I looked at the spectogram of the last 0.5 second of bibiloloEssence and that of the correction file.

For the last 0.5 sec. there's nearly no frequency content in the signal in the roughly 800 Hz to 7 kHz region. But quite a lot of noise is added in this range.This happens also earlier in the track with a pretty week signal contents up to roughly 700 Hz and no signal contents between ~ 700 Hz and 7 kHz, while pretty strong noise is added especially in the 1-2 kHz range where our ears are very sensitive.Maybe there can be special treatment for the sensitive range of roughly 1-3 kHz ensuring that SNR is always beyond a certain limit (if necessary by locally increasing SNR demands and/or by locally giving away noise shaping for the sake of a better SNR in this specific frequency range).

I am a bit tired now after returning from a vaudeville show but couldn't resist doing a quick listening test of 1.2.2.c -Z --adaptive on bibiloloEssence and furious.I'll repeat the test tomorrow, but for this quick test bibiloloEssence was fine.With furious however there's still some (small) problem. Within the last second there's an artefact again, this time more clearly to be described as a kind of clicking. It's not very obvious though.

I did not think before that it will be possible to have lossyWAV going to be transparent on difficult samples with a setting yielding an average bitrate way below 300 kbps. And now it looks as if you're not far away from achieving this, Nick. Chapeau!

I repeated last night's test, now doing it very carefully.But my result for bibiloloEssence is the same: it's transparent to me.The result is also the same for furious (as was expected): I can ABX the last second 10/10.

The only new thing is that I have the impression that what I described as kind of clicking in furious (or some other kind of spontaneous irregularity in the 'music') isn't necessarily an error produced by the lossyWAV machinery. I'm not totally sure but I hear kind of the same 'irregularity' in the signal, at a much lower volume. The 'irregularity' is stronger in the lossyWAV result, that's why it isn't transparent, but it still resembles the original.

So maybe this isn't an error in the new machinery but corresponds simply to the fact that we're at very low bitrate with -Z --adaptive for what we can expect for the lossyWAV process (and the result is good, just not perfect).For general use maybe the transparency border is at a little bit more demanding setting than -Z --adaptive.

Anyway in order to find samples worth while improving upon, and for optimizing lossyWAV, especially with respect to the adaptive noise shaping, I think it's appropriate at the moment to focus on -Z --adaptive.I'll do more listening tests within the next days.

Unfortunately my brother is watching something on the TV at the moment and my PC is in the same room so I haven't had a chance to test this sample properly but I did listen a bit at the difference between the original and what you get after -Z --adaptive and it sounds interesting. It's also amazing how well the added noise adapts to the signal, in this sample it's certainly well visible.

I installed the Fisher Price Digital Arts & Crafts Studio software on the family PC (my development machine....) and it crashes with boring regularity when .NET Framework 1.1 is installed. Unfortunately, that is required by Borland Turbo Delphi Explorer 2006 - my development environment. I am therefore trying to implement a fix which removes the dependencies on .NET 1.1 from my Delphi installation. No update tonight (unless I get through this much faster than anticipated).

@doccolinni: Can you tell a bit about at what second the issue arises?

Like I said, I couldn't test and listen to the sample properly, but I'll do it later tonight, so the reason why I linked to that sample was not because I identified an issue but because I thought it'd be a good sample for testing lossyWAV's noise shaping because of its complicated spectrum. I know that's not how things here usually work and I apologise if you expected there to be some issue I've already identified, but like I said I'll listen carefully to the sample later tonight and see if there are any identifiable artefacts.

Thanks - as I said in the change log, this is an interim step. I was using the data collated to produce the --freqdist spectrogram as the input to the adaptive noise shaping. This had 32 elements - which I think corresponds quite well with the blocky nature of your noise spectrogram. As an interim measure, I have interpolated this out to 128 elements and fed that output to the ANS algorithm. A better way would be to use a 256 sample FFT to collect the data for the input to the ANS algorithm. I will get onto this over the next few days.

I didn't start so bad with furious and thought I had a chance to ABX it though it was clear it was much harder than before. I arrived at 4/4 but got totally lost afterwards.As it's late now I'm going to repeat the test tomorrow. Just to be sure.

I repeated the test with furious using 1.2.2.d -Z --adaptive.I arrived at 8/10 which is not a valid ABX result - at least it is a questionable one.My both faults were with the 2 starting trials though, after that I was fine.

Taking it all together I think the result for furious is more or less on the edge of transparency - good enough for the portable quality setting.I can't tell about the differences towards the original, I just have the feeling when ABXing that there is a (subtle) difference.

I just want to comment on the "noise images". The "sharp responses" at high frequencies are not desirable. This doesn't reflect typical masking curves. The kind of noise shaping filter (frequency warped all-pole filter) is optimized to fit masking curves. Masking curves are typically rather smooth in higher frequency areas and can be quite selective (high frequency resolution) at lower frequencies. This is actually the point of using the frequency warping technique. The way Nick uses the filter right now doesn't seem to exploit that at all.

As for artefacts like clicks and pops etc this *could* be potentially explained by the exact mechanism Nick uses to switch from one filter to another. So, that's maybe a good place to look for the cause of artefacts. I specifically used a lattice filter structure for this reason. Lattice filters are quite stable when it comes to adapting the filter's parameters. But maybe there's a bug somewhere. To be honest I'm not completely sure about how changing the filter parameters interacts with frequency warping. It may be necessary to interpolate filters (over time) more smoothly. Nick, if you decide to do that you should convert the reflection coefficients to log-area-ratio (LAR) coefficients first, interpolate the LARs and convert them back -- or even better, interpolate the PSD curves and compute more than one set of filter coefficients for a block.