diyAudio

diyAudio (https://www.diyaudio.com/forums/index.php)
-   PC Based (https://www.diyaudio.com/forums/pc-based/)
-   -   CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc. (https://www.diyaudio.com/forums/pc-based/349818-camilladsp-cross-platform-iir-fir-engine-crossovers-correction-etc.html)

Tfive 28th February 2020 09:13 PM

Wow, you're rushing ahead. Me like! :)

If this only works on parameter changes on biquads, I'm all fine with it, after all I don't offer a way to construct FIR filter reponses nor do I plan to do that. For that I'd rely on something like rePhase. So loading new impulse responses is fine to glitch out a little IMHO. What I like though is being able to adjust the Q/F/G of a filter, especially in the base region to tighten up the response presented to my ears. I have to deal with very small listening rooms all the time and there this feature comes in quite handy. And to be honest, who doesn't like to adjust a little here and there from time to time by ear? I know. I should get into measuring my systems. Will do that with my new semi-infinite-baffle-coax project soon... Measurement support for PaXoverRack is in alpha right now. :)

TNT 28th February 2020 09:19 PM

Quote:

Originally Posted by Jona66 (https://www.diyaudio.com/forums/pc-based/349818-camilladsp-cross-platform-iir-fir-engine-crossovers-correction-etc-post6095503.html#post6095503)
Got it running on a headless Debian / Mopidy / Mopidy-Spotify & File player, easy to configure and handle! Doing convolution with rephase-generated filters.

Great, thank you for this nice piece of software!

Jo

Sorry for my ignorance... what HW is this?

//

HenrikEnquist 29th February 2020 12:51 PM

I tried adjusting by ear when I first swithed over to active crossovers, but it didn't work very well. Most of the time I ended up with something that was worse than what I started with. It sounded better on exactly that piece of music I experimented on, but other stuff tended to suffer. So instead I measure, adjust, measure, adjust....

Anyway, I have been thinking a bit more and I will be able to get rid of the glitches when reloading fir coefficients as well. At least as long as the new coefficients are reasonably similar to the previous ones. If only the filter parameters change I don't need to rebuild the pipeline. It's enough to update the filter coefficients, and that can be done without clearing buffers.

CharlieLaub 29th February 2020 01:26 PM

Quote:

Originally Posted by HenrikEnquist (https://www.diyaudio.com/forums/pc-based/349818-camilladsp-cross-platform-iir-fir-engine-crossovers-correction-etc-post6102816.html#post6102816)
I tried adjusting by ear when I first swithed over to active crossovers, but it didn't work very well. Most of the time I ended up with something that was worse than what I started with. It sounded better on exactly that piece of music I experimented on, but other stuff tended to suffer. So instead I measure, adjust, measure, adjust....

Anyway, I have been thinking a bit more and I will be able to get rid of the glitches when reloading fir coefficients as well. At least as long as the new coefficients are reasonably similar to the previous ones. If only the filter parameters change I don't need to rebuild the pipeline. It's enough to update the filter coefficients, and that can be done without clearing buffers.

To prevent glitches when you change FIR filters, you could retain the last frame of unprocessed (e.g. input) audio data. Then if/when you change the FIR filter you re-convolve the last frame with the new filter, or at least the last M samples of it, where M is the filter length of the new filter. This will produce a "replacement" overlap add dataset. After that you proceed as usual with the new filter.

RE my code: I don't have a repo. I'm just working with another guy on getting my code up and running at this point. Assuming everything works out swell I will eventually release it publicly. If you want to see if privately, drop me a line.

HenrikEnquist 29th February 2020 08:57 PM

Glitch free updates of both Biquads and FIR filters are working!
Check out the branch "reload" in Github.

I didn't need to do anything special to get the FIR filters to behave well. Just keeping the overlap buffer intact when switching is enough. This means the decay from the previous filter meets up fine with the start of the new one.


On SIGHUP it reads the config file again, and anything that changed is updated.

- If only filter parameters changed it updates the coefficients of the filters. This is completely glitch free also for FIR filters.

- If the pipeline changed or if a filter changed type (for example from Biquad to Delay) the pipeline is rebuilt. This gives a small glitch if there are FIR filters involved.

- Changing the input or output device config isn't ready yet. The plan is simply to restart everything.

Tfive 29th February 2020 09:24 PM

Very cool. I will take a look at it next week some time...

Jona66 1st March 2020 11:02 AM

Hi TNT,

it is cheap intel board - Asrock - J3160DC-ITX, Intel J3160

kr
j

TNT 1st March 2020 04:06 PM

Thanks Jona - aha, it has come that far now :-)

//

Jona66 1st March 2020 04:24 PM

Hardware for CamillaDSP
 
Quote:

Originally Posted by TNT (https://www.diyaudio.com/forums/pc-based/349818-camilladsp-cross-platform-iir-fir-engine-crossovers-correction-etc-post6104393.html#post6104393)
Thanks Jona - aha, it has come that far now :-)

//

I totally agree, thatīs a sacrilege! :happy1:

Debian Linux (no GUI) on an cheap Intel Board with SOtM USB Card & a SOtM clock, a cheap USB to SPDIF box from China, digitally to active speakers.

CPU load is 5% with convolution

:happy1:
kr
j

HenrikEnquist 4th March 2020 08:04 AM

New version is up!
- I added all the usual filter function for Biquad, like first order high/lowpass, bandpass, notch etc.
- It also checks that IIR filters are stable.
- Config reloading is working fine now. Any part of the config can be updated and it will update coefficients or restart as needed. Coefficient changes are glitch free.

Next steps then, some ideas:
- Option to add noise shaped dither when outputting as 16 bit.
- Partitioned convolution for shorter delay with long fir filters.
- Some way to read the active configuration, to know for sure that a reload really did reload.

What do you think? Something else that is missing?


All times are GMT. The time now is 08:23 AM.


Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2021 DragonByte Technologies Ltd.
Resources saved on this page: MySQL 17.65%
vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2021 DragonByte Technologies Ltd.
Copyright ©1999-2021 diyAudio

Wiki