convolution room correction and room curve

linuxonly

Member
Thread Starter
Joined
Jul 27, 2024
Posts
112
More  
Preamp, Processor or Receiver
Logitech Z906
DAC
AMD FCH Azalia
Computer Audio
SPDIF output with alsa, pipewire, wireplumber on Fedora 40
Streaming Equipment
Kodi
Front Height Speakers
33 in
Middle Height Speakers
30 in
Rear Height Speakers
57 in
Video Display Device
X11/VGA + X11/DVI
How do your filters sound now?
First, louder. I gained 9 dB using that method, What a surprise.
Then, the stereo image is perfect. Bass response is more linear (sounds like e.g. Supertramp, School). Voice is clear, natural and well centered, Instruments sound like actually instruments and are easily spotted.
And the latency dropped so much that one can now watch videos using this filter.
From now on, I can't see how anything could be added to get it to sound better.

There is a psychoacoustic smoothing in REW. I didn't play with it yet.

Thanks a lot. That is amazing work, a piece of art!
 

moedra

Member
Joined
Mar 1, 2021
Posts
140
Thank you for this! I’ll give it a go first chance I get.

Questions...

I see your measurements start at 0Hz. Any concerns or advice on potential woofer damage? @linuxonly measurements start at 20Hz. Is this also acceptable?

Would you see any value to applying different smoothing to different parts of the frequency range. 1/3 octave smoothing above the “transition“ zone, for example.
Using your method and a bit of copy and paste to exported files, I think this could be accomplished.
No. That noise is not coming from my speakers. They drop out just below 40Hz. That sub response there is noise from the interface getting nabbed by the mic, if anything. The target is designed so that the filter gets rid of anything there anyway so it's alright.

Perhaps there is value in it. Personally I like the idea of Var smoothing, but the level of smoothing is too low in the highs and I don't like it. If I could have 1/12 in the lows and 1/6 in the highs I'd like it better. Acourate's psychoacoustic FDW of 15 cycles low and 15 cycles high is similar to REW's 1/12 smoothing.

Perhaps John could give us a smoothing blender for the Var type. Something that would allow us to choose a smoothing level for the two ends of the frequency spectrum and a way to control the frequencies at which the smoothing amounts start. For instance, when you look at Audiolense's Correction Procedure Designer, you are given a high and a low frequency and you can choose the FDW at each one of those frequencies. The area between is interpolated from one point to the other. I would love it if we could customize Var smoothing this way.
 
Last edited:

moedra

Member
Joined
Mar 1, 2021
Posts
140
First, louder. I gained 9 dB using that method, What a surprise.
Then, the stereo image is perfect. Bass response is more linear (sounds like e.g. Supertramp, School). Voice is clear, natural and well centered, Instruments sound like actually instruments and are easily spotted.
And the latency dropped so much that one can now watch videos using this filter.
From now on, I can't see how anything could be added to get it to sound better.

There is a psychoacoustic smoothing in REW. I didn't play with it yet.

Thanks a lot. That is amazing work, a piece of art!
Thanks. I have been working on this subject for a couple of years. Personally I don't think psychoacoustic smoothing is detailed enough in the bass. Maybe that is a personal preference. I think 1/12 smoothing sounds great, but as I said in my response to JStewart I wish we could customize the Var smoothing option. That way we could dial in 1/12 low and psychoacoustic high, for example, if we wanted to.
 
Last edited:

ddude003

Senior AV Addict
Joined
Aug 13, 2017
Posts
1,593
Location
Somewhere Northeast of Kansas City Missouri
More  
Preamp, Processor or Receiver
PrimaLuna Dialogue Premium TubePre (2 channel+sub)
Main Amp
McIntosh MC152 SS Amp (2 channel)
Additional Amp
Yamaha RX-A850 Pro (the other 5 channels lol)
DAC
Chord Electronics Ltd. Qutest
Computer Audio
MacBook Pro, Custom i7 7700k De-lid 2xAsus1080ti GFX, Audirvana Studio, Hang Loose Convolver, Tone Projects Michelangelo, Pulsar Massive & 8200, LiquidSonics, SoX
Universal / Blu-ray / CD Player
Sony UBP-X700 /M Ultra HD 4K HDR & PS5
Streaming Equipment
Netgear Nighthawk S8000 Streaming Switch, Lumin U1 Mini Streamer Transport
Streaming Subscriptions
QoBuz Studio Premier, Amazon Prime & Netflix
Front Speakers
Martin Logan ElectroMotion ESL
Center Channel Speaker
Martin Logan Motion C2
Surround Speakers
Martin Logan Motion 4
Surround Back Speakers
Martin Logan Motion 4 (yes, another set of these)
Subwoofers
Martin Logan Dynamo 700
Other Speakers
Cifte 12AU7 NOS & Genalex Gold Lion Tubes in Pre
Screen
Elite Screens Aeon CLR3 0.8 Gain 103-inch
Video Display Device
Samsung The Premiere LSP7T UST Laser Projector
Remote Control
PrimaLuna, Lumin iApp, Samsung & Yamaha
Other Equipment
ThrowRug, SaddleBlankets, WideBand & Bass Traps...
Nice work guys... And thanks for sharing your tutorial with everyone @moedra...
 

linuxonly

Member
Thread Starter
Joined
Jul 27, 2024
Posts
112
More  
Preamp, Processor or Receiver
Logitech Z906
DAC
AMD FCH Azalia
Computer Audio
SPDIF output with alsa, pipewire, wireplumber on Fedora 40
Streaming Equipment
Kodi
Front Height Speakers
33 in
Middle Height Speakers
30 in
Rear Height Speakers
57 in
Video Display Device
X11/VGA + X11/DVI

bixite

Member
Joined
Nov 30, 2022
Posts
17
Hey guys, I put the process into a tutorial. Take a look and share it if you know anyone who wants step by step instructions...
Hey there, I am doing FIR filter experiments for the last two months now and have tried out many different approaches - some found on the internet, some adapted, some own ideas. I am in the process of changing my preferred workflow basically once a week 😁 ... but it gets more and more elaborated.
Currently, I am mainly working with REW. I also tried out automatic filter creation with DRC (plugged into FusionDSP which is Volumio plugin).
Now, this thread and your work really inspired me! A huge Thank You for the fantastic approach and your documentation.
I found out the following:

  • Minimum Phase on the target does not work. When target and measurement are both minimum phase, the A/B arithmetic of REW leads to a result without an impulse response. This might be due to changes in the software (I don't know).
  • I found a way to build "mixed-smoothed" measurement instead of using the 1/12 smoothed data. Brand new, just today, it works, but I did have no time for extensive testing and listening. Basically, I am starting with 1/24 in the bass, moving to 1/12 in the mids up to 2kHz, switching to 1/6 from 2kHz up to 5kHz and using 1/3 smoothing for 5kHz and above.
I would be highly interested in some exchange.

Thanks again, kind regards and greetings from Hamburg
Bidjan
 

linuxonly

Member
Thread Starter
Joined
Jul 27, 2024
Posts
112
More  
Preamp, Processor or Receiver
Logitech Z906
DAC
AMD FCH Azalia
Computer Audio
SPDIF output with alsa, pipewire, wireplumber on Fedora 40
Streaming Equipment
Kodi
Front Height Speakers
33 in
Middle Height Speakers
30 in
Rear Height Speakers
57 in
Video Display Device
X11/VGA + X11/DVI
  • Minimum Phase on the target does not work. When target and measurement are both minimum phase, the A/B arithmetic of REW leads to a result without an impulse response. This might be due to changes in the software (I don't know).

Hi,

What do you mean by that? I tested this on 3 systems and here are my results. Did you make a MP version of the A/B result?

Capture d’écran du 2024-08-29 09-34-12.png Capture d’écran du 2024-08-29 09-24-54.png Capture d’écran du 2024-08-29 09-23-47.png
 
Last edited:

bixite

Member
Joined
Nov 30, 2022
Posts
17
Hi,

What do you mean by that? I tested this on 3 systems and here are my results. Did you make a MP version of the A/B result?

View attachment 73286 View attachment 73287 View attachment 73288
Thanks for the quick reply and the right question. I missed to generate a minimum phase version of the A/B results. I just tried out and now I have an impulse response. I will try out and check the differences (I achieved an impulse response when using the non-MP-target/L-MP.

It works and sounds good. I will do some measurements and more listening. When I generate minimum phase on the A/B results, does it still make sense to export the minimum phase version of the IR? Isn't this applying minimum phase to an already minimum phase filter?
 
Last edited:

linuxonly

Member
Thread Starter
Joined
Jul 27, 2024
Posts
112
More  
Preamp, Processor or Receiver
Logitech Z906
DAC
AMD FCH Azalia
Computer Audio
SPDIF output with alsa, pipewire, wireplumber on Fedora 40
Streaming Equipment
Kodi
Front Height Speakers
33 in
Middle Height Speakers
30 in
Rear Height Speakers
57 in
Video Display Device
X11/VGA + X11/DVI
Thanks for the quick reply and the right question. I missed to generate a minimum phase version of the A/B results. I just tried out and now I have an impulse response. I will try out and check the differences (I achieved an impulse response when using the non-MP-target/L-MP.
You're welcome. Glad you did.
It works and sounds good. I will do some measurements and more listening. When I generate minimum phase on the A/B results, does it still make sense to export the minimum phase version of the IR? Isn't this applying minimum phase to an already minimum phase filter?
Maybe you got a point. It does no harm though. IMHO it's just the export wav settings are undocumented. So going for the MP version seems the proper thing to do.
You could try to reimport the IR wav files and multiply them with the reimported original response MP to see whether you get MP results, you should

Capture d’écran du 2024-08-29 10-27-57.png Capture d’écran du 2024-08-29 10-27-28.png
 

bixite

Member
Joined
Nov 30, 2022
Posts
17
You're welcome. Glad you did.

Maybe you got a point. It does no harm though. IMHO it's just the export wav settings are undocumented. So going for the MP version seems the proper thing to do.
You could try to reimport the IR wav files and multiply them with the reimported original response MP to see whether you get MP results, you should

View attachment 73289 View attachment 73290
I will take some time to compare different variants with some math and listening.
 

bixite

Member
Joined
Nov 30, 2022
Posts
17
I will take some time to compare different variants with some math and listening.
I did some homework. I created 3 filter pairs. All used as input smoothed minimum phase frequency responses for L and R and a target curve with the same goal parameters in two versions (non MP and MP).
  • v1: Target-noMP/L-smoothed-MP (same for R), then Export as minimum phase IR (I did not generate MP-versions of the filters)
  • v2: Target-MP/L-smoothed-MP, then Export as minimum phase IR (I generated MP-versions of the filters since they do not have an IR after A/B)
  • v3: Target-MP/L-smoothed-MP, then Export as IR (I generated MP-versions of the filters since they do not have an IR after A/B)
Same for the right channel. Results so far:

Math: After Reimporting the filters and applying them to the frequency responses v1 provided smoother results than v2 and v2.

Measurements: After measuring v1, v2, v3 (L+R, L, R), v1 also looks better. The frequency response is closer to the target. The phase in the bass region looks better, the step response settles quicker. v2 and v3 are very similar to each other.

Listening: Just started, v1 is my current favourite, v2 and v3 are extremely similar

Any comments, hints very welcome!

P.S.: More testing required! My v1 does not smooth the way I wanted. I get 1/48 results where I expected 1/6 results. The MP-target seems to work differently in the trace arithmetic. I looked up the REW documentation:

"The result of arithmetic on measurements that have compatible impulse responses is smoothed using the measurement A smoothing, unsmoothed data is used during the calculations. Other measurements use whatever smoothing they already had applied during the calculations and the result is treated as unsmoothed (or 1/48 octave smoothed if data is 96 PPO)."

I need to do more testing here. I get different results with differently smoothed Targets (at least visually in REW).
 
Last edited:

JStewart

Senior AV Addict
Supporter
Joined
Dec 5, 2017
Posts
2,371
Location
Central FL
I found a way to build "mixed-smoothed" measurement instead of using the 1/12 smoothed data. Brand new, just today, it works, but I did have no time for extensive testing and listening. Basically, I am starting with 1/24 in the bass, moving to 1/12 in the mids up to 2kHz, switching to 1/6 from 2kHz up to 5kHz and using 1/3 smoothing for 5kHz and above.
Could you share your workflow to accomplish this?
 

moedra

Member
Joined
Mar 1, 2021
Posts
140
Hey there, I am doing FIR filter experiments for the last two months now and have tried out many different approaches - some found on the internet, some adapted, some own ideas. I am in the process of changing my preferred workflow basically once a week 😁 ... but it gets more and more elaborated.
Currently, I am mainly working with REW. I also tried out automatic filter creation with DRC (plugged into FusionDSP which is Volumio plugin).
Now, this thread and your work really inspired me! A huge Thank You for the fantastic approach and your documentation.
I found out the following:

  • Minimum Phase on the target does not work. When target and measurement are both minimum phase, the A/B arithmetic of REW leads to a result without an impulse response. This might be due to changes in the software (I don't know).
  • I found a way to build "mixed-smoothed" measurement instead of using the 1/12 smoothed data. Brand new, just today, it works, but I did have no time for extensive testing and listening. Basically, I am starting with 1/24 in the bass, moving to 1/12 in the mids up to 2kHz, switching to 1/6 from 2kHz up to 5kHz and using 1/3 smoothing for 5kHz and above.
I would be highly interested in some exchange.

Thanks again, kind regards and greetings from Hamburg
Bidjan
Did you follow the tutorial step by step verbatim here? I typed that up as I created a filter and it all works great and sounds amazing. However, if I missed something or made a mistake, let me know and I'll fix it.
 

moedra

Member
Joined
Mar 1, 2021
Posts
140
I did some homework. I created 3 filter pairs. All used as input smoothed minimum phase frequency responses for L and R and a target curve with the same goal parameters in two versions (non MP and MP).
  • v1: Target-noMP/L-smoothed-MP (same for R), then Export as minimum phase IR (I did not generate MP-versions of the filters)
  • v2: Target-MP/L-smoothed-MP, then Export as minimum phase IR (I generated MP-versions of the filters since they do not have an IR after A/B)
  • v3: Target-MP/L-smoothed-MP, then Export as IR (I generated MP-versions of the filters since they do not have an IR after A/B)
Same for the right channel. Results so far:

Math: After Reimporting the filters and applying them to the frequency responses v1 provided smoother results than v2 and v2.

Measurements: After measuring v1, v2, v3 (L+R, L, R), v1 also looks better. The frequency response is closer to the target. The phase in the bass region looks better, the step response settles quicker. v2 and v3 are very similar to each other.

Listening: Just started, v1 is my current favourite, v2 and v3 are extremely similar

Any comments, hints very welcome!
I remember during testing I had created filters with the raw no-phase target and it did not sound as good as the one made with a minimum phase target. Yet I am still interesting in hearing experiences from other people and perhaps improving the guide. I need to know specifics, though, so write down steps and changes you happen to make.

Having said that, however, I am comparing the filter made with my guide to a minimum phase filter created by Acourate. The two sound virtually indistinguishable from one another except for a miniscule (maybe 2%) difference in the target slope. It's hard to imagine beating Acourate.
 
Last edited:

bixite

Member
Joined
Nov 30, 2022
Posts
17
Could you share your workflow to accomplish this?
I tried out a lot of functionality within REW and found no way. But then came to an easy manual approach. I exported the measurement with different smoothings. From the exports (all .txt files) I took out the respective portions, combined them into a new .txt file and then imported this new file. Now, I need an expert who tells me which smoothing to use for which frequency span 😁
 

moedra

Member
Joined
Mar 1, 2021
Posts
140
You're welcome. Glad you did.

Maybe you got a point. It does no harm though. IMHO it's just the export wav settings are undocumented. So going for the MP version seems the proper thing to do.
You could try to reimport the IR wav files and multiply them with the reimported original response MP to see whether you get MP results, you should

View attachment 73289 View attachment 73290
In my tests, leaving the inverted responses as they were and exporting the wav with the min phase version radio button produced the best results. This is how I wrote it in the guide. Let me know if anything you find makes an improvement and I'll try it out myself. If it's just an extra step that doesn't make a difference, though, let's leave it out.
 

moedra

Member
Joined
Mar 1, 2021
Posts
140
I tried out a lot of functionality within REW and found no way. But then came to an easy manual approach. I exported the measurement with different smoothings. From the exports (all .txt files) I took out the respective portions, combined them into a new .txt file and then imported this new file. Now, I need an expert who tells me which smoothing to use for which frequency span 😁
I would use 1/12 low and 1/6 high. Put the switch somewhere around your room's transition zone.

I still think it would be great if John included a customizable Var smoothing model with interpolation.
 
Last edited:

bixite

Member
Joined
Nov 30, 2022
Posts
17
Did you follow the tutorial step by step verbatim here? I typed that up as I created a filter and it all works great and sounds amazing. However, if I missed something or made a mistake, let me know and I'll fix it.
Thanks for your reply. I followed your procedure. I stumbled upon the MP version of the target. When doing A/B with Target-MP/Smoothed-L-MP my result has no IR and thus cannot be exported as IR. Did you generate MP-versions of the filters? If so, why do you export an MP-version of an MP-filter? Is this not applying MP twice?

My workaround was to use the target without minimum phase. Then A/B with Target/Smoothed-L-MP generates a result with an IR. I just found out that this is NOT working the way I want because it applies the smoothing of the target to the result (which was 1/48). Now I could smooth the target, e.g. 1/12 , and the result would be 1/12 smoothed. Interestingly, the result looks different when the Target is minimum phase and the smoothing of B seems to play a role now ...??? I have to understand REW's trace arithmetic better ...
 

bixite

Member
Joined
Nov 30, 2022
Posts
17
In my tests, leaving the inverted responses as they were and exporting the wav with the min phase version radio button produced the best results. This is how I wrote it in the guide. Let me know if anything you find makes an improvement and I'll try it out myself. If it's just an extra step that doesn't make a difference, though, let's leave it out.
see my other reply - with A/B using Target-MP and Smoothed-L-MP the result has no IR (using REW 5.40 Beta 46)
 

bixite

Member
Joined
Nov 30, 2022
Posts
17
I remember during testing I had created filters with the raw no-phase target and it did not sound as good as the one made with a minimum phase target. Yet I am still interesting in hearing experiences from other people and perhaps improving the guide. I need to know specifics, though, so write down steps and changes you happen to make.

Having said that, however, I am comparing the filter made with my guide to a minimum phase filter created by Acourate. The two sound virtually indistinguishable from one another except for a miniscule (maybe 2%) difference in the target slope. It's hard to imagine beating Acourate.
I will do more testing tomorrow and over the weekend and let you know. Afer some listening v1 is not really better but a little sharper in the highs and that is because my intended smoothing has not been applied. I will make more attempts with using the MP-Target but at the moment do not get an IR result with A/B ... maybe I am missing something.
 

linuxonly

Member
Thread Starter
Joined
Jul 27, 2024
Posts
112
More  
Preamp, Processor or Receiver
Logitech Z906
DAC
AMD FCH Azalia
Computer Audio
SPDIF output with alsa, pipewire, wireplumber on Fedora 40
Streaming Equipment
Kodi
Front Height Speakers
33 in
Middle Height Speakers
30 in
Rear Height Speakers
57 in
Video Display Device
X11/VGA + X11/DVI
In my tests, leaving the inverted responses as they were and exporting the wav with the min phase version radio button produced the best results. This is how I wrote it in the guide. Let me know if anything you find makes an improvement and I'll try it out myself. If it's just an extra step that doesn't make a difference, though, let's leave it out.
Happy to clarify.

I did no test anything outside your method. I followed your method Target-MP / L Smoothed-MP (A/B = L Inv). Exported as wav with the MP radio button selected.

Everything else I said is only theory to determine why the poster had different IR than myself.
 

moedra

Member
Joined
Mar 1, 2021
Posts
140
Thanks for your reply. I followed your procedure. I stumbled upon the MP version of the target. When doing A/B with Target-MP/Smoothed-L-MP my result has no IR and thus cannot be exported as IR. Did you generate MP-versions of the filters? If so, why do you export an MP-version of an MP-filter? Is this not applying MP twice?

My workaround was to use the target without minimum phase. Then A/B with Target/Smoothed-L-MP generates a result with an IR. I just found out that this is NOT working the way I want because it applies the smoothing of the target to the result (which was 1/48). Now I could smooth the target, e.g. 1/12 , and the result would be 1/12 smoothed. Interestingly, the result looks different when the Target is minimum phase and the smoothing of B seems to play a role now ...??? I have to understand REW's trace arithmetic better ...
No, I didn't convert the inversions. I found that redundant as well. They are left as-is after the division, which is how I wrote the guide. The end result sounded better by doing it that way.

With regard to the target and smoothing, the responses are exported with 1/12 smoothing. When you bring them back in, even if they are divided by a 1/48 target, the data is still 1/12 because that is all the responses contain. I think you may need to update your version of REW. Use the newest beta and see if your experience is any different.
 

moedra

Member
Joined
Mar 1, 2021
Posts
140
see my other reply - with A/B using Target-MP and Smoothed-L-MP the result has no IR (using REW 5.40 Beta 46)
Something seems wrong there. When I do it, everything works fine. If it didn't, I wouldn't have written the guide that way.
 
Top Bottom