Great!Thank you for the reply,
I am using a mac as source, and a heavily modified DCX. So I will be playing around this Xmass with your software!!
Merci
Peter
Do not hesitate to come back with any question, suggestion, ... bug report 😀
And I will be very interested in reading your insightful comments 🙂Wow, how did I miss this before? Will try this for sure. Thanks for posting.![]()
Great job on this pos.
I set up my Foobar configuration (foo convolver) a few weeks back to implement a simple three-way with the "Filters Linearization" portion and it really does work well.
Dave.
I set up my Foobar configuration (foo convolver) a few weeks back to implement a simple three-way with the "Filters Linearization" portion and it really does work well.
Dave.
OK, how does one proceed? I think I understand the basics, let's see.
- Passive filter
- I know that my acoustic slopes are L/R 4th @ 825Hz (measured)
- My box is vented, low Q, 35Hz
- I enter those values in the Filters Linearizion tab
- Export the impulse to use in a convolver.
- I can check this impulse in HOLM to see how well it matches my measurements.
Hi Peter,
To do so you will only need to dial the filters you are using in your DCX in the "filter linearization" tab in rePhase, and generate an impulse for these (ideally you will want to dial your acoustical filters, not only the electrical ones...).
This is similar to phase arbitrator (which happen to have a user manual 😉 )
Can this be done in a single impulse, or will there have to be phase correction for each channel separately?
I use J River's convolver but am having issues with their loopback using multi-channel convolution (I used rePhase to generate linear filters for my 3-ways), but others report that 2 channel convolution works fine. I'd like to build my crossovers in JR's PEQ and do the phase linearization if possible with a single impulse.
(moving rePhase and related phase linearization discussion over from the Hypex DCLP thread)
I don't anticipate implementing a real time version of Cross Time DSP. The required window length in time reversed IIR goes to infinity as the center frequency of the correction goes to zero just like the number of taps in a phase correcting FIR goes to infinity. Time reversed IIR scales more poorly in terms of storage than FIR since with FIR there's only one window whereas IIR has to have multiple ones---actually quite a few of them if you're trying to make the merging between windows gentle enough to keep the numerical THD low enough that the platform's performance limits on -100 to -120dB THD in the DAC. So you tend to end up wanting something like a SHARC with an external RAM to run it on, though some applications fit in a single Cortex M4 with external RAM. I'm entirely capable of DIYing that but the VisualDSP++ license for the SHARC costs more than my entire stereo system and all of my instruments combined and a rackmount Atom still entails the overhead of keeping one's PC patched and having an audio interface for it. A multi-core M4 board would be kind of fun but, given how easy it is to do the reverse time pass once on my laptop at burn time and avoid the need for overlapping windows and computation, it's a low priority project. I have years' worth of higher priority projects...
Arbitrator doesn't overlap the buffers, just emits them sequentially with whatever discontinuity in the output may result. If you grab the demo and measure THD with it in the loop with HOLMImpulse (or whatever; an audio interface with loopback is pretty useful here) you'll see the resulting distortion at low frequencies. I asked Jan about fixing this back in 2010 and he never responded. PLParEQ does overlap and window the buffers to produce very small and soft discontinuities but, as a result, uses quite a lot of CPU. It's also pretty expensive and that's after a 40% price drop when David sold Refined Audiometrics to Acudora.Interesting software! Have you implemented a real-time version?
It would be similar to Phase Arbitrator in its implementation I think (inverted overlapped buffers).
I don't anticipate implementing a real time version of Cross Time DSP. The required window length in time reversed IIR goes to infinity as the center frequency of the correction goes to zero just like the number of taps in a phase correcting FIR goes to infinity. Time reversed IIR scales more poorly in terms of storage than FIR since with FIR there's only one window whereas IIR has to have multiple ones---actually quite a few of them if you're trying to make the merging between windows gentle enough to keep the numerical THD low enough that the platform's performance limits on -100 to -120dB THD in the DAC. So you tend to end up wanting something like a SHARC with an external RAM to run it on, though some applications fit in a single Cortex M4 with external RAM. I'm entirely capable of DIYing that but the VisualDSP++ license for the SHARC costs more than my entire stereo system and all of my instruments combined and a rackmount Atom still entails the overhead of keeping one's PC patched and having an audio interface for it. A multi-core M4 board would be kind of fun but, given how easy it is to do the reverse time pass once on my laptop at burn time and avoid the need for overlapping windows and computation, it's a low priority project. I have years' worth of higher priority projects...
The phase corrections on my subwoofers are LR4 at 40Hz and LR6 at 200Hz---the speaker build is documented in this thread. Blackman seemed to be the best window for doing the phase linearization, 200Hz LR6 XO, and dipole and driver EQ in a single filter at 44.1kHz (redbook). I agree rectangular's a better choice for phase linearization alone but of course it produces unhappy stopband attenuation on an XO. I didn't look especially hard at two FIR filter approaches but I didn't find any that resulted in a reduced number of taps. Probably the best way to go about it would be high precision IIR for XO and EQ and FIR for phase linearization. That seems to want around 2000 taps, more or less in line with your estimate.1024 taps should be enough to correct even a LR 48khz at 100Hz with only minor phase deviation down low (and of course any other additional filter at higher frequencies).
Well then, sir, you need better biquads. You can find a basic implementation here. 🙂fft convolution lead to much more taps available, still with less rounding errors than biquads
For me it's mainly FIR CPU and storage requirements that shift the optimum solution IIR, though I have applications where delay is a factor as well. For cost effective, simple forward time phase correction FIR is certainly hard to beat and the miniSHARC is quite interesting as a way of enabling corrections at lower normalized frequencies. 800MMACs is somewhere around 18,000 total taps which is enough to run even my fairly demanding low frequency phase corrections, XO, and EQ all in FIR on redbook. Which is no bad thing as miniDSP probably isn't going to support biquads wth 64 bit coefficients and feedback. However, there are some things I want to explore which require more control over the platform than miniDSP has historically provided and that, in turn, leads me to choose less powerful hardware which can't crunch the FIRs I require. So I'm in IIR space for the time being, though the amount of taps a SHARC can get through with 1.2W of dissipation is pretty cool.I think FIR has a bad reputation because it is always associated with semi-automated correction tools (which are sometimes really good, but require far more knowledge than it seems to operate correctly and not introduce more problems than solutions), steep filters (brickwall...), and delay.
Last edited:
OK, how does one proceed? I think I understand the basics, let's see.
Are those the basic steps?
- Passive filter
- I know that my acoustic slopes are L/R 4th @ 825Hz (measured)
- My box is vented, low Q, 35Hz
- I enter those values in the Filters Linearizion tab
- Export the impulse to use in a convolver.
- I can check this impulse in HOLM to see how well it matches my measurements.
yes,to check the phase linearization,export from rephase with .txt file.
import impulse.txt with holm,you can see the opposite curve applied in the convoluton engine.
only a single stereo convolution is needed in front of crossover (analog,IIR,passive)
a better way is to make a mic measurement of loudspeaker,aplly theoritical phase rotation and adjust with the phase EQ tab in rePhase.
An externally hosted image should be here but it was not working when we last tested it.
Last edited:
two small feature requests
It's not well known, but the ES9016 and ES9018 DACs support user specified antialiasing filters. One interesting use of rePhase is to explore what sort of constrained phase response filters could be programmed into these DACs. However, this is difficult with the 0.9.2 build as it's limited to a maximum sampling rate of 192kHz and a maximum frequency in the response graph of 30kHz.
pos, if you could
1) add 352.8kHz, 384kHz, 705.6kHz, 768kHz, 1.4112MHz, and 1.536MHz to the list of supported sampling rates
2) add an option to select or specify the graph's maximum frequency (a checkbox for 30kHz versus Nyquist would be sufficient, though more granular control would be nice)
checking out these design possibilities would be quite a bit easier since the relevant sampling rate could be specified and the response seen. I'd make this change but I don't see source code available at sourceforge.
It's not well known, but the ES9016 and ES9018 DACs support user specified antialiasing filters. One interesting use of rePhase is to explore what sort of constrained phase response filters could be programmed into these DACs. However, this is difficult with the 0.9.2 build as it's limited to a maximum sampling rate of 192kHz and a maximum frequency in the response graph of 30kHz.
pos, if you could
1) add 352.8kHz, 384kHz, 705.6kHz, 768kHz, 1.4112MHz, and 1.536MHz to the list of supported sampling rates
2) add an option to select or specify the graph's maximum frequency (a checkbox for 30kHz versus Nyquist would be sufficient, though more granular control would be nice)
checking out these design possibilities would be quite a bit easier since the relevant sampling rate could be specified and the response seen. I'd make this change but I don't see source code available at sourceforge.
Thank you Dave!Great job on this pos.
I set up my Foobar configuration (foo convolver) a few weeks back to implement a simple three-way with the "Filters Linearization" portion and it really does work well.
Dave.
Would you care to elaborate on your configuration and the gain you hear with phase linearization?
From the feedbacks I have so far it looks like it is more noticeable for low frequency crossovers (for example the subwoofer crossover), but I would be curious to have your opinion in a 3 way. What are your crossover frequencies?
OK, how does one proceed? I think I understand the basics, let's see.
Are those the basic steps?
- Passive filter
- I know that my acoustic slopes are L/R 4th @ 825Hz (measured)
- My box is vented, low Q, 35Hz
- I enter those values in the Filters Linearizion tab
- Export the impulse to use in a convolver.
- I can check this impulse in HOLM to see how well it matches my measurements.
Correct 🙂
When the motivation comes back I will try add a measurement import feature in a next version, to alleviate the need to check the impulse with HOLM (or REW) and be able to see the effect of a correction in realtime.
In the meantime you will have to use the C=A*B feature in either HOLM or REW...
Can this be done in a single impulse, or will there have to be phase correction for each channel separately?
I use J River's convolver but am having issues with their loopback using multi-channel convolution (I used rePhase to generate linear filters for my 3-ways), but others report that 2 channel convolution works fine. I'd like to build my crossovers in JR's PEQ and do the phase linearization if possible with a single impulse.
As Thierry pointed out only a stereo convolution with phase-only correction in front of an IIR filter should be enough if your (acoustical) filters are phase coherent.
If you use JRiver you can do the whole filtering with rephase without resotring to IIR filtering. Here is a small tutorial written by Jimmy Thomas that describe how to do it:
http://jimmy.thomas.free.fr/Jriver/Tuto-Jriver-RePhase-HolmImpulse.pdf
It is in French but here is an automated translation (the picture are missing so it needs to be read alonside the opriginal version...) :
Google Translate
(in french only, sorry, but maybe some online translation tool will be able to
It's not well known, but the ES9016 and ES9018 DACs support user specified antialiasing filters. One interesting use of rePhase is to explore what sort of constrained phase response filters could be programmed into these DACs. However, this is difficult with the 0.9.2 build as it's limited to a maximum sampling rate of 192kHz and a maximum frequency in the response graph of 30kHz.
pos, if you could
1) add 352.8kHz, 384kHz, 705.6kHz, 768kHz, 1.4112MHz, and 1.536MHz to the list of supported sampling rates
2) add an option to select or specify the graph's maximum frequency (a checkbox for 30kHz versus Nyquist would be sufficient, though more granular control would be nice)
checking out these design possibilities would be quite a bit easier since the relevant sampling rate could be specified and the response seen. I'd make this change but I don't see source code available at sourceforge.
Ok I will try to add these in the next version!
What format would you need? 32 bits IEEE754? txt file?
What are the exact frequency values in Hz?
Extending the graph range will be more difficult (it is fixed right now), but I will work on it.
I need to find some time and motivation to work on rephase again.
I would also like to add an oversampling feature to reduce the ripples Barleywater has noted.
As for the source code, it is not clean enough to be published yet I'm afraid 😱
It was a test bench as well as a software, and adding features (and A GUI!) over and over in this configuration rapidly leads to something no one would be proud of 😛
Know the feeling; I have some binaries in the public domain I hope people never see the sources for. They were written early in my career and have some embarassing noob things in the code. 🙄
Thanks for the sampling rate adds. Those are the exact frequency values---they're just 8, 16, and 32x in the usual 44.1 and 48 series. The output formats already supported should be fine.
Thanks for the sampling rate adds. Those are the exact frequency values---they're just 8, 16, and 32x in the usual 44.1 and 48 series. The output formats already supported should be fine.
Twest, how are you getting the functions into the DAC? I think I have a few ES9016 implementations kicking around here and would like to try it.
I've replied over in the ES9016 thread as the fiddly details of ESS DAC configuration are kind of out of scope to rePhase.
Last edited:
Just how long does the impulse response have to be (samples) to have any accuracy at low frequerncy?
JRiver like at least 1 second, tho I'm not sure why.
?
Length should not depend on convolver. It's a matter or frequency resolution.
I just know that JRiver asks for a 1 second impulse length - but it works with less. Maybe it's not a frequency requirement, but a room EQ thing.
FWIW, I can never get an exact match in the bass, say below 30Hz, when exporting and re-importing an impulse in HOLM. Even at +/- 10K samples and seeing nothing out that far.
FWIW, I can never get an exact match in the bass, say below 30Hz, when exporting and re-importing an impulse in HOLM. Even at +/- 10K samples and seeing nothing out that far.
I just know that JRiver asks for a 1 second impulse length - but it works with less. Maybe it's not a frequency requirement, but a room EQ thing.
FWIW, I can never get an exact match in the bass, say below 30Hz, when exporting and re-importing an impulse in HOLM. Even at +/- 10K samples and seeing nothing out that far.
Yes, 10k samples at 48k sampling only gibe 4.8 Hz resolution and, as you note, you are probably not going to get the kind of accuracy needed from a measurement where the noise floor is maybe -50 or 60dB at best. That is a problem and it gets worse as the sample rate goes up.
- Home
- Design & Build
- Software Tools
- rePhase, a loudspeaker phase linearization, EQ and FIR filtering tool