Hi guys! I got tired of generating filters with trace arithmetic in REW by hand, it can be quite the time-consuming process if you don't simply stop at eq'ing magnitude with simple iir filters. Room EQ Wizard is an exceptionally powerful tool, that if used to it's fullest potential, can give results that rival 500 dollars software, all for free, thankfully rew's api makes automating most of these workflows straightforward.
I decided to start a python based project that would allow me to just take measurements in rew and have a script automatically do all the arithmetic and operations for me to:
-Get spatially averaged measurements of each speaker across multiple seating positions cross correlation aligned with the central position (mlp) (up to 8 channels and 9 positions)
-Eq magnitude of tops in the modal region precisely (no fdw) and gently tone balance above the schroeder frequency by separating the direct sound from the room reflections using frequency dependent windowing.
-Magnitude EQ a subwoofer
-Optionally apply crossovers between tops and sub, either linear or minimum phase with different types and slopes if the user wants to
-Correct phase of tops by inverting excess phase in a way that will not result in audible pre-ringing artifacts (at the cost of some ms of delay)
-Correct group delay of the subwoofer with an algorithm that checks for pre and post ringing in the filter's impulse response and iteratively generates the filter until artifacts are inaudible (below a % threshold), while maximizing group delay correction
-Create an automatic virtual bass array (vba) filter to actively fight the primary room modes (sub needed for this)
-Volume match speakers
-Auto Time-Align speakers
-Auto Time align subwoofer to mains aiming for flattest system group delay
-Follow custom target curves
-Generate 32768, 65536 or 131072 taps filters in wav format for convolution in your favourite software.
The script by default is designed to automate all of the processes (highly recommend default settings!), but most of the parameters in each of the steps above is highly customizable to preference.
Today i decided to make it public but do note that it is a WIP and some interactions between the math in edge cases, e.g non-typical configurations, is still untested for.
The app relies on rew to be open and it's api server to be accessible. so before you start the app be sure to open rew and go to preferences - api and start the api server on the default port 4735, then open the app running "Run XPDRC.bat", you can then follow the setup wizard's instructions to take measurements of your speakers and have the program process them. Alternatively, if you already have measurements you made before and don't want to take them again, open the measurements.mdat file in rew and you can input the ids of the tops' measurements in the "main ids" section and of your subwoofer in the dedicated section.
I would love for you guys to check it out and give me your honest feedback, this is a passion project for me that i made to automate my workflow, it will always remain free to download and thinker with. I am completely self-taught from scratch and i do this to learn more than anything else.
Check it out on github at https://github.com/xPoiler/XPDRC
Do note that the software is meant for up to x.1 configurations, multiple subs are untested for, you might make it work if you match them beforehand manually but it's not intended.
I decided to start a python based project that would allow me to just take measurements in rew and have a script automatically do all the arithmetic and operations for me to:
-Get spatially averaged measurements of each speaker across multiple seating positions cross correlation aligned with the central position (mlp) (up to 8 channels and 9 positions)
-Eq magnitude of tops in the modal region precisely (no fdw) and gently tone balance above the schroeder frequency by separating the direct sound from the room reflections using frequency dependent windowing.
-Magnitude EQ a subwoofer
-Optionally apply crossovers between tops and sub, either linear or minimum phase with different types and slopes if the user wants to
-Correct phase of tops by inverting excess phase in a way that will not result in audible pre-ringing artifacts (at the cost of some ms of delay)
-Correct group delay of the subwoofer with an algorithm that checks for pre and post ringing in the filter's impulse response and iteratively generates the filter until artifacts are inaudible (below a % threshold), while maximizing group delay correction
-Create an automatic virtual bass array (vba) filter to actively fight the primary room modes (sub needed for this)
-Volume match speakers
-Auto Time-Align speakers
-Auto Time align subwoofer to mains aiming for flattest system group delay
-Follow custom target curves
-Generate 32768, 65536 or 131072 taps filters in wav format for convolution in your favourite software.
The script by default is designed to automate all of the processes (highly recommend default settings!), but most of the parameters in each of the steps above is highly customizable to preference.
Today i decided to make it public but do note that it is a WIP and some interactions between the math in edge cases, e.g non-typical configurations, is still untested for.
The app relies on rew to be open and it's api server to be accessible. so before you start the app be sure to open rew and go to preferences - api and start the api server on the default port 4735, then open the app running "Run XPDRC.bat", you can then follow the setup wizard's instructions to take measurements of your speakers and have the program process them. Alternatively, if you already have measurements you made before and don't want to take them again, open the measurements.mdat file in rew and you can input the ids of the tops' measurements in the "main ids" section and of your subwoofer in the dedicated section.
I would love for you guys to check it out and give me your honest feedback, this is a passion project for me that i made to automate my workflow, it will always remain free to download and thinker with. I am completely self-taught from scratch and i do this to learn more than anything else.
Check it out on github at https://github.com/xPoiler/XPDRC
Do note that the software is meant for up to x.1 configurations, multiple subs are untested for, you might make it work if you match them beforehand manually but it's not intended.
Last edited by a moderator:






Nice bit of work there 
