V5.20.10 Early Access

The plan is to create a FIR inverse filter to compensate for both the magnitude and phase response followed by matching of the left and right channels such that both the magnitude and phase looks similar. The spatial measurements (per channel) are constrained to a smal listening zone to derive an average response representative of the zone to be optimised. Because the responses change significantly with a small change in the spatial locations, the equalisation of an average response is required to minimise overfitting and overcompensating by the inverse filter. Granted, the dispersion of the impulse response is an issue in these types of environments and it helps if option exist to minimise it. I think it will be a great idea to also have an averaging function based on an RMS averaged magnitude and a vector averaged phase to see which works better in this case. I will appreciate it if you can consider it.
Forgot to mention that the phase equalisation and matching will be constrained mostly below 1 kHz because it seems to have more perceptual ramifications there.
 
The plan is to create a FIR inverse filter to compensate for both the magnitude and phase response
That would be really, really problematic. None of those measurements, individually or collectively, are useful for inverse filtering, they are just too heavily contaminated by reflections, some much larger than the direct sound. I think your best options might be to take the rms average, generate a minimum phase response from it and EQ that or use the vector average to generate EQ for the region below a few hundred Hz.

Here is how the Hybrid average looks in any case, noise and acausal content in the impulse response are only 25 dB or so below the peak, which is a big issue for filter generation:

53558



53556
 
That would be really, really problematic. None of those measurements, individually or collectively, are useful for inverse filtering, they are just too heavily contaminated by reflections, some much larger than the direct sound. I think your best options might be to take the rms average, generate a minimum phase response from it and EQ that or use the vector average to generate EQ for the region below a few hundred Hz.

Here is how the Hybrid average looks in any case, noise and acausal content in the impulse response are only 25 dB or so below the peak, which is a big issue for filter generation:

View attachment 53558


View attachment 53556
 
That would be really, really problematic. None of those measurements, individually or collectively, are useful for inverse filtering, they are just too heavily contaminated by reflections, some much larger than the direct sound. I think your best options might be to take the rms average, generate a minimum phase response from it and EQ that or use the vector average to generate EQ for the region below a few hundred Hz.

Here is how the Hybrid average looks in any case, noise and acausal content in the impulse response are only 25 dB or so below the peak, which is a big issue for filter generation:

View attachment 53558


View attachment 53556
Is the Hybrid average a combination of RMS average for magnitude and Vector average for phase? It sure looks that way to me from the screenshots:). The car environment is a very diificult environment to work with, your observations are correct, there are reflections which are larger than the direct signal, that is the nature of the car environment unfortunately. Frequency variable smoothing can be used to help deal the adverse effects of reflections and minimise overcompensation by the filter; it will be used before the inverse filter. Using a minimum phase for EQ in a car seems non ideal to me because of heavy reflections hence I wanted to try other options like the Magn phase Average or the new Hybrid average. The complex phase average seems like a sensible option to try out and there are several aritcles in the literature which explore this route, but I guess the proof is in the pudding:). Is the Hybrid average option available foe testing yet? Sorry to push and thanks for looking into this issue.
 
That would be really, really problematic. None of those measurements, individually or collectively, are useful for inverse filtering, they are just too heavily contaminated by reflections, some much larger than the direct sound. I think your best options might be to take the rms average, generate a minimum phase response from it and EQ that or use the vector average to generate EQ for the region below a few hundred Hz.

Here is how the Hybrid average looks in any case, noise and acausal content in the impulse response are only 25 dB or so below the peak, which is a big issue for filter generation:

View attachment 53558


View attachment 53556
Quick question. How did you generate the magnitude and phase response in one screen like that?
 
Here is how the Hybrid average looks in any case, noise and acausal content in the impulse response are only 25 dB or so below the peak, which is a big issue for filter generation:
I see the application of frequency smoothing in REW has no effect on the impulse response. Not that it will help much in this case but the application of smoothing could be one of the ways to minimise the noise in the impulse response. Is this a design decision not to do it this way?
 
5.20.10_AMD64 shows UMC1820 [plughw[1,0] for both input and output - it plays audio on outputs 1+2, but no visible input on Input1 even though alsamixer shows the gain is up to 0db, and the level is set a few db below clipping.
 
Is the Hybrid average a combination of RMS average for magnitude and Vector average for phase?
Yes. I have implemented it, I'm still mulling over whether it makes sense to release a build with it. Or whether to retain the Magn phase smoothing for that matter.
Quick question. How did you generate the magnitude and phase response in one screen like that?
That's just a capture of the SPL & Phase graph.
I see the application of frequency smoothing in REW has no effect on the impulse response. Not that it will help much in this case but the application of smoothing could be one of the ways to minimise the noise in the impulse response. Is this a design decision not to do it this way?
The time and frequency domains don't correspond in that way, there is no time domain equivalent to fractional octave smoothing. A constant bandwidth (in Hz rather than octaves) smoothing of frequency domain values is windowing in the time domain, the broader (more smoothed) the frequency domain window, the narrower the equivalent time domain window - the familiar effect of applying a narrow window to the impulse response. Low pass filtering (i.e. smoothing) in the time domain is low pass filtering in the frequency domain, it just cuts the bandwidth - consider the appearance of a sub impulse response, for example.

Much of what looks like noise in the hybrid averaged impulse response is just the time domain view of the combination of the hybrid average's magnitude and phase. It isn't noise, it's what an impulse response looks like to produce that combination of magnitude and phase. The operation to produce the magnitude and phase values is not physically realisable and the resulting impulse response is not causal. Contrast that with vector averaging, for example, which is the equivalent of averaging the impulse responses themselves.
 
5.20.10_AMD64 shows UMC1820 [plughw[1,0] for both input and output - it plays audio on outputs 1+2, but no visible input on Input1 even though alsamixer shows the gain is up to 0db, and the level is set a few db below clipping.
Any devices offered by the new provider would show PCM in their names.
 
Yes, pcm: pulse and pcm: default. I normally don't allow pulse audio to play with the multitrack interface because pulseaudio is kinda brain dead. That interface is normally reserved for ALSA. If I allow it in pulseaudio mixer, using either pcm interface in REW causing it to crash with no output
 
Could you use the Generate debug file option on the REW soundcard preferences and attach the file to see what is enumerated? The idea of the new provider is to directly access the ALSA PCM devices. It would also be helpful to see the REW log files, their location is shown in the About REW dialog. Ideally just zip and attach that REW log folder.
 
Yes. I have implemented it, I'm still mulling over whether it makes sense to release a build with it. Or whether to retain the Magn phase smoothing for that matter.
I could test it if you have it implemented in a separate (test) build.
 
UMC1820 generates output but no input.
pcm-default just crashes the program
 

Attachments

This screenshot is with V5.20.11 on Windows 10, when using file playback. I don't recall the Choose a ref output remaining on screen before?
53650
 
This screenshot is with V5.20.11 on Windows 10, when using file playback. I don't recall the Choose a ref output remaining on screen before?
It shouldn't be there, before it was hidden by the sweep waveform preview. I'll fix it for the next build.
 
I appreciate a lot this evolution :
Pro upgrade: RTA input level calibrate button allows calibration of the full scale input voltage for any or all of the current input channels

But, I notice a différence in behavior between RTA and Scope concerning this evolution.
Changing FS sine Preset in Scope updates FS sine Preset in RTA which is correct.
But changing FS sine Preset in RTA does not update FS sine Preset in Scope which seems to me not correct.
 
I notice a slight pb in signal generator square wave with the option « Band limits square wave samples ».
During Generator running, when « Band limits square wave samples » is not selectionned, we can change Duty Cycle in real time with immediat effect on the output signal (scope observation). All is OK.
(signal drawing in generator Window is not update but it is not the subject of this post)
During Generator running, when « Band limits square wave samples » is selectionned, changing Duty Cycle has no effect on the output signal (scope observation). It is not normal. Sometimes, there is a changement but with an old value. It depends on the manipulations before.
 
Thanks, I have fixed that. There will be a small delay though, since the whole sequence must be regenerated for the new duty cycle.
 
The files linked in the first post have been updated with bug fixes and some minor feature additions (listed in italics in the post).
 
Dear John,

I am inverting the windowed response over a target curve (Harman) with the new regulated vector division (I use 5 dB max regularisation, tried unticked/increased upper limit as well) and using the minimum phase version of that as the correction impulse. It results in near perfect correction but I cannot avoid an SPL drop in the very high frequency region (above 10 kHz) as seen in the orange line below. I tried to merge the inverted graph with a 0 dB flat target line at 5000 kHz and cut the correction there but even this results in a fixed drop of -3 dB in the HF region:

53711


I attached the zipped .mdat. Is there any way to avoid this drop?
 

Attachments

Are you using the latest build, updated last night? Here is what I get from using:

- Left default divided by target (no regularisation) to make A/B
- 1/A on that response with 8% regularisation and target level 3.6 dB
- A * B on Left default and 1/A

53713
 
I didn't have the latest version, updated now and with your suggested "inverse of inverse" trick, it all works beautifully now.

53714


Many thanks.
 
Back
Top