The importance of crossover steepness - Page 2 - diyAudio
Go Back   Home > Forums > Source & Line > PC Based

PC Based Computer music servers, crossovers, and equalization

Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools Search this Thread
Old 5th July 2012, 12:17 PM   #11
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
Quote:
Originally Posted by CopperTop View Post
I am driving a pair of sacrificial Mission 702e two way speakers with a home-brew PC-based crossover configured as FFT-based linear phase filtering with a 32768 FFT size.
If you are basing on Linux with ALSA, with a CM6206-based multichannel audio USB attachement, you should attract many audio enthusiasts. If, on the other hand, you are running Windows XP and possibly some VST+ASIO clone like Synthmaker, that's a different story.

I suggest that you read Philips DSS-930 technical publication first, for assessing what FIRs can bring to the audio discipline. The Philips DSS-930 User Manual is freely available here http://www.mfbfreaks.nl/pdf/dss/930/dss930.pdf and the corresponding AES technical description is available here AES E-Library Philips DSS 930: A New Concept in Active Loudspeaker

FIRs bring a massive advantage to crossovers. FIRs allow you to synthesize the crossover function and the speaker driver equalization in a single straightforward structure, guaranteed to be stable, with fulll control over the resulting phase. With FIRs, you can cure pathological phase behaviors like we observe above the natural speaker driver membrane cutoff frequency. With FIRs, you can transform a tweeter Bode Plot needing a corridor of +/-3 dB into a Bode Plot only needing a +/-1 dB corridor.

FIRs need to be quite long for providing a decent frequency resolution. If you are running at 48 kHz, a 128-tap FIR only provides a frequency resolution of 375 Hz. This is excellent for shaping a Tweeter Bode Plot, however this is unadequate for shaping a Woofer Bode Plot, especially below 375 Hz where you will rely on a single frequency chunk.

For finely shaping the Woofer Bode Plot in the deep bass range, you need a ten times finer frequency resolution. Meaning a 1024-tap FIR or a 2048-tap FIR.

And still, you may want a 2nd order IIR for implementing a genuine Linkwitz Transform (kind of precisely shaped bass boost). See point 9 in the webpage here Active Filters

The Philips DSS-930 DSP was powered by a DSP56001 clocked at 27 MHz.
The Philips DSS-930 filter structure is a hybrid one.
Woofer channel : 2 IIR sections (one tunable IIR 2nd order section, one 1st order IIR and one FIR filter featuring 79 taps.
Tweeter channel : 3 IIR sections and a 30 tap FIR.

Results seem all excellent. See the attached .jpg.

So, why using a 32768-tap FIR ?

The drawback of a 32768-tap FIR is the impossibility to run it in native mode on a PC. Let's do the maths : with two channels (stereo), each eating two FIRs (2-way crossover) operating at 48 kHz, you need to compute 6.3 billion multiply-accumulate per second.

Ac consequence, you need to apply the FFT trick, doing the convolution not in the time domain, but in the frequency domain. By the way, this is the reason why you are using powers of two for the FIR lenghts.
Using the FFT trick, you need to introduce some new elements like sinus and cosinus tables. Of course with finite lenght words. You need to introduce them twice : in the FFT, then in the inverse FFT. From a philosophic perspective, from an audiophile perspective, they are not fundamentally needed. They are only needed because you target a long FIR. A too long FIR should I say.

I have nothing against your particular implementation relying on a 32768-tap FIR executed in the frequency domain. Like I said above, if you are relying on Linux and ALSA, you have the keys of the future in your hands.

However, from an Audiophile perspective, it may be preferable to expose genuine FIRs, able to execute on a 1.4 GHz single core PC equipped with SSE (pack four channels in the SSE, like Synthmaker does). Say the FIRs will consume 25% of the CPU computing power. Say we manage to pack four FIRs in the SSE. Each FIR may thus consume 350 mega multiply-accumulate per second. On a 48 kHz system, this means a 7291-tap FIR. This means a 6.6 Hz resolution. With such frequency resolution, we are encouraged to embed the Linkwitz Transform into the FIR. This way we end up with an ultraclean concept consisting on a single FIR, and no IIRs, for each speaker driver.

What about the digital representation? Can we process 24-bit audio natively in the SSE? The concept of natively processing 24-bit audio in the SSE implies that you need to multiply a 24-bit audio sample with a 24-bit FIR coefficient. As result, you get a 48-bit result. Because you accumulate up to 7291 results, you will end up with a 61-bit word. You would then isolate the 24 most significant bits, use them as the 24-bit result, and send them to the DAC.

I have not much experience in SSE. I'm hoping it can work this way.

If it doesn't work this way, you need to use some less performing x86 arithmetic, able to do a 32x32+64=64 operation on every CPU clock. This would introduce a speed penalty factor between 4 to 8. The FIR would need to be 1822 long or 911 long. The frequency resolution would be 26 Hz or 52 Hz. This time you can't embed the Linkwitz Transform in the FIR anymore. You need IIRs as some stage, ruining the clean "FIR-only" concept.

If the SSE quad 7291 FIRs are possible in a native 24-bit audio resolution, comes the question of how to design the FIR coefficients, which is the question you asked.

Here is my answer :

1. grab the Woofer and Tweeter transducer impulse response in a smart way
2. a smart way is to send a pink noise, compare in realtime the pink noise with the acoustic response (this is a realtime two channel analyzer), and mathematically compute the corresponding impulse responses as Woofer and Tweeter models
3. decide what kind of crossover you want : phase linear or not
4. I would always chose a phase linear crossover (no time-domain distortion after combining the two outputs)
5. Decide what kind of phase linear crossover you want : a 1st order, a delay-compensated Lipsitch-Vanderkooy possiby emulating a 16th-order Bessel Lowpass which is delivering no preshoot and no overshoot, or a myriad of other implementations delivering preshoot and overshoot
6. I would always give a first try to the delay-compensated Lipsitch-Vanderkooy emulating a 16th-order Bessel Lowpass
7. Point 6 allows you to generate the targeted acoustic impulse response of both speaker drivers
8. By combining point 2 and point 7, you know your FIR coefficient

It looks complicated but in reality if you manage to write a little application executing the 1-to-8 flowchart in a streamlined way, your system will be considered as a milestone. Especially if later on it executes on Android equipped with the latest ALSA drivers, able to recognize a CM6206-equipped USB attachement, in 5.1 or 7.1 mode (actually, six or eight full bandwidth audio channels). The CM6206 chip is limited to 16-bit audio, but in the coming future, ALSA will cope with 24-bit audio USB multichannel attachements.

This way, any Android Tablet or Android TV box could operate as multimedia tank and FIR-only crossover. This is a 10 million units/year market.

Now if you feel that the FFT followed by inverse FFT is needed for circumventing the processing power issue, that's not a huge issue. By executing a 8192-tap FFT followed by a reverse FFT, instead of executing a 7291-tap FIR, you need to remember that by introducing the sinus and cosinus tables with finite word lenght, you introduce some new uncertainty, however remaining insignificant if you stick to the native 24-bit audio processing described above.

I'm very curious to know if by allocating 25% of the processing power to the crossover, you still get WinXP, Linux or Android working normally, without generating annoying GUI delays, without generating audio hiccups.

Last edited by steph_tsf; 5th July 2012 at 12:20 PM.
  Reply With Quote
Old 5th July 2012, 01:21 PM   #12
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
Quote:
Originally Posted by steph_tsf View Post
5. Decide what kind of phase linear crossover you want : a 1st order, a delay-compensated Lipsitch-Vanderkooy possiby emulating a 16th-order Bessel Lowpass which is delivering no preshoot and no overshoot, or a myriad of other implementations delivering preshoot and overshoot
The DSS-930 falls in the third categoty. Looking at the time-domain Acoustical Target curves, you can see the woofer exhibiting some preshoot as it starts with negative (say 10% amplitude), then goes positive. Clearly, the DSS-930 implementation is thus not a delay-compensated Lipsitch-Vanderkooy using a Bessel Lowpass as kernel.

The next step is to determine the benefits of allowing a tiny 10% preshoot in the woofer.

By reading the frequency-domain Acoustical Target curves, we see that the 4 kHz crossover frequency is at -6dB for the woofer and the tweeter.
This is an indication that there is no relative phase shift between the woofer and the tweeter at the crossover frequency.

We also see that the 8 kHz frequency is at -36 dB. We will thus say that the DSS-930 woofer crossover emulates a 5th-order lowpass.

Now look the tweeter frequency-domain Acoustical Target curve. It is symmetric. It emulates a 5th-order highpass.

This is a highpass slope a delay-compensated Lipshitz-Vanderkooy can't deliver. The greatest highpass slope you can obtain from a delay-compensated Lipshitz-Vanderkooy, is when you use a Butterworth transfer function as lowpass, high order, and in such case, the resulting highpass is a kind of 3rd-order highpass. In a delay-compensated Lipshitz-Vanderkooy, the resulting highpass can't mathematically go above a 3rd-order, and in most cases (like using a Bessel lowpass as kernel), you end up with a 2nd-order highpass slope.

This is the kind of benefit you get when relying on FIRs instead of IIRs, instead of emulating analog transfer functions, when you accept some preshoot in the woofer. Hope this answers your question.

Having identified this, we may ask ourselves what are the degrees of freedom on the DSS-930 design.
By only allowing a 5% preshoot on the woofer, is it still possible to generate a 5th-order lowpass and a 5th-order highpass, or is it only possible to generate a 3rd-order lowpass and 3rd-order highpass ?
By allowing a 20% preshoot on the woofer, is it possible to generate a 10th-order lowpass and 10th-order highpass ?
What about the FIR lenght ? Are more elaborate compromises possible when using longer FIRs ?

Because of using the Philips/Matsushita ribbon tweeter, the DSS-930 is using a 4 KHz crossover frequency. This is a quite high crossover frequency, especially in a 2-way context. The Philips RH541 (MFB) relying on conventional Philips AD0140 tweeters featured a 1.4 kHz crossover frequency.
The DSS-930 4 KHz crossover frequency forces you to use high quality well damped membranes for the woofers, of moderate size. They were 5 inch in the DSS-930. Being so tiny, there were two 5 inch drivers acting in parallel in the deep bass range. In the medium range, the bottom 5 inch driver was delivering no output. We may thus say that the DSS-930 was a 2.5-way design.

Before reproducing the DSS-930, you need to select a proper 5 inch driver showing no pathological behavior (in amplitide and in phase) from 2 kHz to 6 kHz. This is not easy. Especially when you want them to feature a long Xmax for dealing with the deep bass.

A nice idea would be to reproduce the DSS-930 crossover, applying it to a 3-way design.
Keeping the idea of generating 5th-order slopes everywhere at the expense of a moderate 10% preshoot.
With 250 Hz and 2500 Hz as crossover frequencies.
In a WMTM or WWMTM configuration for emulating a single point source in the 500 Hz to 20 kHz frequency range.
Reintroducing MFB (Motional FeedBack) in the woofer section.
Working on 24-bit audio (the DSS-930 was 16-bit).
Operating at a 96 kHz sampling frequency, or possibly at a 192 kHz sampling frequency, in which case you certainly will need the FFT followed by inverse FFT trick.

I'd like you to initiate an open-project going in such direction.
Attached Images
File Type: jpg DSS-930 Acoustical Targets (time domain).jpg (57.5 KB, 51 views)
File Type: jpg DSS-930 Acoustical Targets.jpg (95.8 KB, 28 views)

Last edited by steph_tsf; 5th July 2012 at 01:35 PM.
  Reply With Quote
Old 5th July 2012, 01:56 PM   #13
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
A few more DSS-930 diagrams:

- Resulting Bode Plot (in-axis)
- Resulting Phase Plot
- Resulting 1kHz square wave response

The time-domain ripple in the 1 kHz square wave response is caused by the 44.1 kHz antialias filtering process.

Such ripple can be significantly reduced using a 96 kHz or 192 kHz sampling frequency from recording to playback, using non-aggressive antialias filters. There are a few vinyle rips nowadays, recorded this way. I don't know if we have studio material recorded this way yet. They may be 96 kHz or 192 kHz, but they may not feature the required non-agressive antialias filters.
Attached Images
File Type: jpg DSS-930 Resulting Bode Plot.jpg (129.2 KB, 37 views)
File Type: jpg DSS-930 Resulting phase plot.jpg (122.3 KB, 44 views)
File Type: jpg DSS-930 1 kHz square wave response.jpg (94.0 KB, 46 views)

Last edited by steph_tsf; 5th July 2012 at 02:04 PM.
  Reply With Quote
Old 5th July 2012, 08:55 PM   #14
diyAudio Member
 
Join Date: Feb 2009
Location: UK
Quote:
Originally Posted by Mark.Clappers View Post
Take a look at this thesis paper: http://www.acoustics.hut.fi/~mak/PUB...57_6_PG413.pdf

Very interesting piece!
Hi Mark. Thanks for the link. So I should be OK up to a filter order of 600!

Two questions still remain:

Is filter 'order' a necessary/useful concept when using FIR filters? Likewise 'dB-per-octave'? Why not dB-per-Hz, or a filter that actually reaches zero gain over a specified band? I'm trying to pin down what is simply a throwback to analogue filters and what is fundamental regardless of implementation.

The second question is, why would I want to go to very steep filter cutoffs if, as your link demonstrates, there are audible problems with it. My experiments seem to show that with my speakers, I simply can't hear any problems from a shallower crossover. However, as someone said a few posts back, even my widest crossover is on the quick side, perhaps.

Last edited by CopperTop; 5th July 2012 at 08:58 PM.
  Reply With Quote
Old 5th July 2012, 09:14 PM   #15
diyAudio Member
 
Join Date: Feb 2009
Location: UK
Quote:
Originally Posted by steph_tsf View Post
If you are basing on Linux with ALSA, with a CM6206-based multichannel audio USB attachement, you should attract many audio enthusiasts. If, on the other hand, you are running Windows XP and possibly some VST+ASIO clone like Synthmaker, that's a different story.
Thanks for the very comprehensive reply - it'll take me a while to digest it. But regarding the operating system, sorry to disappoint you but it's XP.

That said, it's all based on open source libraries and bog standard 'C' that should be portable over to Linux. The FFTs are based on FFTW, the graphics (such as they are) are OpenCV, and the audio interface is BASS (I believe that in Linux you'd just substitute ALSA libraries for this.)

I created this thread describing the basic DSP framework which gets audio samples and sends them out:

A bare bones framework for audio DSP on a PC

With an equivalent running on Linux, the FFT stuff etc. would hardly need any changes, I would imagine. It's all just arrays of floats and calls to FFT library functions. The GUI stuff is just a nice-to-have - the user interface could all be done from key presses and printfs.
  Reply With Quote
Old 5th July 2012, 09:59 PM   #16
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
Quote:
Originally Posted by CopperTop View Post
Thanks for the very comprehensive reply - it'll take me a while to digest it. But regarding the operating system, sorry to disappoint you but it's XP.
Don't worry, I'm not disappointed at all. Your generous contribution, aiming at defining a practical & affordable audio DSP framework on WinXP, is a diyAudio milestone. If we can persuade Winamp reading an audio file, injecting the audio samples into the crossover input buffer, without causing WinXP GUI perturbations and/or hangovers, that's ideal.

A few questions about the framework:

Have you tried with a recent PC motherboard featuring the Realtek HD Audio subsystem (three line-level stereo minijacks as outputs)?

On an quite old PC not featuring the Realtek HD Audio, have you tried attaching a CM6206-based USB multichannel audio board ?

Have you tried using ASIO4ALL for converting an on-board Realtek HD Audio subsystem, or a CM6206-based USB attachement, into an ASIO peripheral?

Have you tried VAC (Virtual Audio Cable) for the ASIO signal routing?
  Reply With Quote
Old 6th July 2012, 08:47 AM   #17
diyAudio Member
 
Join Date: Feb 2009
Location: UK
Quote:
Originally Posted by steph_tsf View Post
Because of using the Philips/Matsushita ribbon tweeter, the DSS-930 is using a 4 KHz crossover frequency. This is a quite high crossover frequency, especially in a 2-way context. The Philips RH541 (MFB) relying on conventional Philips AD0140 tweeters featured a 1.4 kHz crossover frequency.
The DSS-930 4 KHz crossover frequency forces you to use high quality well damped membranes for the woofers, of moderate size. They were 5 inch in the DSS-930. Being so tiny, there were two 5 inch drivers acting in parallel in the deep bass range. In the medium range, the bottom 5 inch driver was delivering no output. We may thus say that the DSS-930 was a 2.5-way design.

Before reproducing the DSS-930, you need to select a proper 5 inch driver showing no pathological behavior (in amplitide and in phase) from 2 kHz to 6 kHz. This is not easy. Especially when you want them to feature a long Xmax for dealing with the deep bass.
Steph, many thanks for your comments. Still digesting all the information.

The above extract caught my eye. As far as I can find out from the WWW, the standard M702e crossover frequency is 4 kHz. Does this suggest that it is an unusual design in some way?
  Reply With Quote
Old 6th July 2012, 11:29 AM   #18
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
Quote:
Originally Posted by CopperTop View Post
The above extract caught my eye. As far as I can find out from the WWW, the standard M702e crossover frequency is 4 kHz. Does this suggest that it is an unusual design in some way?
Are you sure about the Mission M702e featuring a 4 kHz crossover? It means the MT702e are using a relatively small midbass driver (diamater of 130 mm or 170 mm) equipped with a well designed cone, breaking-up in a nicely controlled way, naturally providing adequate high frequency damping.

This sounds like a high quality design dating back from 10 years or so. Back in those times, there were three different ways to achieve this : using a woven fibreglass cone (kevlar), using a variable thickness polypropylene cone, or relying on a high quality aluminium cone. Those three materials are heavy compared to paper cones or carbon doped cellulose cones. The drawback is a somewhat low efficiency, far away from the 92 dB/watt efficiency that's considered as a healthy reference in HiFi. Those speakers may exhibit a 88 dB/watt efficiency, and in case there are economies made on the magnetic circuit, the efficiency may drop to 85 dB/watt, and even less in case we face a weak magnetic circuit allowing a big Xmax.
The 4 kHz crossover frequency coupled to a relatively low efficiency allows substantial economies in the tweeter department like using a miniaturized 1/2 inch tweeter, which translates into a wider polar radiation pattern, and a more linear amplitude curve above 10 kHz.

Speakers built this way are very enjoyable to listen. They deliver a quite natural sound. Of course, relying on 130 mm or 170 mm midbass drivers, even if they can deliver the deep bass extension, they can't deliver the deep bass extension at high volume.

The usual upgrade was to rely on a MTM layout featuring two advantages:
1. Maximum output level significantly raised in the deep bass
2. Optimal directivity pattern (in case there are relative phase shifts between the woofer and the tweeter, in the frequency overlap)

A special note about high quality aluminium cones. In general they exhibit a huge resonance before their natural cutoff, say 12 dB or so, but this happens in a controlled way, without the membrane breaking up. With aluminium membranes, you definitely need a notch in the crossover, but its effect is not harmful provided you design it for exactly counterbalancing the natural aluminium cone resonance, in amplitude and in phase.

What's the today situation?

The global recession asked for trivial economies so nowadays speaker designers are forced to select some China-made "one dollar" 130 mm or 170 mm speaker driver optically resembling kevlar, polypropylene or aluminium cones. Nowadays you will find "kevlar" cones, made in molded and colored polypropylene. Nowadays you will find "aluminium" cones made in paper, coated with a thin aluminized layer or spray. Nowadays you will find "polypropylene" cones made in paper, coated with a thin polypropylene layer or spray. Some speakers feature two different coatings : the one that you see (the outer side), and the one that you don't see (the innerside). This enables interesting combinations. All those speakers are designed for featuring a decent efficiency (say 87 dB/watt) with a decent Xmax (say 5 mm), without relying on an oversized magnetic circuit, because of the cone remaining quite lightweight. Most of the time, those "better than paper" cones get out of control above 4 kHz, breaking over above 4 kHz, like featuring a huge +12 dB peak at 4 KHz, then a rapid extinction with two or three breakup peaks. By carefully adjusting the 4 kHz notch in the crossover, and by taking advantage of the natural extinction above 4 KHz, even if the phase behavior becomes pathological above 4 Khz (because of the cone breaking up), you can emulate a 4th-order Linkwitz-Riley crossover at 2 kHz or so.
Having set the crossover at 2 KHz or so, you would use a 3/4 inch tweeter in a 4th-order Linkwitz-Riley highpass, and you are done.
By setting the crossover at 2 KHz instead of 4 kHz, the sound wavelenght at the crossover frequency drops from 85 mm to 170 mm which means that there is more geometric tolerance, regarding the tweeter mounting depth and the tweeter-to-woofer distance.
Also, you can use a 170 mm midbass safely, while when crossing at 4 KHz, a 130 mm midbass was already exceeding the safe "half wavelenght" limit.

So finally, this all makes sense. The industry is not going wrong.

Drivers like this with a 166 mm diameter are currently available on eBay for 6.79 eur.
Dynavox DY-166-9A 16cm 6,5" Bass Lautsprecher Tieftöner 8 Ohm | eBay
Factory direct in a 10,000 quantity, the unit price should drop to $1.99, hence their "one dollar" nickname.

Download Spectra Lab 4.32 for for measuring their Bode plot (gain and phase). This is a two-channel FFT analyzer featuring the required pink noise generator. Compare them with the midbass driver sitting in your Mission M702e.

Last edited by steph_tsf; 6th July 2012 at 11:47 AM.
  Reply With Quote
Old 6th July 2012, 02:06 PM   #19
diyAudio Member
 
Join Date: Feb 2009
Location: UK
Quote:
Originally Posted by steph_tsf View Post
Are you sure about the Mission M702e featuring a 4 kHz crossover?
By no means, and the only reference I can find to it is some distinctly non-authoritative web sites. I'm not in the right location to measure them right now, but the midbass drivers are not particularly small: maybe 170mm and made of some Kevlar type woven material. Certainly in my experiments, 3-4 kHz sounds best, but I've not started to do anything clever with phase and levels yet.

You can buy these speakers for practically nothing (mine cost literally nothing) and they're big, with thunderous bass should it be required. As I recall, a review said that they had an over-warm bass and confused mid region and that's how they seemed to me when I got them. Having been 'activated' these problems have gone, and they sound rather stunning - even if I'm not running them at the right crossover frequency yet. Maybe I've stumbled upon the ideal speaker for a beginner's active crossover project.
  Reply With Quote
Old 7th July 2012, 10:14 AM   #20
diyAudio Member
 
Join Date: Feb 2009
Location: UK
Here's a poor quality photo of the unmodified 702e crossover. The 4mm terminals are marked '+' and '-' : woofer at the bottom tweeter at the top. So the woofer signal is fed via a series inductor then capacitor to ground in parallel with the woofer. The tweeter is fed via a series resistor and capacitor, then an inductor to ground in parallel with the tweeter.
Attached Images
File Type: jpg M702e crossover.jpg (200.9 KB, 62 views)
  Reply With Quote

Reply


Hide this!Advertise here!
Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Capacitor tolerance importance for high end crossover filters? garrettba03 Parts 2 11th February 2012 01:52 PM
Importance of layout robmil Solid State 8 12th April 2011 07:09 PM
The Importance of Being Biased Nelson Pass Pass Labs 74 26th July 2007 01:58 PM
Importance of building your own crossover? patchwork Multi-Way 23 3rd January 2007 09:46 AM
Importance of Heatsinking dumdum Solid State 16 4th February 2004 02:02 PM


New To Site? Need Help?

All times are GMT. The time now is 06:30 AM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright ©1999-2014 diyAudio

Content Relevant URLs by vBSEO 3.3.2