How to Configure a PC Soundcard as an Active Stereo Crossover?
Could the Asus STX II 7.1 sound card be used as an active crossover for driving a stereo 3 way speaker system with 3 stereo amplifiers?
My question is, is there a way to configure this card to work as a high fidelity Digital to Analog crossover that outputs 6 channels like this:
LL: Low Left (20 - 300 Hz) ---__ Rear Left RCA
LR: Low Right (20 - 300 Hz) ---__ Rear Right RCA
ML: Mid Left (300 Hz - 3Khz) __---__ Front Left RCA
MR: Mid Right (300 Hz - 3Khz) __---__ Front Right RCA
HL: High Left (3Khz - 20Khz) __--- Side Left RCA
HR: High Right (3Khz - 20 Khz) __--- Side Left RCA
If such a thing would be possible, then the Digital signal from the computer needs to be converted only once to analog via this 7.1 soundcard, and the three pairs (Low, Mid and High) could each go to three identical amplifiers after which the signales can go directly to the speakers, bypassing the analogue crossovers entirely.
In theorie this should be possible, with software.
But is it actually possible in reality??
- If not, then why not? Prove why its not possible.
- If yess, then in what way(s) you think it could/might?
- If you have any ideas or suggestions or tips, you are most welcome to share!
Could the Asus STX II 7.1 sound card be used as an active crossover for driving a stereo 3 way speaker system with 3 stereo amplifiers?
My question is, is there a way to configure this card to work as a high fidelity Digital to Analog crossover that outputs 6 channels like this:
LL: Low Left (20 - 300 Hz) ---__ Rear Left RCA
LR: Low Right (20 - 300 Hz) ---__ Rear Right RCA
ML: Mid Left (300 Hz - 3Khz) __---__ Front Left RCA
MR: Mid Right (300 Hz - 3Khz) __---__ Front Right RCA
HL: High Left (3Khz - 20Khz) __--- Side Left RCA
HR: High Right (3Khz - 20 Khz) __--- Side Left RCA
If such a thing would be possible, then the Digital signal from the computer needs to be converted only once to analog via this 7.1 soundcard, and the three pairs (Low, Mid and High) could each go to three identical amplifiers after which the signales can go directly to the speakers, bypassing the analogue crossovers entirely.
In theorie this should be possible, with software.
But is it actually possible in reality??
- If not, then why not? Prove why its not possible.
- If yess, then in what way(s) you think it could/might?
- If you have any ideas or suggestions or tips, you are most welcome to share!







There is a mature application and a thread on this here..
Pulseaudio Crossover Rack - multi-way crossover design & implementation with linux
Pulseaudio Crossover Rack - multi-way crossover design & implementation with linux
Hello,
I've had my Asus Xonar U7 USB card running as an active crossover for 2 years now. It works brilliantly.
I use 3 programs for it - there are other options, but these work for me.
1) REW measures room and speaker response - so you can see what you're doing and need to change.
2) RePhase - generates the 'convolution filters' you need. These are the crossover filters, but can also include room and phase correction within them.
3) Equalizer APO acts as a 'convolution engine' = runs the files generated at stage 2 in real time for your sound.
Takes some leaning and work. Works very well indeed when you crack it.
My system I use it with is quite 'high end'. 3 way active open baffle speakers similar to these reviewed by Mikey Fremer - Is Kyron Audio's Kronos the Best Sounding System You Will Ever Hear? | Analog Planet
I've had my Asus Xonar U7 USB card running as an active crossover for 2 years now. It works brilliantly.
I use 3 programs for it - there are other options, but these work for me.
1) REW measures room and speaker response - so you can see what you're doing and need to change.
2) RePhase - generates the 'convolution filters' you need. These are the crossover filters, but can also include room and phase correction within them.
3) Equalizer APO acts as a 'convolution engine' = runs the files generated at stage 2 in real time for your sound.
Takes some leaning and work. Works very well indeed when you crack it.
My system I use it with is quite 'high end'. 3 way active open baffle speakers similar to these reviewed by Mikey Fremer - Is Kyron Audio's Kronos the Best Sounding System You Will Ever Hear? | Analog Planet
You can also make a soundcard crossover a quicker and easier way just using Equaliser APO.
This program has filters built in and is easier to use - I have also built an active crossover just with this program.
Using RePhase in addition is significantly more complicated to learn.
But in return, you get excellent extra features -
Linear phase crossovers
Steep filter slopes
Better and easier room and speaker amplitude corrections.
Phase corrections.
This program has filters built in and is easier to use - I have also built an active crossover just with this program.
Using RePhase in addition is significantly more complicated to learn.
But in return, you get excellent extra features -
Linear phase crossovers
Steep filter slopes
Better and easier room and speaker amplitude corrections.
Phase corrections.
I was running exactly like that with EqualizerAPO and a Xonar D2 for several years. I used 4 channels to make a crossover for my 2-way speakers. Then I moved to linux and Brutefir, and then from that to my own CamillaDSP:
CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.
The problem with using a sound card is always the volume control. You can use the Windows volume control, but do you fully trust it? The second possible problem is if the signal level out of the sound card is enough to reach the output you want from your power amplifiers. I built a multichannel preamp to solve both of these. A simpler solution is to use a home cinema receiver and feed it with multichannel audio via hdmi. Then you get dac and preamp in one. You can even use the built in power amps to avoid getting more power amps (or start experimenting that way and upgrading later).
CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.
The problem with using a sound card is always the volume control. You can use the Windows volume control, but do you fully trust it? The second possible problem is if the signal level out of the sound card is enough to reach the output you want from your power amplifiers. I built a multichannel preamp to solve both of these. A simpler solution is to use a home cinema receiver and feed it with multichannel audio via hdmi. Then you get dac and preamp in one. You can even use the built in power amps to avoid getting more power amps (or start experimenting that way and upgrading later).
You can also make a soundcard crossover a quicker and easier way just using Equaliser APO.
This program has filters built in and is easier to use - I have also built an active crossover just with this program.
...
Here's one EqualizerAPO script attached which implements LR4 crossover for 3-Way system as IIR filter ... crossover frequencies needs to be changed... .
Attachments
Last edited:
Yes, but now we are back to the ever returning discussion about the limited value of textbook filter for real loudspeaker systems: the drivers are far from flat in most cases, so drastic corrective action is often needed. We are still waiting for a convertor that can transform a .frd file containing corrective filter into a -large!- set of filter coeffs. that can be copied into EqApo.
Dunno the .frd file format but, if it is well documented and carries frequency response data then it should not be very hard task to turn it to response data to be used in filter design software as like Matlab/Octave.
Yes, it can be done. DonVK helped me out with some very nifty stuff, but it is still somewhat cumbersome. Ideally speaking we optimize the transfer function of the filter ( in VituixCad/LspCad/SoundEasy/MachinaXP etc) in such a way the filter plus driver have a textbook acoustic output. I have asked both the authors of Vituixcad and Machine to build a function of listing the coeffs after optimization for copy/pasting those into EqApo, but unfortunately they some little use for that. Another issue is that EqApo lacks a real useful GUI with overlay options. When working with EqApo I loop-back and overlay like crazy in Arta, a lot of clumsy work, that would be a lot simpler with a decent GUI.
.frd is is the standard 3 column file format (freq/amplitude/phase) of spl measurements, as produced by e.g,. Arta. Laud, IMP/M and some other measurement packages.
The frd format isn't useful for defining filters for a filter engine like EqualizerAPO. It's just a list of measurement values. What do you want EqualizerAPO to do with them? Make a peaking filter for each value? Of fit something? IMO this functionality doesn't belong in a filter engine.
I think you should decide what filters to use, based on the frd data. REW for example can be used for that, and the resulting filters can be copied to EqualizerAPO. There are too many variables to make a general automatic approach.
I think you should decide what filters to use, based on the frd data. REW for example can be used for that, and the resulting filters can be copied to EqualizerAPO. There are too many variables to make a general automatic approach.
This just seems overly complicated. Why not implement the LR4 filters with two cascaded 2nd order filters with q=0.5? Then there is no need to calculate any coefficients. I would also bet that two biquads are faster than a single arbitrary order iir, since an optimized biquad is very fast to compute.Here's one EqualizerAPO script attached which implements LR4 crossover for 3-Way system as IIR filter ... crossover frequencies needs to be changed... .
The frd format isn't useful for defining filters for a filter engine like EqualizerAPO. It's just a list of measurement values. What do you want EqualizerAPO to do with them? Make a peaking filter for each value? Of fit something? IMO this functionality doesn't belong in a filter engine.
I think you should decide what filters to use, based on the frd data. REW for example can be used for that, and the resulting filters can be copied to EqualizerAPO. There are too many variables to make a general automatic approach.
Hmm... as those filters in talks are static, you just need to generate filter coefficients to be used in EqualizerAPO (or in any other DSP software). Separate coefficients for each sample rate of course.
I use Octave/Matlab for this. There are tools/methods which helps in process of getting needed IIR or FIR filters (or IR) from data types .frd holds in. Couple methods to mention; G. Berchin's FDLS, parallel filtering.
Last edited:
This just seems overly complicated. Why not implement the LR4 filters with two cascaded 2nd order filters with q=0.5? Then there is no need to calculate any coefficients. I would also bet that two biquads are faster than a single arbitrary order iir, since an optimized biquad is very fast to compute.
Yes, it's CPU heavier calculus in EqualizerAPO when config is loaded but, as coefficients are calculated once per config.txt load, in use it shouldn't cost much more than two biquads do when processed.
Another matter to mention is that as crossover is a static filter you can use pre-calculated coefficients in EqualizerAPO's custom IIR filter command .... . Use code I gave for coefficient calculation (if no other methods to run calculation, you should be able to find the final coefficients from EqualizerAPO log (log feature needs to be enabled of course)). Separate coefficients for each sample rate of course.
Last edited:
@HenrikEnquist: Textbook filters in combination with real drivers do not produce proper acoustic targets. As a rule of thumb, one cannot design an accurate system with "just" textbook filters, unless you are rather lucky.
@Boden: There's an example file (example.py), within that GitHub package, which reads target response data from file named as "data.py". You can edit the data.py to hold your own target data. Return values from command [b, a] = fdls(,,,) holds the final a and b coefficients you export to your DSP software (coefficients can be captured directly from fdls.py as well by printing them just before the return statement).
Now, you want to make a correction filter, so, you need to solve the difference between measured/informed response data and target response and give the difference as parameters in data.py (this can be done by just subtracting ones from the other) ... and finally invert the resulting filter (if needed).
Now, you want to make a correction filter, so, you need to solve the difference between measured/informed response data and target response and give the difference as parameters in data.py (this can be done by just subtracting ones from the other) ... and finally invert the resulting filter (if needed).
Last edited:
- Home
- Source & Line
- PC Based
- How to Configure a 7.1 PC Soundcard as an Active Stereo Crossover?