BACCH CrossTalk Cancellation

Natural Metamorphosis

After using BACCH filter with SIR plugin and my BruteFIR solution for about 6 months, I have never been a happier person. The reality that one can get from even a standard CD is just so “unreal” !!! However, since the key of achieving excellent XTC depends on accurate timing in assessing the ILD and ITD at the listening position. The BACCH filter is also pinpoint accurate for a given position. The downside is that you have a smaller than usual sweetspot. Outside this sweet spot, things are not as great (but the ambience is still there, definitely better than without BACCH.) The size of this sweet spot depends on how close you can physically place the speakers together. In the standard stereo dipole configuration, the sweet spot is reasonably large and you will be very comfortable with it. But since I need to accommodate a 55 inch TV between my speakers, my sweet spot is very very small. It was like 2 inches in width only. Great efforts has been made to keep my head within this sweet spot so I can enjoy the music ecstasy! While my ears are happy, my neck hurts…….

Knowing this limitations, Prof continues to improve his products and come up with BACCH-SP. One of the greatest advancement in SP is the introduction of headtracking. This is really the first of this kind in the music reproduction history!! Well, I guess you DO need to be a rocket scientist to think of that!! The headtracking function rely on the use of a small device like the one you use in Xbox.

Function in the same way as XBox, it tracks your head in the X, Y, Z position. During the setup process, SP will ask you to move your head in the extreme left and right position so as to generate >40 BACCH filters over these extremes position. During play back, you head position is tracked and the appropriate filter will be used to achieve a perfect XTC at all positions. My sweet spot is now 2 feet wide! now my hear and neck are happy together.

One of the issue in my setup is that I use linear XO which causes some delay due to the nature of the crossover. The delay is calculated by half of the filter taps / sampling frequency. If one uses very long delay, they may be issues in slowing the headtracking down. There are 2 tricks I used to solve this problem. One is to use a shorter filter taps (sacrificing filter resolution) and the second is to place the speakers as close as possible to increase the sweetspot size. I was told that the later version will even have this issues improved.

In any case, if you use a minimal phase XO like a standard passive XO in most speakers, you will not have any issues. The transition among various filters are transparent, seamless and flawless!

I suppose moving on, such head tracking function can also control the lateral response of the speakers by employing different filters to compensate for the loss of power when listening off axis. Such technology can also control lobbing behavior of the speaker drivers as well! The possibilities is only limited by imagination!!

The second advantage of using SP is the unlimited generation of BACCH filters. SP now comes with its own microphone and calculation hardware. During the calibration process you place the headmic in just the same way as the beespoke service, you will then press a few buttons on a dedicated iPad and you will hear Prof’s voice to do this and that. After that, the calculation starts and in about 2 mins, you have a new filter. There are 7 banks where you can store the filter, each can be set up with headtracking function enabled. This way, you can do filters for everyone in your family or different speakers etc. Again, there is no limits!

But SP is much more than this. It comes with USB in so you can use any computer Mac/Win/Linux to connect to your favorite player for play back. This also means you can use SP for your games and programs like Spotify. It is also equipped with digital in (SPDIF/AES/toslink) so you can use your CD transport as well. For those Vinyl lover, you can also connect your turntable to one of the analog in. As for play back, it also comes with its own DAC with 3 channels output. You can use SP as your digital XO for your active speaker system. The program also comes with EQ function for those who wants to dial in the frequency response that is pleasing to their ears. The complete clocking features are also available so you can slave SP to your favorite external clock as well! In other words, it is not a just an XTC processor, it is the soul of every music reproduction system!

Switching from my original setup to SP is no pain at all. I just connect it after my mac mini and before the convolver PC. All functions on SP is accessed by a dedicated iPad and the control is very intuitive.

So now everything is ready. How’s the sound. The sound is the same as before. After all, it is the same speaker and the same room. But with one advantage, I no longer need to mark the reflection on my TV to tell me I am in the right position. I can now move my head freely and still gets excellent XTC and stable image. There is no more collapse of 3D image, no more of drifting violin section to the center stage. All becomes rock solid stable. Do I care about the sound? Well I guess I care more about the music now as I can enjoy it with more freedom!

For those who do not want to spend a hefty some of money on SP,  you can consider buy a Mac Mini and run the BACCH-dsp. In my case, it is actually better as because I can install Ravenna ASIO driver for MAC and all in and out will be under AOIP. Here is my setup.

The Mac Mini that house the BACCH-dsp needs to be optimised as well. Here are some of the information

https://confluence.merging.com/pages/viewpage.action?pageId=86212946

Advanced setting can be found here

https://merging.atlassian.net/wiki/spaces/PUBLICDOC/pages/4819571/Merging+RAVENNA+Advanced+Pages+User+Guide.

Initially there were some glitches and I could not identify the source, but changing the "Safety Playout Delay" to 10 solved all the problem

One of the problem with OSX is that it causes glitches and it is very difficult to identify the source. I was reading the VAD manual and found this :

"The T2 in Apple’s words “is Apple’s second-generation, custom silicon for Mac. By redesigning and integrating several controllers found in other Mac computers—such as the System Management Controller, image signal processor, audio controller, and SSD controller—the T2 chip delivers new capabilities to your Mac.”

The problem is, it appears that this new chip has introduced glitches on a wide variety of external audio hardware from across the pro audio industry, thanks to a bug in Apple’s software. Issues with the way the new chip synchronizes timing causes dropouts and glitches in the audio stream. (It seems basically all USB 2.0 audio interfaces will be impacted. This of course unfortunately leads users to blame their interface manufacturer, but the fault lies with Apple.)

Switching off “Set date and time automatically” in System Preferences will reduce, but not resolve the issue."

Unchecking the time sync only reduces the dropouts. You need to also uncheck the location sync in the Time Zone tab, but even then you’re only reducing the dropouts. Any time the T2 chip tries to sync, it will overload the USB2.0 bus, causing dropouts. There is no way any musician should go on stage with a 2018 [Mac] and a USB2.0 audio interface directly connected to it. The only solutions are 1) Get a Thunderbolt or USB3.0 audio interface, or 2) Use a Certified Thunderbolt 3 powered hub (not a bus-powered or cheap non-certified hub) – Cable Matters has a solution for $169 on Amazon, but most of those hubs are at least $200-300. Using a certified TB3 hub creates a separate external USB2.0 bus, in which you can run your USB2.0 audio interface. The cheap hubs do not work because they don’t run on the TB3 bus, and therefore they don’t create their own separate USB2.0 bus, which means you’re going to get dropouts.

Still at the topic of eliminating glitches. I am now playing with the setting within BACCH DSP. The left one is the photo taken from BACCH-dSP, the right one is taken from the internet. Seems they are coming from the same underlying program. 

At the very top of the Audio Status window is a pop-up menu for turning the audio in MSP on and off and a set of pop-up menus that let you select an audio driver and configure its input source and output destination.

The second pop-up menu allows you to view and select an audio driver for MSP. The specific audio drivers will be discussed later in this chapter. A brief summary will suffice for now:

Only one audio driver can be selected at any given time. MSP saves the settings for each audio driver separately and will recall the last used audio driver when you restart Max.

The next two pop-up menus are active only if the chosen driver and device support them. When they do the pop-up menus allow you to change the audio input source. These settings can also be changed using the Audio MIDI Setup application on Macintosh or the Sounds and Audio Devices Properties window (Start > Settings > Control Panel > Sounds and Audio Devices) on Windows.


When ASIO is in use, the pop-up menus allow you to set the clock source for your audio hardware and whether or not to prioritize MIDI input and output over audio I/O.

The Audio Status Window lets you control the size of the blocks of samples (called signal vectors) that MSP uses. There are two vector sizes you can control.



The I/O Vector Size may have an effect on latency and overall performance. A smaller vector size may reduce the inherent delay between audio input and audio output, because MSP has to perform calculations for a smaller chunk of time. On the other hand, there is an additional computational burden each time MSP prepares to calculate another vector (the next chunk of audio), so it is easier over-all for the processor to compute a larger vector. However, there is another side to this story. When MSP calculates a vector of audio, it does so in what is known as an interrupt. If MSP is running on your computer, whatever you happen to be doing (word processing, for example) is interrupted and an I/O vector's worth of audio is calculated and played. Then the computer returns to its normally scheduled program. If the vector size is large enough, the computer may get a bit behind and the audio output may start to click because the processing took longer than the computer expected. Reducing the I/O Vector Size may solve this problem, or it may not. On the other hand, if you try to generate too many interrupts, the computer will slow down trying to process them (saving what you are doing and starting another task is hard work). Therefore, you'll typically find the smaller I/O Vector Sizes consume a greater percentage of the computer's resources. Optimizing the performance of any particular signal network when you are close to the limit of your CPU's capability is a trial-and-error process. That's why MSP provides you with a choice of vector sizes.

Technical Detail: Some audio interface cards do not provide a choice of I/O Vector Sizes. There are also some ASIO drivers whose selection of I/O Vector Sizes may not conform to the multiple- of-a-power-of-2 limitation currently imposed by MSP's ASIO support. In some cases, this limitation can be remedied by using the ASIO driver at a different sampling rate.


Changing the vector sizes does not affect the actual quality of the audio itself, unlike changing the sampling rate, which affects the high frequency response. Changing the signal vector size won't have any effect on latency, and will have only a slight effect on overall performance (the larger the size, the more performance you can expect). However, certain types of algorithms benefit from a small signal vector size. For instance, the minimum delay you can get from MSP's delay line objects tapin~ and tapout~ is equal to the number of samples in one signal vector at the current sampling rate. With a signal vector size of 64 at 44.1 kHz sampling rate, this is 1.45 milliseconds, while at a signal vector size of 1024, it is 23.22 milliseconds. The Signal Vector size in MSP can be set as low as 2 samples, and in most cases can go as high as the largest available I/O Vector Size for your audio driver. However, if the I/O Vector Size is not a power of 2, the maximum signal vector size is the largest power of 2 that divides evenly into the I/O vector size.

You can set the audio sampling rate with the Sampling Rate pop-up menu. For full-range audio, the recommended sampling rate is 44.1 kHz. Using a lower rate will reduce the number of samples that MSP has to calculate, thus lightening your computer's burden, but it will also reduce the frequency range. If your computer is struggling at 44.1 kHz, you should try a lower rate.

Technical Detail: Subpatches loaded into the poly~ object can function at different sampling rates and vector sizes from the top-level patch. In addition, the poly~ object allows up- and down-sampling as well as different vector sizes. The Audio Status window only displays and changes settings for the top-level patch.


The Max Scheduler in Overdrive option enables you to turn Max's Overdrive setting on and off from within the Audio Status window. When Overdrive is enabled, the Max event scheduler runs at interrupt level. The event scheduler does things like trigger the bang from a repeating metro object, as well as send out any recently received MIDI data. When it is not enabled, overdrive runs the event scheduler inside a lower-priority event handling loop that can be interrupted by doing things like pulling down a menu. You can also enable and disable Overdrive using the Options menu. Overdrive generally improves timing accuracy, but there may be exceptions, and some third-party software may not work properly when Overdrive is enabled.

The Scheduler in Audio Interrupt feature is available when Overdrive is enabled. It runs the Max event scheduler immediately before processing a signal vector's worth of audio. Enabling Scheduler in Audio Interrupt can greatly improve the timing of audio events that are triggered from control processes or external MIDI input. However, the improvement in timing can be directly related to your choice of I/O Vector Size, since this determines the interval at which events outside the scheduler (such as MIDI input and output) affect Max. When the Signal Vector Size is 512, the scheduler will run every 512 samples. At 44.1 kHz, this is every 11.61 milliseconds, which is just at the outer limits of timing acceptability. With smaller Signal Vector Sizes (256, 128, 64), the timing will sound ‘tighter.’ Since you can change all of these parameters as the music is playing, you can experiment to find acceptable combination of precision and performance.


If you are not doing anything where precise synchronization between the control and audio is important, leave Scheduler in Audio Interrupt unchecked. You'll get a bit more overall CPU performance for signal processing

Here is my current best setting to reduce glitches

I/O Vector Size :512

Signal Vector Size: 256

Scheduler in Overdrive : checked

Audio Interrupt: not checked