rePhase, a loudspeaker phase linearization, EQ and FIR filtering tool

A 1.4.0 test version is online, working for the next 10 days for anyone willing to test it before the final 1.4.0 release :)
https://www.dropbox.com/s/iflbrd2awoqmvlt/rePhase_1.4.0_TEST.zip?dl=1
(time limit is there to avoid having potentially broken test versions of the software in circulation)

Please tell me if you find any problem or incompatibilities, or if you have suggestions for adjustments.

change log:
Code:
1.4.0 2018-12-??
  New features:
    - "frequency response (.frd)" format to export the generated correction
      (ie the red curves) as a three column frequency/magnitude/phase file
    - clicking an EQ fader or entry and then doing a middle click or
      ctrl-click on the response graph will update this particular EQ
      settings in real-time as long as the mouse button is held pressed.
      Q parameter shall still be modified manually.
      /!\ Beware: dB position is relative to the 0 dB line, not the
      response trace. Same goes for phase EQ, relative to the 0° line.
    - Added "linearize"/"rotate" option in Filter Linearization tab.
      "linearize" is the default and compensates for phase rotation of a
      given filter (inverse all-pass), whereas "rotate" emulates the phase
      rotation of the chosen filter without affecting magnitude (all-pass).
    - New "throughout banks" EQ tools to bypass or order EQ points
      throughout all banks at once. Ordering EQ points between different
      banks requires EQ types to be identical in all banks.
      /!\ Beware: use with caution, this is not easy to undo
  Adjustments:
    - turn entries' background yellow for the selected fader to reflect the
      fact that it can now be modified directly from the graph
    - more compact setting file
    - link to rephase.org in Help menu
    - stay in same tab after settings load/reset
    - added Nyquist frequencies of a few common sampling rates in frequency
      upper limit choices in the Range tab
    - removed bypassed EQs from EQ points count in "Bank" drop-down menu
    - avoid saving measurement summary in the setting file, and generate it
      on the fly

Please note: settings format might change in the final 1.4.0 release, so while playing with this test version keep a copy of your important setting files as saved with rephase 1.3.0 (or any prior stable version), as these are the only versions guaranteed to be compatible with the final 1.4.0 (and following) release.
 
Last edited:
INFO

After 6 years in the multi-way subforum, the rephase thread was moved to the software subforum in august without me noticing.
This was arguably an adequate place for the topic at hand, but given the long attachment to the multi-way subforum I though it was better to have it there to avoid confusing users (and google ;)).

So, thanks to Pano, it is now back to the multi-way subforum :)
 
Last edited:
  • Like
Reactions: 1 user
I've already asked that ARTA should be moved to Software area, but nothing has happened. That is correct place also for rePhase. Why these two are in different position here? Are users of this forum so blind or stupid that some software should be categorized as multi-way speakers? And how rePhase supports multi-way speakers better than some others?

This is not really important, but some common logic is expected.
 
Last edited:
@Pos... I've a search on this thread but I've not yet found an answer. In rePhase, what does Optimization menu is for ?

I use REW to calculate room's filters and I import the htm file on rePhase. I cut-off on rePhase low frequencies (about 35hz) with 96-LR filter and export to txt file to be used then with Logitech Media Server.
 
I've already asked that ARTA should be moved to Software area, but nothing has happened. That is correct place also for rePhase. Why these two are in different position here? Are users of this forum so blind or stupid that some software should be categorized as multi-way speakers? And how rePhase supports multi-way speakers better than some others?

This is not really important, but some common logic is expected.
Hello Kimmo,

Software might be the logical choice, but the reality is that these two threads have been in the multiway subforum for so long (12 years for the Arta thread, 6 for the rephase one) that it has now become the logical place were people/user expect to find them and look for updates.
 
  • Like
Reactions: 1 user
@Pos... I've a search on this thread but I've not yet found an answer. In rePhase, what does Optimization menu is for ?

I use REW to calculate room's filters and I import the htm file on rePhase. I cut-off on rePhase low frequencies (about 35hz) with 96-LR filter and export to txt file to be used then with Logitech Media Server.
Hello Kreisky,

You will often find this kind of info in the change log.

The optimization feature is an iterative process that tries to make the result magnitude curve closer to the target one, step by step.
The parameter controls the number of iterations (ie the generation time).

The optimization process can really help to reach a given target when the number of taps is limited, but it has two drawbacks:
- iterations will often raise the "noise" floor (not really noise, but...), and that is what the "to" parameter is for: it does stop the process when the "noise" exceed the given dB floor
- optimization will tend to break the magnitude/phase relation, and will for example generate pre ringing on a minimum-phase correction
 
Here are two examples of the effect of the optimization process on linear-phase corrections with a low taps number.
 

Attachments

  • rephase optimization 1.PNG
    rephase optimization 1.PNG
    28.4 KB · Views: 379
  • rephase optimization 2.PNG
    rephase optimization 2.PNG
    28.6 KB · Views: 372
hello pos


im considering using rephase for converting my speakers x-overs to an all active setup using liner phase FIR filters , i have a few questions i hope you can help me with so i can correctly use rephase to make the best design choices.



1.under the 'generate' button in green letters. what is 'max impulse'. and how should this be interpreted?..what exactly does -4.52db mean for example?


2.are brick-wall filters a good design choice for x-overs? i see for example a low pass brick-wall filter at say 120hz can have a perfect response to target using very little taps but at a very low sampling rate of double the cut off frequency ....so in this case only 240hz. it takes 104.167ms to complete using only 50 taps. now is this timing going to change if it processed at a much faster rate using a mini dsp running at 48khz for example?


3.how can one create a 3way x-over and compensate for the time differences it takes for each filter to complete ..so that all 3 filters are working as one. 2 of the filters would have to be delayed in relation to the time it takes for the longest one to complete.


4. is there anything that you can add to help me make a correctly designed 3way x-over.....thank you
 
Hello Jaack

1.under the 'generate' button in green letters. what is 'max impulse'. and how should this be interpreted?..what exactly does -4.52db mean for example?
This is the maximum level of the FIR itself, don't worry about it.

2.are brick-wall filters a good design choice for x-overs? i see for example a low pass brick-wall filter at say 120hz can have a perfect response to target using very little taps but at a very low sampling rate of double the cut off frequency ....so in this case only 240hz. it takes 104.167ms to complete using only 50 taps. now is this timing going to change if it processed at a much faster rate using a mini dsp running at 48khz for example?
I would personally not use brickwall filters in a crossover. It is not a matter of steep vs shallow slopes: you can get shallow slopes with brickwall filters, and steep slopes with LR filters. It is a matter of controlling the filter response with an actual target instead of relying on windowing.

3.how can one create a 3way x-over and compensate for the time differences it takes for each filter to complete ..so that all 3 filters are working as one. 2 of the filters would have to be delayed in relation to the time it takes for the longest one to complete.
linear-phase crossovers are much easier to setup than minimum-phase ones in this regard. More on that in the quote below.

4. is there anything that you can add to help me make a correctly designed 3way x-over.....thank you

Here is a post from 3 years ago that covers this very subject:
Building a linear-phase crossover system is in fact much simpler than a minimum-phase one.
With a minimum-phase crossover you will have to worry about phase shifts from one crossover point interacting with the others (especially for a 4-way), so you will have to take them all into account.
You also have to check for perfect phase coherency between crossed-over drivers (ie same phase shift), and time delays are always difficult to deal with as you cannot simply align the impulse peaks...

On the other hand linear-phase crossovers are much easier to deal with.
In fact even if you want to end up with a minium-phase crossover it is easier to do it linear-phase and then reintroduce the phase shifts (for example the HP of your system, down low, for which some feel phase linearisation introduces audible problems...).

So here is how you can do it (among many other possible scenarios) :
- For each driver (with several measurement per driver, as discussed above), use minium-phase EQ to get the amplitude reasonably flat within the pass band (the more you can trust your measurement(s), the more precise you can go, hence the reasonably)
- Use the "compensate" mode in the minimum-phase filters tab to flatten the natural high-pass and low-pass of your driver by trial and error (you need a measurement with a low noise floor, as it will quickly realize when playing with that feature...).
- at that point you should have a linear amplitude and phase (in the pass band and around, depending on your noise floor). If you don't then adjust your "compensate" settings, and also play with the "time offset" option in the measurement tab. You should not have to use phase EQ.
- Do not operate your driver with this kind of correction of course: this is only a temporary state!
- Apply the desired linear-phase high-pass and low-pass filters, and make sure you do not exceed the capabilities of the driver (excursion down low, breakups up high, directivity, etc.).
- Check the correction curve with the measurement bypassed to make sure it does not get too high in amplitude (for example if the target high-pass filter is much lower or with a shallower slope than the natural one...).
- For good measure, use the main volume attenuator in the "general" tab and make sure your correction does not exceed 0dB (amplitude offsets will have to be dealt with at some other place, for example in the crossover engine or in the amplifier...).
- Always use complementary slopes for your crossed-over drivers (ie LR of identical slopes on both sides, "reject high" on both sides, "reject low" on both sides, etc.). Try to avoid brickwall filters as these will add additional constraints for complementarity (same number of taps, etc.). If you need steep slopes you will be better off with high order LR "shapes".

When generating the impulse, if you do not have constraints on the number of taps (which should be the case if you are using jriver on a descent computer) you should use the "middle" centering option, and a large number of taps (64k should be more than enough for any realistic situation). With that many taps you can use a gentle windowing algorithm such as Hann, Blackman or Nuttall, without loosing much precision or steepness. You can also handle the delays inside rephase, directly specified as distances, eg "middle+3cm" to compensate for your driver's geometrical offsets (you can check that afterward with the "inverse polarity" method, seeking for the deepest null at the crossover point)

Once each driver is EQed and filtered that way you can add them together in your convolution engine.
I think Jriver will require a different set of impulses for each sampling frequency it might have to handle...

hope this helps :)
One additional note: measurement polarity and time offset (t=0) is very important in order to get easy to deal with phase behavior (ie inline with the crossover theoretical behavior).
HOLM is quite good at finding t=0, but you need to have the polarity right first.
Having the first major peak positive and the t=0 cursor on that peak is a good start. That give you a phase that goes to 0° at Nyquist.
After applying minimum-phase EQ and compensating for the natural low pass of the driver you might have to recalibrate the time offset a little bit in the measurement tab in rephase, because the peak will have moved a bit...
When dealing with individual drivers (ie no crossover) you should never have to use phase EQ: during the "compensate" step (before applying actual linear-phase filters) a flat amplitude curve obtained with minimum-phase EQ should always give you a flat phase curve.
 
Last edited: