SoX
has FIR & IIR Open source tools,
but.... does Not have Jack Audio.
command line interface.
https://en.wikipedia.org/wiki/SoX
ive done Crossover with standard audio plugins: VST, AU, AAX, RTAS.
there are plugins that have "Clean" Digital algorithm / filters,
and Analog Emulation Type...
Crossovers divide in Active or Passive.
Active are more advanced, flexible, have less power losses, etc...
Passive are usually after amplifier.
Active before.
Analog or Digital,
Analog:
The Manual for Urei 525
a very famous crossover in 1980s
claims -18dB per Octave Filters sound better in listening tests,
some people do prefer that sound of 3-pole filters, personally i like -36dB/Oct.
Most crossovers have standard -24dB/oct filters,
some allow variable Q, like Ashley XR 4004, analog.
Newer Digital Crossovers like BSS Omnidrive have aditional "impossible/brickwall
filter types", linear-phase, etc...
-48dB/Oct, -56dB/Oct, etc...
they put weird names like NTM filters.
Digital crossovers allow more flexibility,
Digital Delay for Phase / driver alignment,
example:
a Band-pass for mid-bass or mid-range,
can allow different slopes for the high-pass and the low-pass.
-48dB/Oct and -6dB/Oct.
Good crossovers usually have a HighPass filter at 18Hz-30Hz.
________________________________________
From: Fons Adriaensen <fons(a)linuxaudio.org>
Sent: Friday, March 28, 2025 5:30 AM
To: linux-audio-user(a)lists.linuxaudio.org
Subject: [LAU] Re: How do I create a FIR-filter with opensource tools?
On Fri, Mar 28, 2025 at 12:47:06AM +0100, Michael Jarosch wrote:
Steps missing? Or am I totally wrong, here? What tools
can I use?
So you want both crossover and room correction filters.
The first thing to do is to separate the two problems:
1. First implement the crossover processing.
2. Once you have that in place, measure the speakers and/or
room and implement the correction filters.
One reason is that (1) will affect (2), the other is that
combining the two from the start is more complicated and
a sure recipe for errors.
When you have both, it would be possible to combine the
two into a single FIR filtering operation, but there is
nothing gained by doing this and I would advise strongly
against doing this.
1. For the crossover you can use zita-lrx wich will
provide 2, 3 or 4 way Linkwitz-Riley filters along with
configurable gain and delay for each band. Zita-lrx is
a command line Jack application. Once you have the correct
configuration file you can run it with a single command
which will also to care of Jack connections.
2. For speaker/room correction the best open-source solution
is DRC (Digital Room Correction) by Denis Sbragion.
<https://drc-fir.sourceforge.net/>
DRC uses some quite sophisticated methods to 'invert' the
measured responses. Doing this correctly is not as simple
as you may imagine. For example you will need frequency-
dependent windowing - at low frequencies you can correct
both the room and the speakers, while for higher frequencies
only the 'direct' sound should be corrected. The DRC manual
goes into a lot of detail to explain all of this and you'll
need some time to absorb and understand all of it. But AFAIK
this is the only tool that gets it right.
To measure the speaker/room response you can use the tool
provided by DRC, or e.g. Aliki, or zita-jacktools (more
about that later).
To do the actual filtering you can use jconvolver.
3. An alternative approach is to use zita-jacktools for
everything. This is a collection of DSP processsors.
Each of them is a Jack application and also a Python
class (the actual DSP is of course all done in C++).
It has both crossover filters and convolution processors,
and a lot more.
Using this you could create a simple Python script
that combines all the processing. One advantage is
that since everyhing is controlled by Python, you
can easily add a GUI (using e.g. PyQt) or remote
control.
You could also use zita-jacktools to automate all
the measurements, so you can repeat them easily.
Just write if you need more help.
--
FA
_______________________________________________
Linux-audio-user mailing list -- linux-audio-user(a)lists.linuxaudio.org
To unsubscribe send an email to linux-audio-user-leave(a)lists.linuxaudio.org