• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required as is 20 years of participation in forums (not all true). Come here to have fun, be ready to be teased and not take online life too seriously. We now measure and review equipment for free! Click here for details.

Guide: Computer Active XO, multi channel (or not) and EQ/DRC/DSP (Mac & PC systemwide)

DWPress

Senior Member
Forum Donor
Joined
May 30, 2018
Messages
349
Likes
412
Location
MI
For the past 10+ years I've been working with my evolving system set up of 3 way speakers with active crossovers + subs. Initially, I went with an external MiniDSP 4x10 to keep things simplified and lower my learning curve. But last summer my MiniDSP board fried and I was faced with the dire situation of no music in my studio space so I started experimenting with different ways of implementing a solution via software in both Windows and Mac. I've done it in both JRiver and Roon and, while functional, it was not exactly easy with 8 channels.

As many of you are aware, there are precious few multichannel consumer DACs out there and even fewer for Mac so looking at pro-audio solutions like Motu or Focusrite are good options but even the cheap Asus USB or PCI sound cards can be used with a PC. Mapping out a XO can be done in JRiver or Roon but it is somewhat limiting with filter slopes and then you are tied to using those paid apps to route your playback through. Not so much a problem in Windows with JRiver and it's WMD but for Mac that's not an option. What if you need to host those convolution files from a DRC program or are so tied to the Apple ecosystem you can't give up your Apple Music subscription but want to use impulse correction or EQ? Add Tidal or Qobuz desktop apps to that list too.

Much of this was worked out in a AVNirvana thread I participated in here, a good resource for working out other details or configurations.
Disclaimer: I use my system for mostly audio. Video sync issues will depend on filter sizes, VST efficiency and other factors.

Considerations:
  1. When I stream from Youtube on my system I have no noticeable synching issues but when I, for instance, set up another zone in Roon then I do have to play with zone delays a little.
  2. This process is still good for 2 channel listening if you want to use pro audio tools (VSTs) to do EQ for apps that otherwise lack EQ.
  3. How many channels? If you are just into stereo then a simplified version of this approach is still a good one for systemwide sound use but for Mac users a simple host for a VST/AU reverb is all you really need and Element is still a great low cost candidate.
  4. I've no idea how this could apply to multichannel 5.1 or 7.1 configurations but presumably this information should be valid for some of that use as well.
  5. Using VSTs in Mavericks - Big Sur can be problematic as the new security "gatekeeper" that is part of the OS will block them from loading. Naturally, there is a way around this as plenty of professional audio creatives NEED their audio plugins to work. Check out post #34 in the AVNirvana thread for one solution using the terminal or google around a bit.
  6. If you are just looking for EQ solutions check out @Doodski's great thread here: EQ Software for Windows, Linux, macOS, iOS/iPadOS and Android.
Applications used (not all are necessarily needed):
  • To route audio from other apps: Loopback: $99, Blackhole, (free) [Mac] or Jack, (free) [Mac & Win], VAC, ($30), or VB Cable (donation) [Win & Mac]
  • Element: $2, Kushview's Element is a brilliant app that acts similarly to a mixing board in a DAW by hosting VST, VST3, AXX, AU plugins with an easily understandable GUI and seemingly limitless application use.
  • Soundsource $39, [Mac] optional, simplified menubar audio controller for routing app audio and basic plugin (AU only) hosting but limited to 2 channels.
  • rePhase: free, For creating XO filter
  • Audacity (free) or similar app for making multichannel .wav files from the XO impulse responses created in rePhase.
  • REW and a measurement microphone for testing results
VST/AUs used:
  • X-MCFX: multichannel .wav plugin
  • Sir3: reverb convolution known for zero latency and good updates across OSs. There are free options out there like MConvoltionEZ & XvolverEssential
  • TDR Nova: great low latency parametric EQ with compressor/expander. Other free EQ options are MEqualizer, QRange, Marvel GEQ, Toned.
  • Voxengo Sound Delay: for setting individual delay for drivers/subs

Also, @mitchco has a new convolver for Accurate here (standalone app & VST) that looks very promising and Mitch is working on a multichannel version. $130

A frugal user could get all this working for less than $10 :cool:

Skip ahead to step 4 if you are just looking for systemwide convolution or EQ

1) Creating a digital XO for 2 or 3 way speakers or sub integration
In rePhase it is relatively simple to create crossovers, no need for any measured file exports from REW, we're just creating frequency filters. In the "linear-phase filters" or "minimum-phase filters" (your preference but minimum phase will have less latency) tab within rePhase create your XO filters for each channel and export them as .wav files. There is an App Note on the MiniDSP site that gives insight on how these filters are created here, scroll down to "Example 2: A linear phase crossover". For 2 or 3way XO we will need to generate L&R mono .wav filters for woofer, mid, tweeter and also filters for subwoofers if you use them. In practice, your W/M/T XO will be the same for both speakers so only need to generate 3 filters + sub(s) if used.

Remember to create filters in all the sample rates you wish to use and to keep your impulse settings the same!

This can also be done with Accurate and Audiolense (I think).

rephasexo.png


2) Creating the 2x8 .wav matrix (2.1, 2x4, 2x6, etc) in Audacity
First in Audacity preferences, under export select the "Advanced Mixing Options" box. When you select the multiple mono tracks in Audacity, you choose to export all files. Choose "32bit float" option and .wav format and when it's time to export you will have a screen to create one combined multichannel .wav file.

Import your individual .wav files into Audacity (so total of 8 files for me = 8 tracks in Audacity) then export it as a .wav - the order of tracks top to bottom in Audacity will then correspond with the numbered audio channels in your OS. Don't worry if your driver order gets mixed up, it's pretty easy to sort out later in Element.

Remember again you'll need to create this file with each sample rate you want to use.

audchannels.png

3) Applying that multichannel .wav
This is where Element comes in, alternately you could use Plogue Bidule ($95 Win, Mac) but I find Element easier and cheaper! Element is really the backbone to this whole plan - an application that can host AU / VST / VST3 / AAX Plugins and this is how we are going to further shape our sound with reverb convolution plugins, EQ, delay and any other of the thousands of audio plugins out there. The key VST plugin we're going to use is X-MCFX which will host our multichannel .wav file with x channel input and x amount of outputs depending on your needs. When you load the multichannel .wav file be sure to select "diagonal values".

element.png


As you can see in the above pic, routing audio becomes pretty simple via the very visual GUI. In my system I use six channels for the 3way XO and an additional two for 2 subs being equalized. In Element the input source is defined in Loopback app and output is (in my case) Okto DAC8 Pro. "Loop" in Loopback is what I called the input for Roon, REW, Safari, Apple Music and Chrome in Rogue Amoeba's Loopback app. Works much the same as Black Hole but allows selecting which apps are routed at all times, more importantly it can route your OS system sounds away from playing on your output. Using Loopback is just a more refined way of directing audio but Blackhole works too.

4) Refining the sound - adding EQ / Convolution
In my example, the "Loop" stereo input which is where all desired output of the apps I defined in Loopback then enters the first instance of Sir3 which hosts a 2 channel L&R .wav file that was created in REW using the MMM method to smooth each speakers response up to room transition frequency. The signal then goes into the first instance of TDR Nova where I have set up steep filters for low and high pass across the entire frequency range (an experiment stemming from a recent ASR thread) but you can also do some quick and dirty bass boosting, implement a room curve or broadband tweaks here. Then on to the 2nd (optional) Sir3 instance where I use a refined MMM measurement from REW of the previous filter generated being implemented in the chain but applying the result equally to both L&R channels.

* Here is where you could insert your convolution file from Audiolense, Acourate or any other app that creates filters in a variety of file formats.​

From there it goes into X-MCFX Convolver where the stereo signal is split into the 8 channels. The SPAN and AnSpec modules off to the right are just spectrum analyzer VSTs for analysis and bling. Yes, you can put big meters on your desktop.

From X-MCFX the channels are routed to individual volume controls where driver gain is leveled for each speaker but before they get there I run them through instances of MEqualizer - not for EQ but to use it's analyzer function to verify I have the correct channel routing! This makes it pretty much fool proof that you're not sending bass frequencies to your tweeter and also helps sort out your OS channel order if you are having problems with routing. To make sure you've got the left or right channel being sent through just disconnect one of the links between your input device and the next plugin in the chain.

From the channel volume controls routing then goes to Voxengo Sound Delay to set the correct delays for drivers that need it and then to the inputs of the DAC8Pro.

All of the modules within Element can be set to active or bypass with the little blue button (to save system resources) and there is a mute button as well which is handy for dialing in sub integration or channel mapping. So even though I have a fair number of plugins present in Element only 10 of them are active or needed. There is a handy channel strip on the bottom of Element that also has the active/mute buttons and a volume slider for each module loaded into Element and the tab becomes highlighted when you click on any module for easy reference.

Everything you do in Element is in real time. These are pro audio VSTs we're using in a DAW workspace - the same tools that are used to mix the music you are listening to. Comparing and level matching two or more different convolution filters is instant on my system. Changing the XO in X-CFX with music playing will make it choke a few seconds if music is playing, which is not a good idea anyway...

5) Additional thoughts
Obviously, the amount of signal processing is pretty limitless within Element and the use of VSTs. One can implement compressors, play with mid-side channels, pitch, distortion or anything you want and apply it to individual speakers or bandwidths quite easily with a couple button clicks. Those of you familiar with MiniDSP's GUI will be set to go in Element once you have all the plugins in place you wish to use along with many other options. It's basically an expandable modular system that gives you the complete control of DAW effects processing.

On my M1 Mac Mini running the above example of Element with audio playing through Roon taxes the CPU by about 5%

Automatic sample rate conversion is reported to work with Blackhole and the Accurate convolver but maybe not necessarily with all streaming apps and currently limited to 2 channel. Since I am a Roon user I just convert all music to one sample rate which suits my needs fine so further exploration of this issue will need to be worked out. The obvious option is to just load the correct sample rate filter into X-MCFX plugin each time for different material but this is not terribly convenient if playing from a mixed playlist.

There are many other ways to do this, especially in Windows and quite a few for Linux but not much for Mac OS. Hopefully this will help some of you explore the possibilities of what can be done and at least provide some useful links for tools that will get you there. Looking forward to any discussion that follows this post so I can learn more from the collective wisdom of ASR and the smart folks here that have definitely helped me get this far!

edited for clarity and completeness​
 
Last edited:

abdo123

Major Contributor
Forum Donor
Joined
Nov 15, 2020
Messages
3,688
Likes
3,208
Location
Brussels, Belgium
Can you please explain how you made LR filters or butterworth filters? AFAIK most equalizers only offer high/low pass and high/low shelf filters.

edit: the rePhase images just showed up to me.
 
OP
DWPress

DWPress

Senior Member
Forum Donor
Joined
May 30, 2018
Messages
349
Likes
412
Location
MI
The XO filters are created in rePhase which gives you many many options on how to control the slope and LR, Butterworth etc.
 

HammerSandwich

Addicted to Fun and Learning
Forum Donor
Joined
Nov 22, 2018
Messages
928
Likes
1,109
Loopback: $99, Blackhole, (free) [Mac] or Jack, (free) [Mac & Win] or VAC, (donationware) [Win & Mac] to route audio from other apps
Did you mean VB Audio Cable for Windows? The one you linked appears to require $30+ license, while VB is donation.

Also worth noting that EQ APO could handle everything post-rePhase for Windows users, but it looks a lot less friendly. Good for simpler setups or people who prefer text-only config files.

I've never used JRiver, but I understand its DSP section can handle everything as well. And I believe it can delay video for lipsync, too.
 
OP
DWPress

DWPress

Senior Member
Forum Donor
Joined
May 30, 2018
Messages
349
Likes
412
Location
MI
Yes, it was VB Audio Cable I was thinking of, I'll fix that above - I wrote this from mostly a Mac perspective so the Windows links are mostly from memory and there's probably some I missed too!

Yes, EQ APO can do this but not option for Mac. Roon and JRiver can post XO but not as elegantly and with some difficulty until you get it right.

The point of this guide is for system wide use and not being dependent on a paid app to do it for you.
 
Last edited:

dualazmak

Major Contributor
Forum Donor
Joined
Feb 29, 2020
Messages
1,015
Likes
1,065
Location
Ichihara City, Chiba Prefecture, Japan
Did you mean VB Audio Cable for Windows? The one you linked appears to require $30+ license, while VB is donation.
...

Just for your reference...

I am in the league of Windows PC. In my multichannel multi-driver multi-amplifier system, I use JRiver MC (or Roon) as music player feeding 192 kHz 24 bit digital stereo into software crossover EKIO via VB Audio HiFi Cable under ASIO4ALL, then the crossovered 8 channels go into OKTO DAC8PRO through its dedicated DIYINHK ASIO driver using just one USB cable. All of the digital DSP/EQ processings are in 192 kHz 24 bit.

VB-Audio Virtual Cable
VB-Audio Hi-Fi CABLE & ASIO Bridge
ASIO4ALL 2.14
EKIO
 
Last edited:
OP
DWPress

DWPress

Senior Member
Forum Donor
Joined
May 30, 2018
Messages
349
Likes
412
Location
MI
@dualazmak - Yes, I've followed your thread and commented in the past.

This is just another way to get there, just a cross platform approach and the use of Element opens up so many possibilities.
 
Top Bottom