Can ScopeFIR take a measurement, a target curve, and generate the FIR file that corrects the measurement to match the target curve.
Where the target is defined by both mag and phase ? That's what has value for my purposes, and I'm always searching/studying these....
When do you find Kaiser-Bessel most helpful?
I've played with it some, adjusting alpha and comparing against the more commons...tapered cosine, Hanning, Blackman- Harris, Mod Adrienne, etc....
but nearly always end up just sticking with Cosine tapered..
Where the target is defined by both mag and phase ? That's what has value for my purposes, and I'm always searching/studying these....
When do you find Kaiser-Bessel most helpful?
I've played with it some, adjusting alpha and comparing against the more commons...tapered cosine, Hanning, Blackman- Harris, Mod Adrienne, etc....
but nearly always end up just sticking with Cosine tapered..
If you have a spare $400 lying around (and some of us spend way more than that on test gear and/or tools) I can heartily recommend ScopeFIR for your FIR needs. Relevant to the discussion above, the windowing functions are all-encompassing, including the rarely seen but powerful Kaiser-Bessel window with adjustable alpha to control the tradeoff between initial rolloff and ultimate attenuation. ScopeFIR's been a critical part of my toolbox across several jobs and my own use for over twenty years, and every filter out of it has been spot on. Frankie-Bob says two thumbs way up, don't leave flat without it!
Thanks I’ll give it a look
Can you import smaart transfers
ScopeFIR doesn't do that -- but you can take the coefficients produced by another program, convolve with a crossover FIR, and get a brand new filter with both characteristics. The new filter length will be the sum of the two initial filter lengths, however the program has a truncation option either by length or by quantizing the coefficients and throwing away the zero values. Truncating to the same precision as the input coefficients most often yields a filter no longer than the bigger one of the pair.
K-B is useful where I want to tweak rolloff vs stopband attenuation: if you're not too concerned about getting -120 dB stopband (60 dB is more than enough for woofers or midranges) you can get a quicker rolloff at the crossover point for a given length of filter.
Note the coefficients for highpass and lowpass are not exactly complementary: they differ by a couple of percent, inaudible in the grand scheme of things. You can make a complementary filter by exporting the LPF coefficients into a text file, negating everything, then adding 1.0 to the central value. Voilà, instant filter pair summing to a one-sample impulse response.
K-B is useful where I want to tweak rolloff vs stopband attenuation: if you're not too concerned about getting -120 dB stopband (60 dB is more than enough for woofers or midranges) you can get a quicker rolloff at the crossover point for a given length of filter.
Note the coefficients for highpass and lowpass are not exactly complementary: they differ by a couple of percent, inaudible in the grand scheme of things. You can make a complementary filter by exporting the LPF coefficients into a text file, negating everything, then adding 1.0 to the central value. Voilà, instant filter pair summing to a one-sample impulse response.
Try hard actually cool
OK so let me understand you correctly hear me out on this
If I have a Mini Dsp 2 x 4HD
And I do driver FIR on 4 FIRs
You’re telling me I can measure the sums of left and right separately and merge the sums FIR with the two other FIRs on each respective ch?
That is actually kinda cool
And keep the same amount of taps?
Can taps be assigned and does it do minidsp filters ?
OK so let me understand you correctly hear me out on this
If I have a Mini Dsp 2 x 4HD
And I do driver FIR on 4 FIRs
You’re telling me I can measure the sums of left and right separately and merge the sums FIR with the two other FIRs on each respective ch?
That is actually kinda cool
And keep the same amount of taps?
Can taps be assigned and does it do minidsp filters ?
Thanks I’ll give it a look
Can you import smaart transfers
From the help page:
ScopeFIR can export and import FIR filter coefficients to and from a wide variety of text and binary file formats. Text formats encode the data as numerical characters on lines in a text file; Binary formats encode the data directly in binary form. Text formats are often easier to work with because you can examine the data using a text editor, but Binary formats usually are more compact. (Tip: You can easily generate an example of any of ScopeFIR's data file formats. Just use the Fill Filter With Sine function to generate coefficients, then write the coefficients out to a file.)
One special subcategory of text formats is Assembly. Assembly files are simply text files in a special format that is required by the assembler of a particular DSP microprocessor.
Almost all ScopeFIR data file formats are read/write, but the few that are read-only or write-only are so noted below.
ScopeFIR supports the following Text file formats:
Floating-Point formats
Text😀ecimal. This is a floating-point format which holds one data sample per line. If the file is Complex, each line holds an Inphase, Quadrature data pair, delimited by one or more spaces or tabs.
Text😛lot. This format holds X-Y data, with optional titles. The first column, X, is always ignored. (The X-values are calculated automatically based on the sampling frequency, and starting at zero. Note that this assumes that the data is equally X-spaced.) The second column holds the Real sample data. If the file is Complex, the third column holds the Quadrature sample data. Titles may optionally be included in the file in the following order: Main Title (line 1), Y-Title (line 2), X-Title (line 3). Note: if you include any title, you must include all three.
Text:FIR. This format is identical to Text😀ecimal except that the first line holds the number of data points in the file.
Text:C. This format outputs the data as C-language code. See C Options for details.
Text:Analyzer. This format is produced by Hewlett-Packard logic analyzers. (Read only.)
Fractional Formats (N-Bit Signed)
Text:Fract. This format is similar to Text😀ecimal except that the data consists of decimal integers representing N-bit fractional data. For example, if N is 16, "32767" represents "+0.999969482" and "-32768" represents -1.0.
Text:Hex. This format is similar to Text:Fract except that the data consists of hexadecimal integers representing N-bit fractional data. For example, if N is 16, "7FFF" represents "+0.999969482" and "8000" represents "-1.0."
Text:Binary. This format is similar to Text:Fecimal except that the data consists of binary integers representing N-bit fractional data. For example, if N is 16, "0111111111111111" represents "+0.999969482" and "1000000000000000" represents "-1.0."
ScopeFIR supports the following Assembly file formats:
Asm:TI Fixed. This format is used to generate assembly code data for Texas Instruments fixed-point devices. It creates a 16-bit fractional representation (like Text:Fract above.) See TI Fixed-Point Assembly Options for details. (Write only.)
Asm:ADI PM. This format is used for initializing Program Memory (PM) of Analog Devices fixed-point DSP microprocessors. PM data consists of 24-bits (6 hex digits.) On read, all 24 bits are read; on right, the lower 8 bits are rounded up into the upper 16 bits, and the lower 8 bits are given as "00". This provides 16-bit coefficients when FIR filter coefficients are read from PM in the usual way.
ScopeFIR supports the following Binary file formats:
Binary:Float. This format represents data as IEEE 4-byte floating-point numbers. If the file is Complex, the data is stored in Inphase, Quadrature pairs.
Binary😀ouble. This format is identical to binary:float except that it holds IEEE 8-byte floating-point numbers.
Binary:Wave. This format is the "Wave" format used by Microsoft Windows. If the data is "mono" it is a treated as a Real file holding an Inphase signal; if it is "stereo", it can be treated as a Complex file holding Inphase data in the Left channel and Quadrature data in the Right channel. (Note that this is not strictly correct because "stereo" is not the same as "quadrature", but mapping Stereo to Complex is a pragmatic approach.)
You can try ScopeFIR free for thirty days to see if it works for you, after which it wants a license key.
Disclosure: I make no money or get any other recompense, just a satisfied user.
If I have a Mini Dsp 2 x 4HD
And I do driver FIR on 4 FIRs
You’re telling me I can measure the sums of left and right separately and merge the sums FIR with the two other FIRs on each respective ch?
Not quite getting your question, could you explain again?
So ..
Let’s say I have an fir for a driver in a two way but have 4 fir ch…..
To do driver and global correction over top of eachother in 2 iterations.
I can have it add the left channel let’s say correction to the two left ch speakers that already have an fir made for driver level tuning ?
Let’s say I have an fir for a driver in a two way but have 4 fir ch…..
To do driver and global correction over top of eachother in 2 iterations.
I can have it add the left channel let’s say correction to the two left ch speakers that already have an fir made for driver level tuning ?
If I understand your question correctly, you have a FIR for correcting a woofer to flat then you want to add a LPF FIR for crossing over said woofer. Then yes, you can convolve both FIRs so you have one FIR which includes both driver correction and crossover filter. The same applies to the tweeter, so two FIRs in total, one for woofer and one for tweeter, which include both crossover filter and frequency response EQ. It's actually a fine way to run since funnies outside driver passbands are sorted before they can affect the summed response.
HOWEVER: equalizing a woofer flat to 20 kHz is not recommended, nor is EQing a tweeter flat to 20 Hz. Generate correction filters only until the crossover filter stopbands, say one octave above crossover for the woofer and one octave below crossover for the tweeter. That way you avoid amplifying math roundoff errors outside the drivers' range of interest and filter stopbands are kept sane instead of rising some ridiculous number of dB at the extrema.
HOWEVER: equalizing a woofer flat to 20 kHz is not recommended, nor is EQing a tweeter flat to 20 Hz. Generate correction filters only until the crossover filter stopbands, say one octave above crossover for the woofer and one octave below crossover for the tweeter. That way you avoid amplifying math roundoff errors outside the drivers' range of interest and filter stopbands are kept sane instead of rising some ridiculous number of dB at the extrema.
Yeah you sorta got it right
Let me try one more time
Let’s say you have 4 for ch , each ch is 1024taps
You have a 2 way system
You use the 4 ch and make a driver correction (eq and phase) and make a crossover for two woofers and two tweeters to make a L and R full range system.
you get the system aligned and it sounds good, altho you want to do a gloabal correction on left and right
So the gloabal left and right would mean 2 additional FIRs that you don’t have.
Could you add that correction over the top of the 4 firs that you already have?
Hope that makes more sense…..
Let me try one more time
Let’s say you have 4 for ch , each ch is 1024taps
You have a 2 way system
You use the 4 ch and make a driver correction (eq and phase) and make a crossover for two woofers and two tweeters to make a L and R full range system.
you get the system aligned and it sounds good, altho you want to do a gloabal correction on left and right
So the gloabal left and right would mean 2 additional FIRs that you don’t have.
Could you add that correction over the top of the 4 firs that you already have?
Hope that makes more sense…..
You can convolve two filters together with trace arithmatic in REW, if you window the output you can maintain the same number of taps.Could you add that correction over the top of the 4 firs that you already have?
ScopeFIR doesn't do that -- but you can take the coefficients produced by another program, convolve with a crossover FIR, and get a brand new filter with both characteristics. The new filter length will be the sum of the two initial filter lengths, however the program has a truncation option either by length or by quantizing the coefficients and throwing away the zero values. Truncating to the same precision as the input coefficients most often yields a filter no longer than the bigger one of the pair.
Gotcha, thx.
I don't really need the ability to convolve files into one. The few times I've toyed with it, just for curiosity's sake, I used REW.
My files sizes are always pretty small...16 k taps maximum (at 48kHz) . My guess is you use considerably larger?
K-B is useful where I want to tweak rolloff vs stopband attenuation: if you're not too concerned about getting -120 dB stopband (60 dB is more than enough for woofers or midranges) you can get a quicker rolloff at the crossover point for a given length of filter.
Yep. In my book 60 dB is more than enough for anything....
One sample impulse results from summing are so easy with the simple complementary xover types from rePhase or other FIR generators, I can't see need for further complication ????Note the coefficients for highpass and lowpass are not exactly complementary: they differ by a couple of percent, inaudible in the grand scheme of things. You can make a complementary filter by exporting the LPF coefficients into a text file, negating everything, then adding 1.0 to the central value. Voilà, instant filter pair summing to a one-sample impulse response.
So, I’ve done a few systems now in cars with the OpenDrc 2ch upstream of a standard DSP….
Compared to my car with fully FIR crossover and a gloabal fir
Guess what…..
So as long as the phase is good on the standard dsp (crossovers tracking decently and any natural GDs that look like an APF are sorted out by adding an APF to all the other drivers in the modal and lows that don’t have the issue)
Then, the result is the same damn thing
So , 2ch FIR is all anyone needs for 2ch audio
Now the sub adds a layer of complexity because you can’t really add the sub into both ch….. if you want to phase correct below 100hz , the sub will need its own fir OR do the left and right phase correction with sun off , then measure the sub and make it match whichever ch (left or right) and inset it on that ch (whichever matches the best)
Then it might be necessary to add an APF to both Left and Right (no sub) to match the sub after the correction
But , why not a 2ch correction……. I’ve discovered it works great. Just get good phase first .
Compared to my car with fully FIR crossover and a gloabal fir
Guess what…..
So as long as the phase is good on the standard dsp (crossovers tracking decently and any natural GDs that look like an APF are sorted out by adding an APF to all the other drivers in the modal and lows that don’t have the issue)
Then, the result is the same damn thing
So , 2ch FIR is all anyone needs for 2ch audio
Now the sub adds a layer of complexity because you can’t really add the sub into both ch….. if you want to phase correct below 100hz , the sub will need its own fir OR do the left and right phase correction with sun off , then measure the sub and make it match whichever ch (left or right) and inset it on that ch (whichever matches the best)
Then it might be necessary to add an APF to both Left and Right (no sub) to match the sub after the correction
But , why not a 2ch correction……. I’ve discovered it works great. Just get good phase first .
Last edited:
hi there
long time reader, first time poster here. i'm very interested in the paper by greg birchin about the perfect reconstruction crossover, as i'm in the middle of building a wallmounted nested array (symmetrical pairs) speaker. greg, if your reading this, could you please send me the paper via pm (i'm not allowed to pm anybody as i have to less posts)?
i appreciate this community and am happy to contribute, as soon as i have something relevant to ask or share 🙂
best regards, joachim
long time reader, first time poster here. i'm very interested in the paper by greg birchin about the perfect reconstruction crossover, as i'm in the middle of building a wallmounted nested array (symmetrical pairs) speaker. greg, if your reading this, could you please send me the paper via pm (i'm not allowed to pm anybody as i have to less posts)?
i appreciate this community and am happy to contribute, as soon as i have something relevant to ask or share 🙂
best regards, joachim
Hey again ! 🙂So, I’ve done a few systems now in cars with the OpenDrc 2ch upstream of a standard DSP….
Compared to my car with fully FIR crossover and a gloabal fir
Guess what…..
So as long as the phase is good on the standard dsp (crossovers tracking decently and any natural GDs that look like an APF are sorted out by adding an APF to all the other drivers in the modal and lows that don’t have the issue)
Then, the result is the same damn thing
So , 2ch FIR is all anyone needs for 2ch audio
Now the sub adds a layer of complexity because you can’t really add the sub into both ch….. if you want to phase correct below 100hz , the sub will need its own fir OR do the left and right phase correction with sun off , then measure the sub and make it match whichever ch (left or right) and inset it on that ch (whichever matches the best)
Then it might be necessary to add an APF to both Left and Right (no sub) to match the sub after the correction
But , why not a 2ch correction……. I’ve discovered it works great. Just get good phase first .
How many ways / xovers were in the comparison you made, global vs doing individual drivers?
With boxes I've tried that comparison on, that were two ways, it didn't matter IF the tuning started out decent. Global equaled individual.
But starting out decent, meant truly decent !!!!!!
Like a Meyer two-way or something....or any box with an honest smoothly sloping phase curve....... either active analog, or passive xover in place, didn't matter much.
When I've tried comparison with 3-ways or above....global FIR has always been pretty yuck, compared to individual sections with separate FIR filter embedded with linear phase xovers.
And i do mean always.
So very curious about your comparisons. Thx 🙂
@mark100
Yeah wow that syn looks like a beast! What a cool project.🥳🥳🥳🥳
So yeah with multi-way unwrapping, the phase needs to track per channel….
What I do is view the phase with the crossovers off, and compare all the ways, and then do what’s needs to be done to get them to track the same with no filters and the magnitude on each driver flattened with no crossovers, the entire natural response.
If I see a wrap (frequencie dependent delay of sort that shows as a phase wrap) I’ll add APFs if needed to get them to track the same.
Then I’ll build the minimum phase crossover, and it’s not so important that left and right match because we can fix all of that phase in the gloabal, it’s more important that same side drivers match in phase…
Then a gloabal unwrap works fine , at least it has worked fine up to now
Yeah wow that syn looks like a beast! What a cool project.🥳🥳🥳🥳
So yeah with multi-way unwrapping, the phase needs to track per channel….
What I do is view the phase with the crossovers off, and compare all the ways, and then do what’s needs to be done to get them to track the same with no filters and the magnitude on each driver flattened with no crossovers, the entire natural response.
If I see a wrap (frequencie dependent delay of sort that shows as a phase wrap) I’ll add APFs if needed to get them to track the same.
Then I’ll build the minimum phase crossover, and it’s not so important that left and right match because we can fix all of that phase in the gloabal, it’s more important that same side drivers match in phase…
Then a gloabal unwrap works fine , at least it has worked fine up to now
Last edited:
I'm creating a document that contains pretty much everything I know about Matched Delay Subtractive crossovers, including aspects discussed in this thread. It is complete, but still in draft form. I have attached the table of contents. If anybody is interested in this, PM me and I will send the whole document -- it's BIG, currently 116 pages and 5 MB, but that's mostly graphics. I'd appreciate feedback about errors, omissions, ambiguities, etc. Thanks.
Attachments
When I find the time to do so I will definitely try the two-stage subtracive delay with sigma studio.
Regards
Charles
Regards
Charles
- Home
- Loudspeakers
- Multi-Way
- Why not IIR filters + a global phase linearization by FIR