• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

CTXMatrix - Free Ambiophonics Plugin

STC

Senior Member
Joined
Mar 7, 2017
Messages
422
Likes
230
Location
Klang Valley
Introducing CTXMatrix plugin, a free, lightweight 64-bit VST3 plugin I developed to implement the Ambiophonics RACE (Recursive Ambiophonic Crosstalk Elimination) concept. I first proposed this idea to Ralph Glasgal, the founder of Ambiophonics.org, in 2019, but no developers were available to work on it at the time. Now, in 2025, the plugin has come to fruition!

CTXMatrix was originally developed in Reaper, I’ve transformed the RACE concept into a streamlined VST3 plugin. It delivers immersive, high-fidelity stereo sound without complex setups. Currently in beta, CTXMatrix is nearly complete, with only minor bugs to resolve before the final release.

Key Features
Free and Accessible: No cost, designed for everyone.
RACE Implementation: Eliminates crosstalk for a clearer, more spacious soundstage.
Tested Compatibility: Seamlessly integrates with Reaper and JRiver Media Center.
No Coloration Issues: With correct delay and attenuation settings, CTXMatrix avoids the coloration some associate with RACE, ensuring pristine audio.

Try It Out!
Download the plugin and explore its features at
here. Full details and setup guides are available there.

Feedback Welcome
As this is a beta release, your feedback is crucial. If you encounter any issues or have suggestions, please report here or contact me via email. Let’s refine this together!

Screenshot 2025-09-20 105656.png
Screenshot 2025-09-20 105428.png


Thank you.
ST
 
I thought I should give this thread a bump and a bit of love.

I downloaded CTXMatrix and gave it a test run last night. I have sent some suggestions on improving the calibration process to @STC. But I can report that once it is calibrated, it works without any glitches. Having said that, I "only" listened to 2 hours of music, and I did not encounter any strange processing artefacts during this listening time. The effect is stronger than uBACCH, which I have a license for. I can't compare it to X-talk Shaper by HAF since I don't have a license for that. But the big difference is that CTXMatrix is FREE.

All you guys who are interested in crosstalk cancellation should give this a test drive. Help @STC improve the software.
 
Thank you @Keith_W for the encouraging words. So far no one here has shown any interest in the plugin. Hope your write up would encourage other XTC users to try.

Anyway, for some users unsure of where the image should be I hope this illustration would be helpful. CTXmateix is a crosstalk cancellation plugin that delivers 3D Sound
IMG_5157.jpeg
 
Last edited:
Any recommendations of a vocal track to help with calibration?

Searching around, one of the white papers mentions one being available at ambiophonics.org. Unfortunately, that domain appears currently defunct so that was a dead end. And the test-tone method is still on the to-do list.
 
Any recommendations of a vocal track to help with calibration?

Searching around, one of the white papers mentions one being available at ambiophonics.org. Unfortunately, that domain appears currently defunct so that was a dead end. And the test-tone method is still on the to-do list.
Make a new stereo track with Audacity by copying Tom’s Diner left channel to left and right channel of the new track. I will update the plugin with test tones and tracks soon. I appreciate and thank you for your interest to try the plugin.
 
Hi again ST. I listened carefully to CTXMatrix again tonight, and after rapid switching I have discovered:

- the VST lowers the volume of playback, even with "bypass" mode engaged. This is obvious if I click on/off the VST to activate/deactivate it.
- the apparent wider soundstage appears to be the most lateral instrument stretched out to 180 degrees.
- there is a subtle change of tonality, as if the highs have been attenuated.

I decided to redo the calibration. This time, I set Windows Display to display at 175%. This made the control panel much larger which meant I could actually see and control it from the listening position. I attempted the calibration a few times.

First, I made a test signal with pink noise using REW's generator. I band limited it to "speech" and saved a mono, left, and right copy. This calibration was exceedingly difficult to do. To my surprise, there are two layers of sound. A lower frequency layer that localizes further laterally, and a higher frequency layer that localizes a bit more medially. There was no setting I could choose to make the two layers coincide. What's worse, when I finished calibration the phantom image was noticeably skewed to one side.

So I used Audacity and selected a mono vocal recording. I saved one copy hard panned to the left, and another copy hard panned to the right. Using the vocal recording, it was much easier to do the calibration, but I ended up with close to the same calibration settings I had previously. There was the same subtle tonal change and the other problems noted previously.

I also spent some time comparing the CTXMatrix to uBACCH. I can tell you that uBACCH is completely tonally transparent, the only effect is the widening of the soundstage. There is no loss of SPL. CTXMatrix isn't quite there, the highs are attenuated and the volume is probably -6dB compared to normal.

I suspect I could improve the tonality by finding the right setting, but there is no way to remove the volume attenuation.

I am thinking that I can improve the calibration by using another test signal. I will try a 1kHz sine wave tone next.
 
Hi again ST. I listened carefully to CTXMatrix again tonight, and after rapid switching I have discovered:

- the VST lowers the volume of playback, even with "bypass" mode engaged. This is obvious if I click on/off the VST to activate/deactivate it.
Thank you very much for the detailed feedback.

That’s true. The gain is reduced about 8dB so that no clipping occurs during the cancellation process. I didn’t reset the level after process as I prefer to use the preamp volume control.
- the apparent wider soundstage appears to be the most lateral instrument stretched out to 180 degrees.
- there is a subtle change of tonality, as if the highs have been attenuated.
If you have the calibrated values then I can look into it. What is your speakers’ angle? It is tuned for 20 degrees to comply with ambiodipole speakers arrangement according to Ambiophonics principles because it is impossible to cancel when the angle gets bigger unless some hidden stereo enhancer is incorporated. I may add EQ for users who may want them. My problem is I am trying to get the same sound as how the speakers would sound at 60 degrees. Tonally, even with stereo playback - speakers at 60 and 20 sounds very different. So using bypass can be misleading. Tonally, you can get identical but at the expense of smaller soundstage.
I decided to redo the calibration. This time, I set Windows Display to display at 175%. This made the control panel much larger which meant I could actually see and control it from the listening position. I attempted the calibration a few times.
Will address the display. Initially it was covering almost the complete screen because it had 8 controls.

Human localization is poor. Ideally try not to turn you head during the calibration process. Even a short break will start giving different values. it takes some practice to be consistent.
First, I made a test signal with pink noise using REW's generator. I band limited it to "speech" and saved a mono, left, and right copy. This calibration was exceedingly difficult to do. To my surprise, there are two layers of sound. A lower frequency layer that localizes further laterally, and a higher frequency layer that localizes a bit more medially. There was no setting I could choose to make the two layers coincide. What's worse, when I finished calibration the phantom image was noticeably skewed to one side.
Can you make test tones matching your speakers crossover points. Play stereo sound with each band and check if all the drivers are in phase. I know of two high end speakers where the tweeter were out of phase. So just double check.

If you cannot adjust the balance precisely with Trim control then there could be something else that we need to check.
So I used Audacity and selected a mono vocal recording. I saved one copy hard panned to the left, and another copy hard panned to the right. Using the vocal recording, it was much easier to do the calibration, but I ended up with close to the same calibration settings I had previously. There was the same subtle tonal change and the other problems noted previously.
What are the delay values for each of the four stage?
I also spent some time comparing the CTXMatrix to uBACCH. I can tell you that uBACCH is completely tonally transparent, the only effect is the widening of the soundstage. There is no loss of SPL. CTXMatrix isn't quite there, the highs are attenuated and the volume is probably -6dB compared to normal.
As I said, all plugin will have gain within them which is used to prevent clippings. In fact, I can increase by 5dB but some recordings can cause clippings. Not really audible but it will be obvious in DAW metering. uBACCH didn’t work in my PC and no response from the developer before the trial expired so I can comment how they are managing the level to be identical.
I suspect I could improve the tonality by finding the right setting, but there is no way to remove the volume attenuation.
If you use DAW, then you can do AB test without using the bypass - running two tracks with alternating mute. I have to implement the 8dB attenuation even without XTC as a sudden 8dB increase can be very loud especially when peaks hitting above 100 dB.
I am thinking that I can improve the calibration by using another test signal. I will try a 1kHz sine wave tone next.
Try the attenuation set at -6dB and only adjust the delay in all stages.
 
And can you give me the track name where you say it extends beyond 180 degrees. I need to find a way to prevent over cancellations which can give false large soundstage. I would also appreciate your occlusion method angle. That would tell if our cancellation is showering or not by comparing your stage values.
 
Thank you very much for the detailed feedback.

That’s true. The gain is reduced about 8dB so that no clipping occurs during the cancellation process. I didn’t reset the level after process as I prefer to use the preamp volume control.

OK. Would you be able to not lower the gain so much please, or consider an overall gain control? Some of us struggle with gain here, classical music is already mastered at very low SPL's, and DSP sacrifices gain for linearity. I would prefer not to lose an additional 8dB on top of that.

I have another suggestion: there is no way to redo the settings post-hoc without resetting the calibration. And also no way for me to see what settings I chose besides remembering what I used. From memory:

Cal step 1: Gain -4dB Delay 0.095
Cal step 2: Gain -2dB Delay 0.11
Cal step 3: Gain -4dB Delay 0.095
Cal step 4: Gain -2dB Delay 0.11

These are likely wrong because I redid the calibration at least a dozen times, and I can't remember what settings I ended up with to produce the best result. But it would be in this ballpark. It would be very useful if we could see and edit the settings in the control panel.

If you have the calibrated values then I can look into it. What is your speakers’ angle?

1759452018517.png


I just got out my tape measure and calculated the angle. The half-span angle is 31deg.

Can you make test tones matching your speakers crossover points. Play stereo sound with each band and check if all the drivers are in phase. I know of two high end speakers where the tweeter were out of phase. So just double check.

My system is fully DSP'ed with linear phase FIR. All the drivers are amplitude and phase linearized, even at the XO points. I know from multiple measurements that there are no odd phase issues with them.

Try the attenuation set at -6dB and only adjust the delay in all stages.

Will do.

And can you give me the track name where you say it extends beyond 180 degrees.

1759452603344.png

1. Roger Waters "Amused to Death", track "Ballad of Bill Hubbard".

1759452475707.png

2. Some pipe organ recordings have the ambience extending beyond 180deg, e.g. this one (I used the second track, BWV 582).

1759452545107.png

3. The first track of Mahler's 3rd Symphony, conducted by Jascha Horenstein. The lateral instruments are smeared out to about 100 degrees and the ambience can be heard up to about 180.

I would also appreciate your occlusion method angle.

Using the mono vocal hard panned to left and right, the occlusion angle localizes to the exact speaker position as shown in my previous diagram - half-span angle 31deg.

But if I use band limited pink noise, the occlusion angle is slightly narrower, half-span angle 23.5deg. FYI, with uBACCH, I use a half-span angle of 28deg. The angle was tuned subjectively using uBACCH's calibration method. Given it's subjective tuning, it is likely that the angle is off by +/- 5deg. It's very difficult to tell.
 
OK. Would you be able to not lower the gain so much please, or consider an overall gain control? Some of us struggle with gain here, classical music is already mastered at very low SPL's, and DSP sacrifices gain for linearity. I would prefer not to lose an additional 8dB on top of that.
Actually, I wanted to release the first version with the gain control but almost all other levels will cause clipping. I am not sure why you say the preamp unable to add the 8dB difference. Will let out a another beta.
IMG_5120.jpeg

I have another suggestion: there is no way to redo the settings post-hoc without resetting the calibration. And also no way for me to see what settings I chose besides remembering what I used. From memory:

Cal step 1: Gain -4dB Delay 0.095
Cal step 2: Gain -2dB Delay 0.11
Cal step 3: Gain -4dB Delay 0.095
Cal step 4: Gain -2dB Delay 0.11

These are likely wrong because I redid the calibration at least a dozen times, and I can't remember what settings I ended up with to produce the best result. But it would be in this ballpark. It would be very useful if we could see and edit the settings in the control panel.
That is pretty impressive. I don’t even remember getting same value ever even ones.
View attachment 480123

I just got out my tape measure and calculated the angle. The half-span angle is 31deg.
you mean your physical speakers are at about 62 degree angle to listener? I am sorry CTXMatrix will not work for that angle as I have limited the delay to max of 120 μs about 12 samples. So the max angle you can use CTXMatrix is less than 15 degree for half span. If by using the ear plugin test as described in the readme, you don’t perceive a shift then no cancellation cannot effectively suppress the single ear direction detection mechanism. Sorry CTXMatrix not supposed to work and I wouldn’t increase the delay more than current value as wide speakers spread introduce phase and other problems as you described. And that’s not really crosstalk cancellation.
My system is fully DSP'ed with linear phase FIR. All the drivers are amplitude and phase linearized, even at the XO points. I know from multiple measurements that there are no odd phase issues with them.



Will do.



View attachment 480130
1. Roger Waters "Amused to Death", track "Ballad of Bill Hubbard".

View attachment 480128
2. Some pipe organ recordings have the ambience extending beyond 180deg, e.g. this one (I used the second track, BWV 582).

View attachment 480129
3. The first track of Mahler's 3rd Symphony, conducted by Jascha Horenstein. The lateral instruments are smeared out to about 100 degrees and the ambience can be heard up to about 180.



Using the mono vocal hard panned to left and right, the occlusion angle localizes to the exact speaker position as shown in my previous diagram - half-span angle 31deg.

But if I use band limited pink noise, the occlusion angle is slightly narrower, half-span angle 23.5deg. FYI, with uBACCH, I use a half-span angle of 28deg. The angle was tuned subjectively using uBACCH's calibration method. Given it's subjective tuning, it is likely that the angle is off by +/- 5deg. It's very difficult to tell.
I am not surprised with the QSound track because even with stereo placed at 60 degrees it should give a wider stage of more than 180 degrees.

Anyway, without the speakers at narrow angle CTXMatrix will not work as how it supposed to work. BACCH and also few other designed plugin for users who prefer the wide angle. Even if you look at the Princeton 3D experiments, the speakers were placed in Ambiodipole position.
 
Last edited:
Actually, I wanted to release the first version with the gain control but almost all other levels will cause clipping. I am not sure why you say the preamp unable to add the 8dB difference.

I don't use a preamp, I use digital volume control. I am limited by the maximum output voltage of the DAC.

That is pretty impressive. I don’t even remember getting same value ever even ones.

More accurate to say that I cheated. I know that the IACC of my system + room is 94%. Meaning the left/right frequency response AND time response is 94% identical. So whatever works for the left should work for the right. I started tuning subjectively and I found the left/right settings were fairly similar, so I simply made them nice numbers.

you mean your physical speakers are at about 62 degree angle to listener? I am sorry CTXMatrix will not work for that angle as I have limited the delay to max of 120 μs about 12 samples. So the max angle you can use CTXMatrix is less than 15 degree for half span.

Got it. I will have to reposition these 110kg speakers for 15deg half span. It's not a trivial undertaking, as you can imagine. So this is probably something to do another day. Until I do that, I don't think I have any more feedback to give to you. I will definitely revisit the VST when I have repositioned the speakers.

Good luck with ongoing development, and once again - thank you so much for your generosity. I don't know if Ralph Glasgal is still around, but if he was, I am sure he would be very proud of you.
 
I don't use a preamp, I use digital volume control. I am limited by the maximum output voltage of the DAC.



More accurate to say that I cheated. I know that the IACC of my system + room is 94%. Meaning the left/right frequency response AND time response is 94% identical. So whatever works for the left should work for the right. I started tuning subjectively and I found the left/right settings were fairly similar, so I simply made them nice numbers.



Got it. I will have to reposition these 110kg speakers for 15deg half span. It's not a trivial undertaking, as you can imagine. So this is probably something to do another day. Until I do that, I don't think I have any more feedback to give to you. I will definitely revisit the VST when I have repositioned the speakers.

Good luck with ongoing development, and once again - thank you so much for your generosity. I don't know if Ralph Glasgal is still around, but if he was, I am sure he would be very proud of you.
It is important that all stages done correctly without cheating . LOL! I understand your predicament. I too having the same problem moving the speakers to 60 degrees and they are probably less than 50 kg!

Maybe, you could experience with monitors first before moving your speakers. Archimango just reported it work well with about 25 degrees. So narrow angle is critical.
 
ot it. I will have to reposition these 110kg speakers for 15deg half span. It's not a trivial undertaking, as you can imagine.
I made changes to the delay so that it works with you current 62 degree angles. I couldn't test with my main system. I expect you will have some effect but it wont be perfect cancellation. I also added gain as you requested. The RMS meter is not working yet. I havent enlarge the canvas yet. You can download the latest version here. Thank you.
Screenshot 2025-10-05 192838.png
 
D'oh, I just finished listening to music for a few hours and switched the system off! I'll download it and check it out tomorrow.

No need to make the interface bigger, I think. I found a workaround - change the display settings in Windows so that it is at 175% zoom. That makes it big enough to see from a distance.

BTW, would it be possible to add an editable table showing all the values chosen during calibration? It would be an easy way to dial in new values without having to redo the calibration. Thanks ST!
 
An import/export function might be useful. For example, if testing with a laptop between systems in different rooms you could reload a calibration without redoing?
 
Unfortunately, that’s impractical since precise calibration is required for each system and playback environment to achieve optimal cancellation. You can recall saved files at any time, but individual adjustments aren’t supported. Write the value if you are planning to reuse them. In the final version, I will remove the value box and you have rely on hearing alone without visual cues. It is difficult but with correct test tone you can achieve consistency. In a later version, to save users time, I might limit changes to delay and attenuation. If values diverge too far from acceptable ranges, the plugin will display a message: ‘Unable to Calibrate.’”

And Ambiophonics really work with narrow angle. You can also read the feedback and use the test files made for the calibration in Archi’s site.
 
Last edited:
Hi STC. I downloaded the new beta and attempted to redo the calibration yesterday and today. Despite my best efforts, each attempt results in different values for delay and attenuation. I am unable to tune it with any consistency - my hearing really isn't that good! I notice that BOTH delay and attenuation will shift the phantom image. Your instructions say to adjust the delay first, and then adjust the gain for "balance". So I left the gain at the default value of -2 and adjusted the delay until the phantom image seemed to match the occlusion test. Any adjustment of the gain after this will shift the image again.

Every attempt I made results in (1) obvious changes in tonality and (2) phantom image skewed to the left or right.

Going back to uBACCH, there is no change in tonality at all. Only a broadening of the soundstage. The uBACCH plugin has no gain adjustment, only half-span angle adjustment, which I presume is for the delay. And there is zero volume loss when enabling/disabling uBACCH.

This makes me think that the XT cancellation gain in the uBACCH plugin is probably fixed. If you want, I can try to find out what it is doing by taking some measurements. I propose to do this:

- Centre the microphone precisely between the two speakers
- Send a left sweep through JRiver (which hosts my uBACCH VST) and measure the output of both speakers.
- Mute the left channel and measure the XTC from the right
- Mute the right channel and measure what uBACCH is sending from the left.

I will use either an acoustic timing reference or loopback timing reference. Please let me know if this exercise would be of value to you. If we know what uBACCH is doing, it might help me dial in correct settings for CTXMatrix.
 
precise calibration is required for each system and playback environment to achieve optimal cancellation.
I didn't mean recalling cal-room-A to use in room-B. Ofc, that is unlikely to work.

I meant the capability of recalling (or viewing) the cal-room-A (for use in room A) after experimenting with another calibration in another room (eg room B).
 
@Keith_W , once you know where the location is for both left and right speakers, during stage 1 to 4 make sure the attenuation is at -6. In stage 1, slowly adjust the delay from 0.0 until the image moves to the location of your occlusion test without crosstalk. Then you adjust the gain very slowly, once you notice movement immediately stop. Readjust the delay again if necessary to bring back the image. As long as the position matches the brain utilizes both delay and attenuation. So they need not be precise. Do the same again for all the stages using the same steps. Don’t worry about different values. It will be taken care off.

Once the calibration stage is completed save the file. You can now use the output gain to increase the level by 12 db. 8 dB is fine. But if you don’t hear distortion you can increase to 12dB. ONce the RmS meter is working in the future version then you know how far you can push.

uBACCH is using IR. If you really want to know whether it is coloured or not, play pink noise in one speaker without uBacch and take another measurement from the same speaker with uBacch engaged. that input will be helpful for to refine the EQ for CTX.

Frankly, sound without crosstalk cannot be the same as with crosstalk. Stereo adds colour. Play one pink noise in one speaker annd then play pink noise in two speakers. They cannot sound the same. It is coloured. Also careful of the bypass. When you do the recording don’t use the CTX bypass. Also don’t use BACCh bypass. Note - if you use Miller’s DSP, it should able to do the 60 degrees angle they actually tested for that angle. Having said all these, Ambiophonics still works best when angle is around 20 degrees.

Once again, thank you for your feedback.
 
Back
Top Bottom