Skip to content

xPoiler/XPDRC

Repository files navigation

If you like the app, you can support me at https://ko-fi.com/xpoiler any donation is highly appreciated, XPDRC will remain free to use forever!

XPDRC 1.3 Web DSP

Welcome to XPDRC, this application is an advanced digital signal processing filters generation tool with a web interface that communicates directly with the Room EQ Wizard API to extract raw impulse responses. By processing the native impulse responses generated by REW without intermediate text or waveform conversions, XPDRC generates zero latency minimum phase, or latency optimized linear phase/mixed phase filters for room acoustic correction.

The core philosophy of XPDRC is to provide the highest fidelity correction and phase adherence while meticulously avoiding artifact generation such as pre ringing, inversion ringing, or unnatural room field removal.

What XPDRC can do:

-Processing for up to 8 channels in 9 different positions

-Linear phase or minimum phase crossovers of various types and slopes.

-Magnitude correction below schroeder to mitigate room modes across all channels separatedly.

-Subwoofer magnitude eq.

-Quasi-Anechoic magnitude correction for mains above schroeder for tone balancing without dulling the sound.

-Excess phase inversion for the mains with ringing artifacts prevention algorithms. (Phase linearization).

-group delay eq for the sub with iterative ringing analysis to prevent pre and post ringing artifacts.

-Completely automatic Virtual Bass Array generation to minimize room modes (only if lfe channel is present).

-Auto volume matching of all channels.

-Auto or manual Time alignment of all channels.

-Auto or manual alignment of a subwoofer with mains (single subwoofer, for now).

-Filter generation from 32768 taps all the way to 131072 for maximum precision.

and more... settings and preferences can be easily changed by the user at all times via the local web interface available at localhost:5000, almost every single variable in the script can be changed from the ui, should the user wants to, we strongly recommend default settings for ease of use and best results in the majority of situations.

Installation & Setup

Getting XPDRC running is designed to be as simple as possible.

  1. Install Python: Ensure you have Python 3.10+ installed on your system.
  2. Clone/Download: Download the source code to your local machine or download the zip file from the releases section.
  3. Run REW: Ensure Room EQ Wizard (REW) is open and its API server is enabled (default port 4735).

IMPORTANT: For first time setup, go to REW's "analysis" tab and change "For imports set t=0 at impulse peak" to "For imports set t=0 at first sample", if you don't do this the math will not turn out as expected

  1. Launch: Double-click the Run XPDRC.bat file in the project directory.

The batch script will automatically:

  • Create a virtual environment (.venv) to keep your system clean.

  • Install all necessary dependencies (numpy, scipy, flask, etc.).

  • Start the application and open the interface in your default browser.

Manual Installation (All Operating Systems)

XPDRC can be run on any operating system (Windows, macOS, Linux) using the terminal:

  1. Open a terminal or command prompt inside the XPDRC folder.
  2. Install the dependencies:
    pip install -r requirements.txt
  3. Start the application:
    python app.py

How to use

Once the application is running, it will automatically open in your browser at http://127.0.0.1:5000.

Guided Setup

The easiest way to start is by clicking the "Run Setup Wizard" button. This wizard will guide you through:

  • Taking the required measurements in REW.

  • Automatically identifying speakers and subwoofers.

  • Setting up the basic processing parameters.

Manual Configuration

If you prefer manual control, you can:

  • Enter REW measurement IDs directly. (Make sure front speakers are 1 and 2, all other speakers can be in any order)

  • Adjust crossover frequencies, house curve boosts, and frequency limits.

  • Toggle advanced features and change their operation parameters.

IMPORTANT: Measurements should be made with a timing reference and not messed with inside REW (e.g. changing offsets manually), otherwise the script will throw errors or generate incorrect filters. Smoothing is supported.

Once configured, click "Generate Base FIR" (Phase 1) followed by the green generation button in Phase 2. The app will produce .wav impulse response files for each speaker you processed and a global EQ file for your convolver. You can find these files inside xpdrc's directory. Apply a global negative gain in your system to prevent clipping.

Documentation

For a comprehensive breakdown of exactly how the digital signal processing algorithms function mathematically, please refer to the Documentation page accessible directly within the web interface. The documentation details the default processing pipeline, including frequency dependent windowing, excess phase linearization, and iterative ringing analysis, as well as advanced toggleable features like Mixed Phase design and Kirkeby regularized spectral inversion.

Beta Disclaimer and Support

THIS APP HAS BEEN TESTED ONLY ON REW 5.40 BETA VERSION 116 and Version 118 other versions could face issues with filter generation

Please note that XPDRC version 1.3 is currently in Beta. While the core default settings of the digital signal processing generation pipeline are heavily tested, some features combinations might not work perfectly across all computing environments just yet.

Do note that depending your configuration, ringing artifacts could still be audible, the script does its best to limit it but being automatic and higly dependent on your measurements some of these decisions might be wrong, if this happens adjust parameters or disable phase linearization

If you encounter any anomalies or bugs, or if you simply have questions about how the algorithms work, please feel free to reach out. You can contact me directly at xpoileremmo@gmail.com.

About

Python and REW based advanced automated room correction software

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages