... I have a target of running +10k taps @ 48kHz on two channels ...
Why exactly 10k ? How did you decide this number ?
I have a strange feeling that no one will ever need more than samplerate/20=2400 taps ?
- "Raspberry Pi 4 doing FIR filtering of 8 channels, with 262k taps per channel, at 192 kHz. CPU usage about 55%.".
- "An AMD Ryzen 7 2700u (laptop) doing FIR filtering of 96 channels, with 262k taps per channel, at 192 kHz. CPU usage just under 100%."
Wow... just wow. Makes me wanna check it. It sounds like a statement. 1.3 second delay for that filter but 2M multiplications per second?
Is it 16 bit ints ? Is there any OS running on that time ...
Sounds like very marketing-pumped numbers.
That isn’t exactly good performance. Tools like CamillaDSP can do thousands of multichannel taps even on a cheap SBC. Sounds like you still have some optimizing to do
A virtual soundcard would also be a useful addition. How do you handle the various clock domains?
Well, I never stated that. But I state that it is enough for doing a 4 way crossover.
Yes I have more optimisations to do. I expect x4 and maybe x8.
Clock domains was a high mountain to climb for me. I think most people resample everything
on every buffer with the exact samplerate they currently think it will fit but my approach is different.
I measure the displacement on every buffer but dont apply it, just write it down. Then on every
second I accumulate all displacements and if they come up to more than one sample then I do
really move the read cursor with that value. The program says "correction of X samples.".
For me it ranges around 1 to 3 samples depending on the quality of devices used.
That way I dont resample anything. Of course the corrections is hearable and now I think I
will make a fading between the old-would-be and new-is buffers at the time of correction.