[LAU] Re: How do I create a FIR-filter with opensource tools?
Juan P C <[email protected]>
| Newsgroups | gmane.linux.audio.users |
|---|---|
| Message-ID | <SN7PR12MB8792EABA27FED383962456F6B2A02@SN7PR12MB8792.namprd12.prod.outlook.com> |
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 <[email protected]> Sent: Friday, March 28, 2025 5:30 AM To: linux-audio-user-cunTk1MwBs/[email protected] 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-cunTk1MwBs/[email protected] To unsubscribe send an email to linux-audio-user-leave-cunTk1MwBs/[email protected] _______________________________________________ Linux-audio-user mailing list -- linux-audio-user-cunTk1MwBs/[email protected] To unsubscribe send an email to linux-audio-user-leave-cunTk1MwBs/[email protected]