• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. 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!

What Kind of Crossover is This?

OP
watchnerd

watchnerd

Grand Contributor
Joined
Dec 8, 2016
Messages
12,449
Likes
10,415
Location
Seattle Area, USA
ReW is great. Download it and start playing. The umik works directly with it. Make sure you load the calibration file that comes with the mic.

I have played with a lot of diffetent methodolgies before settling on a solution. Including minidsp, but Acourate has been by far the best.

I'll check it out, but I've also had good luck implementing the Matlab equations using pySPACE:

https://www.frontiersin.org/articles/10.3389/fninf.2013.00040/full
 

March Audio

Master Contributor
Audio Company
Joined
Mar 1, 2016
Messages
6,378
Likes
9,321
Location
Albany Western Australia
OP
watchnerd

watchnerd

Grand Contributor
Joined
Dec 8, 2016
Messages
12,449
Likes
10,415
Location
Seattle Area, USA
Sorry youve list me a bit here, Im not clear on the system structure, develiate, minidsp, roon or linux???

Oh, sorry...I've tried all of the above. Not using them all simultaneously.

Right now, I'm using a Raspberry Pi with a HiFiBerry DigiPro+ HAT, running as a Roon Endpoint, and then doing the DSP all in Linux, then piping that into the Devialet SPDIF.

BTW, here is an example of a DSP .yaml for pySPACE:

fninf-07-00040-g004.jpg
 

March Audio

Master Contributor
Audio Company
Joined
Mar 1, 2016
Messages
6,378
Likes
9,321
Location
Albany Western Australia
Aaahhhh...so it performs the convolution but does not create the filter???

So what do you use to perform the acoustic measurement if not REW?
 
OP
watchnerd

watchnerd

Grand Contributor
Joined
Dec 8, 2016
Messages
12,449
Likes
10,415
Location
Seattle Area, USA
Aaahhhh...so it performs the convolution but does not create the filter???

So what do you use to perform the acoustic measurement if not REW?

Filters can be created using Matlab. Here is the section in FIR:

https://www.mathworks.com/help/signal/ug/fir-filter-design.html

I haven't gotten as far as taking measurements. Right now, I'm just hacking, learning the platform and making basic PEQs filters, Chebyshev filters, LR filters, etc, and seeing if I can get that applied to the Roon datastream and sent out the SPDIF without dropouts, latency, or crashing the Pi box.
 

DonH56

Master Contributor
Technical Expert
Forum Donor
Joined
Mar 15, 2016
Messages
7,903
Likes
16,720
Location
Monument, CO
I use Matlab (and Mathcad, Python, C++, etc. -- though have not tried pySPACE) but for audio measurements and such REW is easy enough and has all the drivers built in rather than having to build test systems in Matlab and such. Plus it is freeware, widely used, and thus easy to share data with friends. My CSL-calibrated UMIK-1 essentially overlies the frequency response of my Earthworks M30 for a fraction the cost. The UMIK-1 does not have the extended HF response, noise floor, or dynamic range of the Earthworks but at ~$100 is steal and perfect for most consumer audio testing. And REW is easier to use than my previous (again much more expensive) professional audio analysis SW.
 

March Audio

Master Contributor
Audio Company
Joined
Mar 1, 2016
Messages
6,378
Likes
9,321
Location
Albany Western Australia
I use Matlab (and Mathcad, Python, C++, etc. -- though have not tried pySPACE) but for audio measurements and such REW is easy enough and has all the drivers built in rather than having to build test systems in Matlab and such. Plus it is freeware, widely used, and thus easy to share data with friends. My CSL-calibrated UMIK-1 essentially overlies the frequency response of my Earthworks M30 for a fraction the cost. The UMIK-1 does not have the extended HF response, noise floor, or dynamic range of the Earthworks but at ~$100 is steal and perfect for most consumer audio testing. And REW is easier to use than my previous (again much more expensive) professional audio analysis SW.
Yeah, this is what I was getting at, of course MATLAB will get the job done but it seems a painful route compared to Rew and convolution built in to Roon for example. Software like Acourate designs the filters, does the phase correction etc for you.
 
Last edited:
OP
watchnerd

watchnerd

Grand Contributor
Joined
Dec 8, 2016
Messages
12,449
Likes
10,415
Location
Seattle Area, USA
Yeah, this is what I was getting at, of course MATLAB will get the job done but it seems a painful route compared to Rew and convolution built in to Roon for example. Software like Acourate designs the filters, does the phase correction etc for you.

Oh, the route I'm playing with is definitely a PITA.

But I'm doing it so that I can (hopefully) eventually tie it all into my home automation system using Apple Homekit or Google Home.

If I only cared about the speakers, yeah there are easier routes.
 
Last edited:

RayDunzl

Grand Contributor
Central Scrutinizer
Joined
Mar 9, 2016
Messages
13,250
Likes
17,194
Location
Riverview FL
MartinLogan reQuest crossover.

Two filters, one high pass, one low pass, like the ATC filter shown above.

upload_2017-10-1_3-6-40.png
 

March Audio

Master Contributor
Audio Company
Joined
Mar 1, 2016
Messages
6,378
Likes
9,321
Location
Albany Western Australia
OK, there is a bit more to it than this, but the basics are:

  • Define and make Crossover Filters (FIR)
  • Load crossover filter into sweep recorder
  • sweep recorder plays a swept sine from say 10Hz to 20kHz but filters what goes to each driver based on the filter you have loaded
  • recorded swept sine is psychoacoustically conditioned.
  • Desired target frequency response curve is defined (typically flat to 1kHz then dropping linearly to -6dB at 20kHz)
  • The inversion of the frequency and phase response is calculated
  • Final Filters generated (xo + driver + room correction)
  • Filter convolution is tested
  • Load filters into desired playback convolution software
  • play music :)

Define your crossover type and frequencies, in my case 50Hz, 700Hz and 4700Hz, 2nd order Neville-Thiele with 65536 filter taps:
upload_2017-10-1_15-31-25.png



Hit Calculate and save. This saves Left and right filters for each band.
upload_2017-10-1_14-17-42.png


Filters look like this:

upload_2017-10-1_14-19-53.png


You then convert these separate filters to a single .wav multifilter file. Its just a menu option so I wont show it. The purpose of this file is to load into the Log Sweep Recorder

upload_2017-10-1_14-23-1.png


Use Microphone alignment utility to get microphone perfectly aligned. It plays rapid clicks and you move mic to get the traces aligned.
upload_2017-10-1_14-38-20.png



Load the filter file into Log Sweep Recorder. Note that LSR also loads the measurement microphone calibration file. and hit start record.
In this case a sine will sweep from 10Hz to 24kHz. The loaded filter will send the relevant frequencies to the relevant DAC output channels. I use an 8 channel Motu 8A DAC. So,

  • 0 to 50Hz LEFT to DAC out 1 (sub)
  • 0 to 50Hz RIGHT to DAC output 2 (sub)
  • 50Hz to 700Hz LEFT to Dac output 3 (left woofer)
  • 50Hz to 700Hz RIGHT to dac output 4 (right woofer)
  • and so on.....
upload_2017-10-1_14-40-3.png


Results look like this with Inter Aural coherence results
upload_2017-10-1_15-1-12.png


You then run the psychoacoustic Amplitude preparation macro. You can now clearly see the baffle step
upload_2017-10-1_15-3-56.png


Then target curve design
upload_2017-10-1_15-7-40.png


Then Inversion Macro
upload_2017-10-1_15-14-7.png


Then filter generation. I wont go into the details of the settings here.
upload_2017-10-1_15-16-18.png


Then a filter convolution check. You check for FR, impulse or group delay issues
upload_2017-10-1_15-18-36.png

upload_2017-10-1_15-20-56.png


In my case the filters are now loaded into Acourate convolver. Its simply a matrix of Input Channel (left/Right) > Filter > DAC Output Channel. Roon Plays to Acourate Convolver > Motu

BTW the filters can in theory be loaded directly into Roons convolver, but I haven't tried that yet.
Capture.PNG


Use REW to validate the result.

That's a bit simplified, but the gist of it :)

Once you are used to the software it takes about 20 minutes to go through the process

Hope that helps
 
Last edited:
OP
watchnerd

watchnerd

Grand Contributor
Joined
Dec 8, 2016
Messages
12,449
Likes
10,415
Location
Seattle Area, USA
OK, there is a bit more to it than this, but the basics are:

  • Define and make Crossover Filters (FIR)
  • Load crossover filter into sweep recorder
  • sweep recorder plays a swept sine from say 10Hz to 20kHz but filters what goes to each driver based on the filter you have loaded
  • recorded swept sine is psychoacoustically conditioned.
  • Desired target frequency response curve is defined (typically flat to 1kHz then dropping linearly to -6dB at 20kHz)
  • The inversion of the frequency response is calculated
  • Final Filters generated (xo + driver + room correction)
  • Filter convolution is tested
  • Load filters into desired playback convolution software
  • play music :)

Define your crossover type and frequencies, in my case 50Hz, 700Hz and 4700Hz, 2nd order Neville-Thiele with 65536 filter taps:
View attachment 8897


Hit Calculate and save. This saves Left and right filters for each band.
View attachment 8882

Filters look like this:

View attachment 8883

You then convert these separate filters to a single .wav multifilter file. Its just a menu option so I wont show it. The purpose of this file is to load into the Log Sweep Recorder

View attachment 8884

Use Microphone alignment utility to get microphone perfectly aligned. It plays rapid clicks and you move mic to get the traces aligned.
View attachment 8885


Load the filter file into Log Sweep Recorder. Note that LSR also loads the measurement microphone calibration file. and hit start record.
In this case a sine will sweep from 10Hz to 24kHz. The loaded filter will send the relevant frequencies to the relevant DAC output channels. I use an 8 channel Motu 8A DAC. So,

  • 0 to 50Hz LEFT to DAC out 1 (sub)
  • 0 to 50Hz RIGHT to DAC output 2 (sub)
  • 50Hz to 700Hz LEFT to Dac output 3 (left woofer)
  • 50Hz to 700Hz RIGHT to dac output 4 (right woofer)
  • and so on.....
View attachment 8886

Results look like this with Inter Aural coherence results
View attachment 8887

You then run the psychoacoustic Amplitude preparation macro. You can now clearly see the baffle step
View attachment 8888

Then target curve design
View attachment 8890

Then Inversion Macro
View attachment 8892

Then filter generation. I wont go into the details of the settings here.
View attachment 8893

Then a filter convolution check. You check for FR, impulse or group delay issues
View attachment 8894
View attachment 8895

In my case the filters are now loaded into Acourate convolver. Its simply a matrix of Input Channel (left/Right) > Filter > DAC Output Channel. Roon Plays to Acourate Convolver > Motu

BTW the filters can in theory be loaded directly into Roons convolver, but I haven't tried that yet.
View attachment 8896

Use REW to validate the result.

That's a bit simplified, but the gist of it :)

Once you are used to the software it takes about 20 minutes to go through the process

Hope that helps

Awesome write up.

Where are you setting the driver levels? Or is that happening automatically as part of the filter creation?
 

March Audio

Master Contributor
Audio Company
Joined
Mar 1, 2016
Messages
6,378
Likes
9,321
Location
Albany Western Australia
My drivers are actually fairly well matched in level to start with, so yes you can let the filter creation take care of it. However I do bring the tweeter level down by using the Motu output level controls.

There is a more detailed write up by Mitchco and this explains how to seperately linearise your drivers prior to the steps I outlined above. I havent needed to do this as I very carefully chose drivers thst were very linear (+- 1dB close measurements) to start with.

index.php


Acourate is a lot more capable and sophisticated than I outlined above, that was just thecquick "get you going" procedure.
 
Last edited:
OP
watchnerd

watchnerd

Grand Contributor
Joined
Dec 8, 2016
Messages
12,449
Likes
10,415
Location
Seattle Area, USA
My drivers are actually fairly well matched in level to start with, so yes you can let the filter creation take care of it. However I do bring the tweeter level down by using the Motu output level controls.

There is a more detailed write up by Mitchco and this explains how to seperately linearise your drivers prior to the steps I outlined above. I havent needed to do this as I very carefully chose drivers thst were very linear (+- 1dB close measurements) to start with.

Acourate is a lot more capable and sophisticated than I outlined above, that was just thecquick "get you going" procedure.

Your mini-tutorial is great, have you considered creating a separate thread for it and then maybe @Thomas savage can sticky pin the thread?
 

March Audio

Master Contributor
Audio Company
Joined
Mar 1, 2016
Messages
6,378
Likes
9,321
Location
Albany Western Australia
Sure I could, but we should also rope in Mitchco if he is willing. He has written a good tutorial on Computer Audio (where I got my initial knowledge from :) ! ) . He might be willing to copy that over. It would be really good to have an Acourate resource here, if there is one criticism of the software is the lack of a meaningful manual. I havent explored the more complex functionality and I'm by no means an expert.
 
Top Bottom