XO filters collapse soundstage

Tavy

New Member
Thread Starter
Joined
Jun 1, 2026
Posts
8
Hi,

I picked up an XO license today because the workflow looked a lot simpler than REW, and I was curious to see whether TTD could improve my ProAc stereo setup. I tested the filters in Roon.

For measurements, I used an Eversolo MC-01 mic with calibration file and an R26II DAC with ASIO4ALL. As far as I can tell, the measurement side is working fine because the rating comes back excellent.

The problem is that every filter I generate seems to narrow the soundstage quite a lot, with the instruments collapsing toward the center.

Does anyone know what might be causing this?

In REW, it’s pretty straightforward to use one channel as the timing reference, but in XO I’m not really sure how time alignment is meant to be handled.

I haven’t tried multiple measurements per channel yet, since I first wanted to see what the default workflow would do.

One more minor question: is there any way to create a Harman-style target curve without entering it manually? For example, can XO import it from a text file?

Thanks in advance for any suggestions.
 
Is you system fully active or passive? What type of filters did you try? TTD, minimal XO, FR only? did you try partial correction? Is your room treated? Is there a sub in the system?
In my experience the more the room is acoustically treated the less the filter power you need. Try using less powerful filters and/or limiting the frequency of correction. TTD can create an amazing phantom center but limit sound-stage, in my experience.
 
I’m running a stereo passive setup (ProAc DT8 + Yamaha A‑S2200). I tried all the default filters and they all sounded pretty much the same, especially in terms of soundstage. Now I’m tweaking a partial correction filter — it’s definitely better, but still not quite where I want it. I’d also like to try a Harman‑style target, but I couldn’t find any version of it in the app (there’s no built‑in target either). Does anyone know if it’s available somewhere, or do I have to add it manually?
 
Do you know if it is possible to generate a filter as follows?

I take five measurements on the left channel (L1–L5) in different position.
I take five measurements on the right channel (R1–R5) in different position.
Then I create the filter with separate corrections for each channel, since the positioning is not perfectly symmetrical and the low-frequency response is different.

If I use the "Speaker by speaker" setting during the measurement, will the end result be similar to having a separate filter for each channel?
 
Try a minimum phase filter and let us know how it sounds. Also, you could try something with Q-sound to double-check.
 
I’ve tried a minimum-phase filter, but no real improvement so far—the soundstage is actually getting worse compared to the original. I’ll give it a few more days before deciding. I’m also waiting for answers to my earlier questions—maybe they’ll point me in the right direction… or confirm it’s not what I was looking for 😄.
 
Do you know if it is possible to generate a filter as follows?

I take five measurements on the left channel (L1–L5) in different position.
I take five measurements on the right channel (R1–R5) in different position.
Then I create the filter with separate corrections for each channel, since the positioning is not perfectly symmetrical and the low-frequency response is different.

If I use the "Speaker by speaker" setting during the measurement, will the end result be similar to having a separate filter for each channel?
I am not a 100% sure what you mean. But you could make several measurements and have AL average the response. As for the curve, I am not aware of a way to upload a curve via text file or something like that. At any rate it is usually advisable to have the curve run (hug) close to your actual response. Hope that helps.
 
Ok, thanks. I was hoping I could download the Harman curve from the internet and upload it like I did in REW, without manually entering the data—or at least paste it directly into the chart. I might end up doing it manually, but I’d rather sort out the more important things first.
 
Do you know if it is possible to generate a filter as follows?

I take five measurements on the left channel (L1–L5) in different position.
I take five measurements on the right channel (R1–R5) in different position.
Then I create the filter with separate corrections for each channel, since the positioning is not perfectly symmetrical and the low-frequency response is different.

If I use the "Speaker by speaker" setting during the measurement, will the end result be similar to having a separate filter for each channel?
The normal approach has been proven to work for nearly 20 years now. There’s no point in second-guessing it. Unless you want to trade the best possible result in the sweet spot with improved sound in other seats, one single all-in-all measurement is the best approach.

It is normal that sound stage becomes more narrow when the speakers are corrected with this level of precision. But it is far from a collapse. It gets sharper both in depth and width.

Unless q-sound or similar effects have been added to the mix, the recorded sound stage width does not exceed the distance between the speakers.

The wide sound stage you are accustomed to may come from asymmetric reflectioms from the side walls and therefore a weak correlatiom between left and right speaker+room. This can create a sound stage that reaches outside the speakers and discrimimates poorly between different ambiences.

Did you try q-sound? If Q sound works, Audiolense is locating the sound as it has been recorded. And if you want a wider sound stage you can increase the distance between the speakers.
 
Thank you for the reply!
As a classical music lover, I have a few reference recordings where I can pinpoint the exact square inch each musician occupies on stage. Because of this precise imaging, I’d like to think my room reflections aren't completely fooling my ears just yet.
When I built my current filters in REW, I went full "mad scientist" mode: 9 measurement points around the sweet spot for each channel, carefully time-aligned, which gave me the solid result I have today. Naturally, I tried to replicate this exact recipe in Audiolense, hoping that TTD (True Time Domain) correction would work its magic and elevate my soundstage even further.
Right now, the result is quite the opposite—my orchestra sounds like it took a wrong turn on the way to the venue. However, I know Audiolense is a powerful beast with a notoriously steep learning curve (and documentation that leaves a bit to the imagination). I am fully prepared to take this step-by-step.
I’m sure many advanced users here have survived these exact same growing pains and can point me in the right direction. I hope I’m not breaking any forum rules or wearing out my welcome with questions that might seem elementary to a veteran.
Thanks again for your patience and help!


 
I had similar issues. For me an improvement in room treatment, qrd diffusesers+spacing from the wall of the early reflection panels, improved the time domain of the sound. Then I could let up full TTD and move to minimal xo with with partial correction. For music that has many instruments or is just sonicly dense like orchestra or progressive rock I correct up to 5khz. For Trios and such sometimes up to 700hz is fine. You got an impressive setup, what is your source? where does the convolution happen?
 
I’m also limiting correction to below 500 Hz, deliberately leaving the upper frequencies untouched, as the speakers already deliver excellent linearity along with a very natural, coherent timbre that I’d rather preserve than “optimize” into something else. 😄

The system chain is currently: Eversolo T8 streamer → USB out → Gustard U26 DDC → I2S out → Gustard R26 Mk2 DAC → XLR → Yamaha A-S2200 → ProAc DT8.
On the source side, I’m running a Roon ROCK server on an Intel i7 NUC, housed in a fanless chassis with an 8 TB SSD. Streaming sources are Tidal and Presto Music.

One of the T8’s strong points is its support for convolution filters, which becomes particularly valuable when dealing with streaming sources—especially those that can’t be natively integrated into Roon (Presto Music being a good example). I also have convolution filters configured in Roon and enable them when needed—particularly for DSD files, as the T8 cannot process these due to its limited CPU power.

At this stage, I’m still in the process of exploring what AI can—and just as importantly, cannot—bring to the table. It’s a fairly time-consuming exercise, and as usual, time isn’t always on my side. Still, that’s to be expected: with tools this capable, there’s always a learning curve involved… and occasionally the illusion that we’ve already mastered it. 😉
 
Sounds like a timing/alignment issue. If XO is getting the phase relationship wrong between channels, it can definitely collapse the soundstage. I'd try taking separate measurements for each speaker and check the delay values before generating filters.

Also, for target curves, I believe you can import them from a file, but the format needs to match what XO expects.
 
Hi everyone,
I’ve finally managed to make some real progress, step by step. I am now getting excellent results and can truly appreciate the capabilities of the software, which I could only guess at when I first purchased it.
The first issue I resolved—and the one that caused all my initial headaches—was hardware-related. I have a high-spec laptop running Windows 11, but it simply doesn't play nice with ASIO 2.0. I was getting constant dropouts, even if they weren't always flagged by the software. Luckily, I have another laptop running Windows 10, and when I switched to that one, everything worked flawlessly.
For the calibration, I took 3 measurements: one at the main listening position (sweet spot) and two others at 20 cm to the left and right. I used the Eversolo EM-01 microphone pointed vertically, applying the 90-degree calibration file. Note that I didn't add a 3 dB boost/weight to the sweet spot; all measurements were given equal weight. The first measurement was "all-in-one", and the other two were "speaker by speaker" (I'm not entirely sure if this is the standard approach, but it was the only way I managed to group them correctly 😊).
After that, I created a target file based on the Harman curve, which I am quite used to (I know target curves are subjective, but it sounds great to my ears 😊). I have attached my target file here in case anyone wants to check it out or try it. After several listening sessions, I settled on mix-phase 20-60. For the filters, I kept the default TTD values, used the multi-speaker setting, an intermediate frequency of 150 Hz, and a maximum correction of 9 dB.
I generated the filters for two different setups:
• For Roon: ZIP format (65k, all samples).
• For the Eversolo T8: BIN + CFG format. I noticed that when using WAV files, the DSP inside the T8 severely limits the filter length. However, using the pre-compiled BIN format, it runs flawlessly at 10k taps. This is a massive win, considering that Eversolo's stock settings usually limit you to 2046 taps per channel.
The whole process took a few weeks (as expected), but it was absolutely worth it. Next, I plan to see how I can push the performance even further, but I am already extremely happy with what I’ve achieved so far.
I look forward to hearing your thoughts and suggestions—what should I look into next to advance my fine-tuning process?
Thanks for all the help!
 

Attachments

Back
Top