Equalizer APO, REW and Rephase WOW!

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Got EqApo finally to work as x/over after trying various options a zillion times .



One things still confuses me:


It looks as if the config.txt file keeps resident in EqApo , even after another file is loaded.

The config.txt is where EQ APO gets it's data. You have to save whatever file you make with this filename, before it becomes active. Opening other files in the editor has no effect on how EQ APO is processing the sound. The editor is just an editor, and EQ APO is running in the background in Windows reading it's config from config.txt all the time.
 
@33Polkhigh: Am I correct in understanding you use a HDMI multichannel receiver/AVR?


Is that a simple as connecting the HDMI output of your PC/Laptop with the HDMI input of your 4.1( 5.1/7.1) receiver? (sounds almost too easy/too good to be true)

Yes!

But you have to select some kind of 'direct mode' without processing of the audio in the receiver. This is tricky, since some/many receivers apply distance correction etc (delay) even in direct mode. You should actually measure the output from the receiver to verify that the delay is the same on all channels.
I started with EQ APO and receivers to test active XO, but have now moved on to separate soundcard and amps. Using the receiver has it's benefits. You have a multichannel volume control, and from what I measured, the DAC/preamp perform reasonably well, and can handle high resolution data.
If the receiver has HDMI in, and multichannel pre out, you can use it as preamp, and connect better amps.
 
In case a particular low pass (or band- or high pass for that matter) that in combination with the woofer used is optimized in e.g. LspCad, SoundEasy, Vituixcad (or other software) in order to realize a textbook acoustic woofer plus filter transfer function, is there a trick to copy the transfer function of that filter into Equalizer APO without resorting to convolution?
I know filter coefficients can be can inserted in the filter commands.
Maybe the question should be: is there a trick to convert a .frd file containing the tailor made-filter transfer function into a filter command EqApo can read?
 
Hello jiiteepee,

The .frd files am referring to are the classic format file type for typical Spl transfer function of either a loudspeaker or a filter. It contains in three columns frequency, level in dB and phase. These are the standard files many loudspeaker measurement system produce, e.g. Arta (some systems such as Clio or Mlssa) use a different format) and which are intended either for graphic display of the Spl and/or import into a crossover simulator. This is what a line ( the file may contain a hundred lines or so) of a typical .frd file looks like:

Freq level in dB Phase

43.378 123.7531 150.5554
43.756 123.7536 150.4285
44.136 123.7545 150.3009
44.520 123.7555 150.0458


Now Equzalizer APO does not digest .frd files, but works with filter coefficients. I am struggling with the conversion of a .frd file of a filter into the particular coefficients of that filter, simply because that is what I need to spoonfeed to the filter commands of Eq Apo.


That background of all this is, that textbook filter transfer functions simply do not work optimally in combination with real loudspeakers, because real loudspeakers in an enclosure behave "non ideal". Creating a loudspeaker +filter combo that produces the perfect acoustic output the filter invariably has a non standard transfer function, and the filter is thus "tailor designed" for that particular loudspeaker.
 
...
Now Equzalizer APO does not digest .frd files, but works with filter coefficients. I am struggling with the conversion of a .frd file of a filter into the particular coefficients of that filter, simply because that is what I need to spoonfeed to the filter commands of Eq Apo.
...
That background of all this is, that textbook filter transfer functions simply do not work optimally in combination with real loudspeakers, because real loudspeakers in an enclosure behave "non ideal". Creating a loudspeaker +filter combo that produces the perfect acoustic output the filter invariably has a non standard transfer function, and the filter is thus "tailor designed" for that particular loudspeaker.

Yes, textbook IIR filters won't work for this type of filtering.

There's Berchin's FDLS arbitrary filter design algorithm which could be helpful in designing the IIR filter(s) for the needed EQ curve.

Berchin, Precise Filter Design, DSP Tips & Tricks, Signal Processing Magazine, 24, 137-139, January 2007

I've used the Matlab implementation few years ago but didn't find it anymore. There are couple python implementations listed on github:
GitHub - blair3sat/fdls: An implementation of the FDLS filter design algorithm using numpy
ld-decode/fdls.py at master * happycube/ld-decode * GitHub
 
@Boden, if you are trying to build a custom filter from an FRD try RePhase. It can import FRD and then you can play with the compensation using using some combination of min phase IIR textbook filters.

If you want exact compensation for both mag and phase then a convolution filter is probably easier and you can incorporate that in EQ APO easily.
 
The poit is: EqApo - to my bst of knowledge cannotr read .frd files. If I optimze a particular filter in LspCad or Vituixcad I can export the filter transfer function as .frd file. Eq Apo unfortunalteky does not read/can not import .frd files. EqApo needs the filter coeffs in order to mimic that filter. So I was looking for a simple conversion tool (other that Rephase or other convolution based solutions) .


So it would be .frd to polynominal.
 
Hello Don,


Although it is currently above my head, from the description I get this is exactly the tool I was looking for. But it is going to ask some serious learning before I may be able to use this tool,,
Have you worked with it, and if so, do you have a sample file that might get me started?
 
@33Polkhigh: Am I correct in understanding you use a HDMI multichannel receiver/AVR?


Is that a simple as connecting the HDMI output of your PC/Laptop with the HDMI input of your 4.1( 5.1/7.1) receiver? (sounds almost too easy/too good to be true)

Yea, this is correct as far as i know. I might have said something different before but the program can be used with a non compressed digital output (pcm). It won't work with a compressed output like dolby digital.

But it is a bit too good to be true. The problem is that the way hdmi is set up is that its supposed to carry both audio and video. This generally means you have to send your video through your receiver which can add a delay or mess up your resolution. But for some set ups it might work fine. It depends.

One way around this is to have two displays and send audio out the second one. But overall the situation would be better if there was a standard dedicated multi channel digital audio output . Instead of hdmi which combines video and audio.

Some of the way things are done now can make doing unique set ups more difficult. Just try to set a custom resolution in windows when you TV is telling it not to display that. They've tried to idiot proof it to the point of causing more problems
 
Last edited:
Thanks a lot, jiiteepee.



I will have a look at the fdls convertor One thing is for sure: this is not for the faint of heart...

Implementation behind the first github link I gave is quite easy to modify for your needs. Just put your curve data (all or splitted) to "data.py" file

Code:
#%%
import numpy as np
frequency = np.array([0.0, 19.6850, 35.4331, 51.1811, 59.0551, 66.9291, 106.299, 389.764])
amplitude = np.array([0.2172, 0.2065, 0.1696, 0.0164, 1.3959, 0.6734, 0.3490, 0.3095])
phase = np.array([0.0, -0.0156, -0.0383, 3.0125, 2.3087, 0.955, 0.0343, 0.0031])

and run the example.py (remember that resulting coefficients are sample rate dependent ... change "fs" in function call fdls(frequency, amplitude, phase, n=2, d=2, sample_delay=None, fs=44 * khz) ... also try different orders of filter (parameters n & d) there in call to find satisfying responses ....
 
Hello Don,


Although it is currently above my head, from the description I get this is exactly the tool I was looking for. But it is going to ask some serious learning before I may be able to use this tool,,
Have you worked with it, and if so, do you have a sample file that might get me started?

Octave is open source Matlab which I used ages ago.

This is an Octave script to convert an frd to a poly. I also included the test frd it uses. It reads the frd file and writes a coefficent file. It's late, so the filename is hardcoded :) and it should be tested against a standard filter. You need to install Octave and Signal package to run it.
 

Attachments

  • frd_to_poly.zip
    15.6 KB · Views: 59
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.