DIY 😉 You need:This would be cool, I'd need 8 channels of DA and preferably balanced outputs though. At least two AD as well, balanced inputs. Is there good ready made solutions available for interfacing the pi5?
- a Pi
- A multichannel (8!) ISB to i2s board - exists. (e.g. diyinhk one)
- 4pcs of i2s in stereo DACs.
- Power...
QED 🙂
//
IIR filters act pretty much exactly like analog filters (even though they're implemented digitally) in the sense that they are minimum phase. This means the phase response is 100% dictated by the frequency response. So for example a 24dB/octave low or high pass will necessarily have 360 degrees of phase shift between the passband and the stopband; and 180 degrees shift at the crossover point. IIR are the type you usually see on DSPs and digital crossovers.Someone should describe what "FIR" and "IIR" actually mean in Audio, as the terms are tossed around into obscurity - at least for me. I only understand the raw definitions from an engineer's perspective; two filter designs that behave differently when input with a mathematical construct that doesnt exist in reality. How that effects "phase" in an audio signal by choosing one over the other is beyond me.
IIRs require less processing power to operate. They are very easy to use even for beginners.
FIR filters allow you to separate amplitude from phase and dial in a desired curve for each. Very commonly you will import a frequency response curve, flip it upside down and make it into an FIR amplitude filter to make the driver's response (at only one mic location) literally ruler flat. You can also do that for the phase response, separately from amplitude.
It takes huge amounts of processing power to do this. So you need more expensive DSP chips. And the lower in frequency you want to operate, the more memory you need and you have a window of say 512 or 1024 or 2048 bits in which to do this, and you have to use sophisticated windowing functions and they introduce inaccuracies at low frequencies. So with FIRs there are many more ways to do it with lots of pros and cons and you're in advanced territory. People who like FIRs and know what to do with them tend to be engineers.
With FIR filters you can achieve flat phase and amplitude response at the same time which is impossible to pull off with IIR or analog. You can reverse the phase distortions of other parts of the system (IIR filters, analog filters, drivers) which is pretty cool.
They also have some idiosyncrasies like pre-ringing which can cause some problems. Some argue that they behave in unnatural ways.
Products like DIRAC are big-hardware, large-time-window, lots of memory FIR filters that compensate for room acoustics and linearize time response to get very nice looking impulse and step response. They have user friendly interfaces to hide all the engineering from the user and you run a sequence and put the mic in a few different spots and it does all the thinking for you.
Thomann t.racks 408 FIR is the machine, filters generated in vituixcad only using measured data.
Ok, and I guess I should ask how many ways / output channels are you using? eg 3-way?
What's min and max per each of the eight output channels?
Before trying to answer specific questions, let me offer a few FIR overviews (at least as I see them).
The F= 1/T equation is essential to keep in mind, as well as T itself.
I use the frequency resolution to impute what it loosely equates to as 1/n octave smoothing.
So for instance the max 2048 taps per input channel of the 408 t-racks, has a resolution of about 94Hz in linear-phase FIR mode.
Or about 1/10th oct smoothing for the top octave, and say 1/5th oct smoothing for 500-1000Hz.
This linearly applied/spaced resolution to octave that have log spaced frequency bandwidth, is another reason why I think global FIR correction that includes freq magnitude correction, doesn't work. It applies corrections too finely at high freq, and too coarsely at low.
Frequency dependent tap counts solve this. Which largely happens on it's own if different/appropriately sized FIR filters are used on each section of a multi-way.
I believe DRC has frequency dependent tap counts, which could be really helpful for global work. Maybe Acourate of some other,.... dunno....since I'm sold on output FIR and think the frequency dependent need, is handled.
Unfortunately, 96kHz kinda cripples the t-racksFIR capability by halving the T/freq res of the FIR filter vs 48kHz. If you note the miniDSP products that have FIR and have Dirac, they switch from 96kHz using FIR, to 48kHz when using Dirac. (96kHz is pure marketing Lol)
Whether you use gating or not, your FIR filter will only correct the smoothed (gated) or unsmoothed (non-gated) data at its implied FIR frequency resolution.
Personally, I don't use gating. I just try to make measurements of speakers as far removed from reflections as possible...even if that just means getting them in the center of the room, etc.
Whether you use delays of embed the delay into the FIR filter largely depends on the delay capability. How fine are the increments?
Sample increments are best, but often not available, in which case the timing can be imbedded into the FIR filter.
I like to use delays for time adjustment, and not put then into the FIR. Because I want the FIR to give me nice flat mag and phase through the acoustic target, with all constant delay removed. Then time alignment between sections simply ends up being the physical distance between acoustic centers. Makes for a good sanity/smell test too.
Need to run for now...will try to answer questions more directly next,
Thanks for the reply here. I'm beginning to understand. Never would have guessed the implication between terms "finite" and "infinite" is you can adjust phase as you wish with the "finite" one.Products like DIRAC are big-hardware, large-time-window, lots of memory FIR filters that compensate for room acoustics and linearize time response to get very nice looking impulse and step response.
IIR "infinite" filters run the signal through a series of mathematical calculation loops where the tail of the signal could, in theory, run infinitely long because it cycles back through those loops and would never reach absolutely zero. Every part of the signal is delayed, some parts more than others based on the minimum phase characteristics of the filter. This is why IIRs have no "pre-ring."
For decades, CD player test reports have shown either "no pre-ring" response to impulses (that means they have IIR filters) or "has pre-ring" on the impulse (they have FIR filters in the brick wall 20KHz filter).
FIR "finite" filters work differently. They decompose the signal and run pieces of it through a set of parallel delay lines where literally each sample, one by one, gets multiplied by a FINITE string of numbers (this is where the term finite comes from) that is commonly 512, 1024, 2048 bits long and it is then re-assembled at the output.
So if the FIR filter is 512 bits long, that is 512 samples at X KHz sampling rate that some or all of the signal is delayed by. You'll typically design a 512 sample window so the peak of the impulse is at ~256 samples in, so for a 96KHz sampling rate, the FIR filter will delay the main impulse by about 2.7 milliseconds.
When the signal is reconstructed, the FIR's correction of phase response will result in the system having pre-ring. Pre-ring (FIR) and no pre-ring (IIR) look like this:
For decades, CD player test reports have shown either "no pre-ring" response to impulses (that means they have IIR filters) or "has pre-ring" on the impulse (they have FIR filters in the brick wall 20KHz filter).
FIR "finite" filters work differently. They decompose the signal and run pieces of it through a set of parallel delay lines where literally each sample, one by one, gets multiplied by a FINITE string of numbers (this is where the term finite comes from) that is commonly 512, 1024, 2048 bits long and it is then re-assembled at the output.
So if the FIR filter is 512 bits long, that is 512 samples at X KHz sampling rate that some or all of the signal is delayed by. You'll typically design a 512 sample window so the peak of the impulse is at ~256 samples in, so for a 96KHz sampling rate, the FIR filter will delay the main impulse by about 2.7 milliseconds.
When the signal is reconstructed, the FIR's correction of phase response will result in the system having pre-ring. Pre-ring (FIR) and no pre-ring (IIR) look like this:
Ok, will try to answer questions now.For example my HF driver / waveguide has some reflections going on, which is evident if I slide windowing of my impulse response measurement the HF response (resolution) varies. Question now is what windowing to use, and to which then auto EQ? If I use max windowing (before measurement situation limitations come in) all acoustic issues of the speaker itself are in the data so the FIR isn't gonna work but to only ~one direction. So, do you use some slidign windowing or just some smoothing stuff or what? FIR includes time domain, so how would this smoothing / windowing affect in general?
Not sure what you're asking/saying If I use max windowing (before measurement situation limitations come in) all acoustic issues of the speaker itself are in the data so the FIR isn't gonna work but to only ~one direction. What do you mean by only one direction?
In any event, measurement resolution has to vary with the width of the window. That measurement resolution will be what the FIR filter tries to correct (assuming you've instructed it to do so). But it's ability to do so, will be limited by the FIR filter's resolution as well (which was the point of my previous overview post).
The FIR filters span of time it can impact is limited by the length of the filter (#taps@sample rate = time). Within that span of time the measurement resolution and FIR resolution go to work.
What we can correct all comes down to how well do the corrections hold up spatially, on-axis and off-axis. The wider the area they hold up, the move valid the corrections. Driver response ripple is often min phase spatially and a good candidate for correction. Resonances too ime, other than they if vary with output level they don't correct...fix the damn box Lol) Time domain stuff, like horn mouth to throat reflections, HOMs, Temporal EQ, yada, can or cannot be good candidates. The proof is in the polars, and measurements at varying distances. Correct and measure/listen.Another, should I also straighten out the compression driver top end response with FIR, where the response is really erratic due to resonances, phase plug acoustics and stuff like this? Or should I prevent auto EQ that high and cut of below these issues? I'm thinking this stuff against the Gunness focusing stuff so think time domain data has central role here? Perhaps better leave it alone for now?
Great observation !I guess the main issue above summarized is that I think too short of a window on the data the FIR filter is implemented against makes inaccurate filter, while too long of a windowing could be too accurate and include stuff that should not be corrected?
Couple that with how valid are our sims, or even our measurements ! .... that form the basis for the corrections !
Yes, the more complicated the workflow, the more I eff up. The good news is with the right software, generating auto-FIR is very easy. Good software should be able to define an acoustic target curve, and then make a FIR filter to correct the measurement to fit it. Process get's quite easy...for instance, changing acoustic xover orders and xover frequencies can take only a matter of minutes.Another is having very limited amount of taps, 512, which means frequency resolution is down to perhaps 300Hz, and since my crossover is about at 800Hz or so I can barely linearize that with the FIR but all the rest of the response of the low frequency driver is not included in the FIR and I need to use IIR filters in addition. Things get worse with the measurement data windowing of course, since data isn't accurate with semi-anchoic measurements it's kinda tough to make the filters, and again hard to confirm whether the filters work, as there just isn't that much resolution down low. It's complicated process to implement both IIR and FIR filters in a simulator and then succesfully transfer those to the DSP when the FIR is a file and the IIR:s must be added manually, leaving lot's of room for humanly errors.
IIR is always more work, more fit and try. Partly because there are not standard IIR filter definitions (witness the alternatives in REW to fit the various dsp platforms).
But I do think IIR is the more natural fit as frequency gets low, simply due to the huge FIR filter size needed and its latency.
Using my subs as an example: its high pass if it has one, is IIR. So are raw response corrections. It's low pass is a complementary linear-phase xover, which is the only FIR involved for the sub. I have enough taps to cover the sub's setup with FIR, but I think IIR simply works better for it, other than the xover to main speaker.
Above subs, my advice is to set up driver by driver, and use IIR 'preconditioning EQs" to flatten raw response prior to the FIR filter if you don't have enough taps for adequate resolution.
You can actually do this and use FIR for nothing more than complementary linear phase xovers (which would be a great step forward for almost everyone tuning multi-ways above 2-ways, imho).
But a good target matching FIR generator is much more elegant, easy, and less error prone ime.
Hi mark100, thanks for the responses!
Above fails in practice as such a short window does not contain data down to my crossover frequency, so questions arise: what I should be thinking? or how should I process the data?
Basically I don't have enough knowledge about FIR capabilities in general, to really undestand how to actually do these filters in reality, in practice. Technically I manage to do them, but this kind of thought process aspect, how to make a successful filter, isn't clear.
I see there is an issue for me in this, because I can make graphs in vituixcad flawless, but questions arise like is my initial data good? and did I manage to actually implement the end result properly into DSP because the simulator doesn't show the exported FIR filter?
I'm thinkin FIR has this magical time domain capability, like a preconditioning filter, while IIR filters are kind of always true no matter of time. This makes me somehow ultra concentrated on the windowing and tap count limit and time delays and such. Massive insecurity. 😀
Long post, big topic, big issues, no need to answer it all. I'm hoping to get the aha moment, after which I can answer my own questions 🙂
I ment thisOk, will try to answer questions now.
Not sure what you're asking/saying If I use max windowing (before measurement situation limitations come in) all acoustic issues of the speaker itself are in the data...
Simplified thought process here was roughly that since my waveguide mouth is about 40cm in diameter and its about 15cm deep, so if I windowed measured impulse at say 15cm, ~500us or so, the windowed impulse would not contain any secondary sounds of the waveguide mouth. Idea is that if I make FIR filter using this windowed impulse the resulting filter ought contain corrections that are true to any angle, at least within listening window, nice. Contrary, with longer window say few ms, I would already have effects due to diffraction from the mouth in the impulse. Since the diffraction makes sound vary per direction it's something I should not have in the impulse and resulting FIR EQ, so should be ignored fron the FIR EQ somehow like using short enough window to just leave it out.What we can correct all comes down to how well do the corrections hold up spatially, on-axis and off-axis. The wider the area they hold up, the move valid the corrections.
Above fails in practice as such a short window does not contain data down to my crossover frequency, so questions arise: what I should be thinking? or how should I process the data?
Basically I don't have enough knowledge about FIR capabilities in general, to really undestand how to actually do these filters in reality, in practice. Technically I manage to do them, but this kind of thought process aspect, how to make a successful filter, isn't clear.
I see there is an issue for me in this, because I can make graphs in vituixcad flawless, but questions arise like is my initial data good? and did I manage to actually implement the end result properly into DSP because the simulator doesn't show the exported FIR filter?
I'm thinkin FIR has this magical time domain capability, like a preconditioning filter, while IIR filters are kind of always true no matter of time. This makes me somehow ultra concentrated on the windowing and tap count limit and time delays and such. Massive insecurity. 😀
Long post, big topic, big issues, no need to answer it all. I'm hoping to get the aha moment, after which I can answer my own questions 🙂
I do recall at university they introduced us to the "Z" transform. Basically, the next output sample value being equal to a summation of some series of the current and previous input samples, each having its own coefficient. So lots of multiplications. The book showed how to choose the coefficients to create the different classic analog filter types. This would be late 70's.gets multiplied by a FINITE string of numbers (this is where the term finite comes from) that is commonly 512, 1024, 2048 bits long and it is then re-assembled at the output.
A childhood friend, involved in Goog "Sketchup" before they bought it, once remarked "Oh, Z transform? That's my specialty!". I didnt do as well with it...
@mark100 I detail the build of an FIR filter for the 2 input channels of a MiniDSP Flex Eight, along with efforts to make the speaker system itself minimum phase, here: https://www.diyaudio.com/community/...rshalls-live-edge-dipoles.424917/post-7958770
Mark, can you configure it so that all 16 (or fewer) channels are bundled together through one USB output? I have an RME UFX that i plan using as a multichannel DAC via its USB input. Its routing software allows you to then break out the channels that were bundled at input.A Core110f can be configured to provide 16 DAC channels, with 8 analog in and 16x16 USB channels
Also, do Q-SYS have any models that SRC to 96k rather than 48k ?
Hi Studley, nice box, the RME UFX.
The 110f USB can be configured as a soundcard with various input and output channels counts, on one physical USB connection. (The unit has only one physical USB connection.)
8x8 is the max channel count per soundcard, but the 110f can have two soundcards in a schematic, so two 8x8 soundcards possible.
I used my 110f configured with a 2x2 soundcard for receiving signal from JRiver.
All Q-sys is 48kHz only.
(I know 48kHz is probably a turnoff for a lot of folks, but after playing with higher sample rates up to 384kHz with my other DACs (which include a 192kHz RME baby pro), I could care less about anything higher.)
Are you planning on using the UFX as USB in and DAC out? If so, and trying to use qsys as the source of USB to feed the UFX, you would need to figure out how to get music into qsys other than USB, because it's physical USB line is going to the UFX.
If you're planning on using the UFX as music input, and then route to qsys via USB for multichannel processing, and then back to UFX via USB for DAC output, I think that could be quite a nice setup.
I'd suggest downloading latest qsys designer software, and playing with schematic building. It runs on a computer without needing a Core 110f, and has the best help files you'll ever find anywhere for the components you put in the schematic...like a USB soundard....
You could make sure it will work schematic wise, with the UFX. You just won't be able to pass audio without a Core.
The 110f USB can be configured as a soundcard with various input and output channels counts, on one physical USB connection. (The unit has only one physical USB connection.)
8x8 is the max channel count per soundcard, but the 110f can have two soundcards in a schematic, so two 8x8 soundcards possible.
I used my 110f configured with a 2x2 soundcard for receiving signal from JRiver.
All Q-sys is 48kHz only.
(I know 48kHz is probably a turnoff for a lot of folks, but after playing with higher sample rates up to 384kHz with my other DACs (which include a 192kHz RME baby pro), I could care less about anything higher.)
Are you planning on using the UFX as USB in and DAC out? If so, and trying to use qsys as the source of USB to feed the UFX, you would need to figure out how to get music into qsys other than USB, because it's physical USB line is going to the UFX.
If you're planning on using the UFX as music input, and then route to qsys via USB for multichannel processing, and then back to UFX via USB for DAC output, I think that could be quite a nice setup.
I'd suggest downloading latest qsys designer software, and playing with schematic building. It runs on a computer without needing a Core 110f, and has the best help files you'll ever find anywhere for the components you put in the schematic...like a USB soundard....
You could make sure it will work schematic wise, with the UFX. You just won't be able to pass audio without a Core.
Interesting take, from experience. I always suspected these higher - crazy higher - rates are just a marketing effort to sell us something new. Kinda like having a CPU with a 50K specmark to do this...(I know 48kHz is probably a turnoff for a lot of folks, but after playing with higher sample rates up to 384kHz with my other DACs (which include a 192kHz RME baby pro), I could care less about anything higher.)
I agree. I can hear the difference between 48 and 96 but the nature of it is not a dealbreaker. If I had to choose between this and an acoustic speaker issue before going to a desert island, I'd fix the acoustic issue.(I know 48kHz is probably a turnoff for a lot of folks, but after playing with higher sample rates up to 384kHz with my other DACs (which include a 192kHz RME baby pro), I could care less about anything higher.)
I don’t have any definite statements or listening tests to report on this, but I have to say the original Sony Philips 44.1/16 CD Standard was very well chosen and executed for its time.
- Home
- Loudspeakers
- Multi-Way
- An exercise in converting a speaker to time-phase coherent