FSAF (Fast subband adaptive filtering) measurement

FSAF

Member
Joined
Oct 4, 2024
Posts
21
Interesting. I do not understand why ESS TD+N (~15 dB SPL) are so different from FSAF TD+N (~52 dB SPL) which are mostly noise. BTW, which 6" midrange driver?
 

dcibel

Member
Joined
Sep 10, 2017
Posts
293
Driver is a B&W FST.

ESS is able to resolve a much lower noise floor than FSAF. I highlighted previously, my own measurement below. Top traces are FSAF noise floor, bottom are sine sweep.

I do agree that @Tikkidy should have been able to achieve much better than 50dBSPL noise floor in his FSAF measurements.
1733158697373.png
 
Last edited:

FSAF

Member
Joined
Oct 4, 2024
Posts
21
I am confused. Maybe we are talking about different things using the same words. Did you try using pink noise (with the same power density and duration as ESS) as the FSAF stimulus and compare "apples-to-apples"?
 

dcibel

Member
Joined
Sep 10, 2017
Posts
293
It's been a while since I took these measurements, I checked and the FSAF measurement used a 15s music clip, however I believe this fact should be irrelevant for the comparison above. The comparison is from REW noise floor determination, which is the 2 second recording prior to the measurement occurring, so the noise floor is the noise floor regardless of stimulus. IIRC REW employs some variable windowing tricks to lower the noise level in a sine sweep measurement, I'm sure John can provide more detail on what differences exist.
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,115
I'm sure John can provide more detail on what differences exist
The sweep noise floor plot takes into account the process gain applicable to the sweep length so that the noise floor plot can meaningfully show where distortion rises above the noise.
 

Tikkidy

Member
Joined
Feb 22, 2019
Posts
55
Yes, it's a puzzle to me as well. In fact, when I first sent these to @FSAF with +36dB gain applied, there was so much noise, we could not reconcile what the problem was.

Another session testing, this time at day break.

This time Sweep 1M samples, no repetitions, no SPL normalization for mic distance.
vs Pink Noise, various IR lengths, various mic selector

This is the midrange from the B&W 801D4 (2022 release)

1733176378383.png


1733176642763.png
 
Last edited:

Tikkidy

Member
Joined
Feb 22, 2019
Posts
55
Thanks John for the software update to Beta 61:

This is another session with the new update.
Again 83dB@1m (ref. to 1KHz). This time I didn't bother to normalize to 1 metre- the SPL is absolute.

All recordings in this post were from the same session.

I have attached .MDAT to see if it helps us understand what is going on:


1733486361069.png




Here is a message I receive when I increase IR length to 900ms (or anything larger)

1733485674853.png





Here's the a full range Sweep using 1M samples. No repetitions.


Measure & preference settings:

1733487383456.png 1733487425676.png 1733487508212.png
1733487676052.png 1733487695434.png
 

Attachments

  • BW LF27677 FSAF REW 5.4b61.zip
    5.9 MB · Views: 2,110
Last edited:

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,115
Here is a message I receive when I increase IR length to 900ms (or anything larger)
The system being measured rolls off sharply below 200 Hz, its impulse response reaches the noise floor after about 250ms. Asking the processing to generate a much longer impulse response than the system has can lead to numerical ill-conditioning which in turn can lead to the Singular Value Decomposition function giving up, which produces that error.

I'm not sure what you mean by "understand what is going on". The measurements look fine to me. 100ms and 250ms are too short to capture the whole impulse response, but after that the TD+N is basically in the noise floor. That is as expected since the sweep measurement shows the distortion contributions are below the room's noise floor.

1733494780922.png
 

dcibel

Member
Joined
Sep 10, 2017
Posts
293
I think the question is simply why the noise floor SPL is rather high at 50dBSPL, a quiet room would expect background noise in the 20-30dB range assuming the SPL is calibrated. Tikkidy certainly is not measuring with poor performing equipment, Audient ID24 and B&K mic.

For example my own measurements show noise floor steadily decreasing towards 20dBSPL in the top octave. Different equipment obviously but this is an SPL calibrated result. But, I am not certain the "problem" is specific to FSAF, as @Tikkidy is also showing a nose floor in ESS measurement of ~20dBSPL, where I am achieving below 0dBSPL. Difference between ESS and FSAF noise floor is similar on my end, so I believe the problem is simply a high measurement noise floor or SPL calibration is off by an order of 20-30dB. Perhaps the problem is simply the mic input gain is set abnormally low?
1733497603520.png
 

Tikkidy

Member
Joined
Feb 22, 2019
Posts
55
USER ERROR yet again. :gah: Thanks to @dcibel for the tips, as well @JohnPM for previously mentioning about displaying measurements in terms of dBFS

1733558151792.png



1733532589042.png


Look at that!
Regardless of whether we use the Sweep (sine), or the FSAF noise (pink, white, or brown noise) or musical clips, it can reconstruct the frequency response!
Is it doing this with short period of noise at the start/end of the FSAF test?
Or some kind of voodoo mathematics beyond my undergrad training?


Any sufficiently advanced technology is indistinguishable from magic.
(A.C Clarke)


@FSAF
Now sir, would you like to have another listen to the B&W 801 D4 midrange with some music?

IMG_2206.jpeg

IMG_2207.png

Or with filters applied Eg. LR4 400Hz/4KHz?
IMG_2208.png

IMG_0305.png



And at what SPL (equivalent) shall I set it on. 80dB@1m, with +36dB gain applied, (like your previous tracks with the SB12PFC)


1733592922557.png
1733593052373.png


Or some other 'standard' eg. 85dB@1KHz/1m:


1733595242150.png


or 90dB@1Khz/1m:


1733595346040.png

We are moving slowly forward...

 
Last edited:

FSAF

Member
Joined
Oct 4, 2024
Posts
21
@Tikkidy : yes, please! I'd like to examine the recordings spk/mic, both ESS and FSAF for the same setup. Could you use noise and music, shaped to the same 400...4000Hz range with LR4? Please include a mic calibration recording with a 94dB SPL reference - if I am not mistaken, you have one.
 

dcibel

Member
Joined
Sep 10, 2017
Posts
293
@John Mulcahy , I've noticed when playing back an audio file, that the silent passages aren't silent. There is an abnormal level of "noise" playing back a file via REW's FSAF measurement that should otherwise be silent. It's easily seen in the input preview.
1733711463442.png



The file being played back here was generated from REW's generator with the following settings:
1733712392391.png
 
Last edited:

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,115
Triangular high pass dither is added to file data as required to ensure the excitation has sufficient HF energy for the FSAF processing.
 

dcibel

Member
Joined
Sep 10, 2017
Posts
293
Thanks John. I don't fully understand, but at least I know "it's not a bug, it's a feature". :)

It would be great if there was an easy way to bundle up an mdat file and the associated FSAF WAV files for the measurements contained in the .mdat. At some point I'm going to want to clean out the FSAF folder, but I definitely want to keep the residual files for certain measurements.

I think an easy solution for this would be via use of the "Set FSAF folder" button. Currently it asks if I want to move all previous FSAF residual files to the new folder location. If it included an option to move only the residual files for the loaded measurements would be perfect to help me organize the files.

Even better would be to allow setting a relative FSAF folder path, like ./FSAF so REW creates a sub-folder in the same directory as the MDAT file and locates all FSAF residual files there. This would make it a lot easier to keep the file system clean, remove old unwanted measurements and keep the ones you do. Saving relative folder path within the MDAT file would make it easy to send measurements with residuals to others in a ZIP, that could be extracted anywhere and played back via the "Play FSAF residual" button without manual process of copying residual files to the specific FSAF folder configured in REW.

Just some food for thought as I'm nearing 1GB of residual files, but only want to keep 10% of them. It's quite tedious to pull the files I want to keep out of the FSAF folder for a given MDAT file since the file names are encoded.

Perhaps a prompt when removing an FSAF measurement from REW to optionally delete it's residual files could help as well.
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,115
It's somewhat difficult to manage.

At the time a measurement is made it doesn't have a folder, it only exists in memory, so the residual and any other wave files would need to be saved elsewhere until such time as the measurement itself gets saved (if it gets saved). If FSAF files were in a subfolder moving an mdat file would break the link to the FSAF files.

Removing a measurement from REW doesn't delete any mdat file that contains the measurement so it wouldn't really make sense to delete any associated FSAF files unless the measurement had never been saved.

Leaving the raw residual in the mdat file would be easiest to manage, but would lead to very large mdat files. Compressing the data is problematic as residuals are quite noise-like and don't compress well. FLAC is the obvious lossless compression format but it doesn't support floating point data so isn't ideal.
 

dcibel

Member
Joined
Sep 10, 2017
Posts
293
It's somewhat difficult to manage.

At the time a measurement is made it doesn't have a folder, it only exists in memory, so the residual and any other wave files would need to be saved elsewhere until such time as the measurement itself gets saved (if it gets saved). If FSAF files were in a subfolder moving an mdat file would break the link to the FSAF files.
Yes, this is why I suggested a relative path to be saved such as ./FSAF instead of the full pathname, to avoid breaking links when MDAT files are moved or shared with others. As long as the MDAT and it's associated FSAF subfolder are kept together, all remains in tact.
Removing a measurement from REW doesn't delete any mdat file that contains the measurement so it wouldn't really make sense to delete any associated FSAF files unless the measurement had never been saved.

Leaving the raw residual in the mdat file would be easiest to manage, but would lead to very large mdat files. Compressing the data is problematic as residuals are quite noise-like and don't compress well. FLAC is the obvious lossless compression format but it doesn't support floating point data so isn't ideal.
Saving the residuals within the MDAT file would be perfectly okay with me, as long as there's an export option to save it externally as WAV. This would make it a lot easier to manage files, locate residuals and manage disk storage in my opinion.
 

Tikkidy

Member
Joined
Feb 22, 2019
Posts
55
I believe @FSAF believes that one of the purposes of FSAF is in the listening of the residuals. Currently when a file is saved, it doesn't save the residual in the .MDAT.
I second the idea to save it with the .MDAT. At the moment I save all my file to the cloud/network attached storage so I may access them on another machine that is not in the test-taking machine.

b) GB have never been more affordable. If people have limited with storage, perhaps the /temp folder could be specified, instead of having on the default boot drive...

Right now it breaks whenever I try to access it eg.

1733786592302.png
 
Last edited:

dcibel

Member
Joined
Sep 10, 2017
Posts
293
I realize storage is cheap, however I'd still like to utilize my storage effectively. As well, for sending files to others and posting online, we still have limitations around 10MB or 25MB in many places, so need to use cloud services for larger files beyond that.

FLAC does support 32bit integer data as a compression option. For 32bit-float compression, Wavpack could be an option:
 

Tikkidy

Member
Joined
Feb 22, 2019
Posts
55
@dcibel

1733855021719.png
Should we be saving a Measurement sweep at -12dBFS?

When we make a FSAF measurement with that sweep, would it go through another pre-gain stage? Suppose that I've have my system calibration such that -20dBFS gives me 2.83V at the speaker terminals...

1733854939260.png

Compare your headroom on your input meter... I think this is the reason why the noise floor is different between Sweep and FSAF measurements...
 

dcibel

Member
Joined
Sep 10, 2017
Posts
293
As long as the level and actual SPL on playback is what you want it to be, then the level of the audio file doesn't matter much. You can test for yourself, save two measurement sweeps from the generator at different levels and run them through FSAF, the frequency response will be the same to match equivalent ESS at the same output level. It is a bit confusing as it's not the actual SPL of the measurement in the resulting SPL chart.
1733880640247.png
 
Last edited:

Tikkidy

Member
Joined
Feb 22, 2019
Posts
55
Whether I use the measurement Sweep, or FSAF, using a file-saved ESS stimulus, or a FSAF with ESS stimulus, this time saved at +20dB louder than the previous setting- I get the same frequency response:

1733883657972.png



Looking at the noise floors shows something very different between the three:
1733883583215.png



If the boosted stimulus was actually LOUDER than the original, we'd expect more distortion. In this case, it is less TD+N.
1733883546858.png


My conclusion is that the level of the noise floor is affected the calculated TD+N. But all 3 recordings were done in the same session (after midnight :hush:


For those who like to see it in % (eg. ARTA, Steps)- the same graphs are presented below:

1733884401858.png


1733884502220.png


1733884558043.png



What's happening? Am I a Beta warrior or boo-boo maker?
 
Last edited:

dcibel

Member
Joined
Sep 10, 2017
Posts
293
Help me understand the amplitude levels in FSAF measurement and distortion tab.

I ran a FSAF test using M-Noise and 100Hz BU2 high pass. It shows a crest factor of 18.8dB. I set the level at -12dBFS, which to my understanding I would expect to be clipping the noise signal, however there's very little evidence in the measurement result that the signal was clipped.
1733881802764.png


Through the measurement I observed the input level preview which appeared around -35dBFS, and headroom is 21.2dB, 5dB different from the crest factor calculated for the file.
1733881836382.png


Given this level and the crest factor, I should see a peak level of around -16.2dBFS. However the peak amplitude on the FSAF distortion tab shows -7.3dBFS.
1733884235712.png


I then increased the input gain. Input level around -22dBFS and 8.9dB of headroom.
1733882352705.png


peak level shown in FSAF distortion tab is now +4.5dBFS.
1733884202555.png


How can the level be >0dBFS? I realize internal processing in REW is 32bit float, but we should be looking at input level of my audio interface 24bit ADC here, correct? Similarly, looking at peak SPL in FSAF distortion tab, this quick test completed around 75dBSPL actual level shows peak SPL of about 100dB in FSAF distortion, which is well above even the 18.8dB crest factor. I just find it surprising if the "talking level" audio playback was actually peaking at 100dBSPL.
1733884162469.png


I'm just trying to make sense of the actual levels being shown here. For comparison, I ran played back the same M-Noise file with RTA and "adjust RTA levels" option selected.
1733884298999.png
 
Last edited:
Top Bottom