Skip to content

ObsessiveCompulsiveAudiophile/SubOptimizerGPU

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Multi-Subwoofer Time Delay & Polarity Optimizer (CUDA | Windows | NVIDIA GPU) A GPU-accelerated brute-force optimizer for aligning multiple subwoofers via relative time delay and polarity (inversion). This tool ensures optimal results by exhaustively evaluating all possible combinations within the specified delay range.

🚀 Key Features Brute-force precision: Exhaustive search guarantees the best alignment—no approximations or shortcuts.

GPU-accelerated: Optimized for memory coalescing and parallel execution on NVIDIA GPUs using CUDA.

Blazing fast: Near-instant results for up to 3 subs. With 4 subs, it can power through up to 1 trillion iterations in just a few hours on an RTX 3090 (Compute Capability 8.6).

Flexible resolution: Use fine delay steps (e.g. 0.1 ms) or coarser ones for faster results.

Human-hearing-aware optimization: Uses linearly weighted magnitude sums that approximate human hearing when REW exports use the PPO scale.

📦 Requirements Windows PC

NVIDIA GPU (Compute Capability 5.2 / Maxwell or newer — RTX 3000+ recommended)

CUDA 12.9

Visual Studio 2022 (for building from source) or use the included .exe

Subwoofer measurements exported from REW as .txt files

Tab- or comma-separated formats supported

Use 96 PPO for best results

All subwoofers must be measured at the same mic position with a timing reference

🛠️ Build Instructions To build from source:

Open the project in Visual Studio 2022

Set CUDA to version 12.9

Enable "Use Fast Math" in CUDA build settings

Build and run!

Or, just use the precompiled binary: multipleSubOptimizer.exe

📁 Input Files Export each subwoofer's frequency and phase response from REW (Export measurement as text). Measurements should be taken at the same mic position with timing reference.

👨‍💻 About This tool uses a deliberately simple (and "dumb") brute-force method, exploiting modern GPU speed to guarantee optimal alignment. While not elegant, it's effective and fast—especially on high-end NVIDIA GPUs.

Sample screen output:

--- Multiple Subwoofer (max. 4) Delay & Inversion Optimizer (GPU) ---

--- Configuration --- Enter desired parameters or press Enter to use defaults. Minimum frequency to analyze (Hz) (default: 15): 20 Maximum frequency to analyze (Hz) (default: 250): 250

Select Measurement File for Subwoofer 1 (or Cancel to finish) Loaded SW1: C:\Users\Ronin\Desktop\SW1o.txt (350pts)

Select Measurement File for Subwoofer 2 (or Cancel to finish) Loaded SW2: C:\Users\Ronin\Desktop\SW2o.txt (350pts)

Select Measurement File for Subwoofer 3 (or Cancel to finish) Loaded SW3: C:\Users\Ronin\Desktop\SW3o.txt (350pts)

Select Measurement File for Subwoofer 4 (or Cancel to finish) No more files selected. Proceeding with 3 subwoofer(s).

All subwoofers use a common frequency axis. Frequency Range: 20.0 Hz to 248.5 Hz Frequency Points: 350

Minimum delay (ms) (default: -20.0): Maximum delay (ms) (default: 20.0): Delay step (ms) (default: 0.1): 0.05 Maximum delay spread between any two subs (ms) (default: 20.0):

Using 801 delay steps from -2e+01ms to 2e+01ms with 0.05ms step. Using GPU: NVIDIA GeForce RTX 3090 Total combinations to check: 4,111,379,208 Launching kernel: 2624 blocks, 512 threads/block.

--- 3-Subwoofer Optimization Complete --- Host Wall Time: 3.304 s GPU Kernel Time: 3.304 s

Best Configuration Found: SW1 Delay: 15.250 ms, Polarity: Normal SW2 Delay: 15.650 ms, Polarity: Normal SW3 Delay: 19.000 ms, Polarity: Normal Avg SPL: 81.14 dB

Press Enter to exit.

About

Multiple subwoofer relative time delay and inversion optimizer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages