Partitioned FIR convolution would be very nice! I can't think of any features that I would need right now.
I totally agree, that´s a sacrilege!
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
kr
j
So how many taps would I get out of such HW without turning it into a toaster?
//
The solution I have in mind for dither is to implement it as a filter (one that only makes sense to have as the last step of the pipeline). It would accept a bunch of parameters, like target bit depth and filter choice. I'll probably start simple with only one filter.
For running on a mac I need some help. I don't have any macs around and I have no idea of how sound works on that platform. I guess Alsa and PulseAudio aren't available, but what is?
For running on a mac I need some help. I don't have any macs around and I have no idea of how sound works on that platform. I guess Alsa and PulseAudio aren't available, but what is?
Thumbs up on the dither. As it works on floats internally, dithering would also make sense for 24bit output IMHO.
I'll make the target bit depth a parameter, so dither for 24-bit will be there. Not sure it makes sense though with the best DACs having a SNR corresponding to about 21 bits. The dither will just be lost deep down in the noise.Thumbs up on the dither. As it works on floats internally, dithering would also make sense for 24bit output IMHO.
Well, some people seen to think otherwise. I myself cannot comment on that as I never heard it in action. Would be nice to try it though and try to hear the difference. As Henrik might implement the dither algorithm it would probably be easy to add a parameter with the number of bits to dither to.
My gut feeling tells me the same btw - that dither at 24 bits is probably down in the noise.
My gut feeling tells me the same btw - that dither at 24 bits is probably down in the noise.
Hi here 🙂
Lately i had been reading a lot about DRC stuff, finding it very interesting and for me a must try also i guess. I'am new into digital filtering and software optimising room correction stuff, so please bare with me if you think some quistions are to light.
My stereo in a midsize livingroom (all diy except speakers) is used as follows : i have all my old cd's on a NAS, where the Logitech media server (LMS) also resides for now. On the LMS i have "plugins" for Tidal / Qobus and Paradise radio etc... I mostly stream. The stream is feed into via Picoreplayer (Squeezelite) on a RPI 3B+ into an USB Amanero DAC, then preamp and last my poweramp, so pretty normal for 2020 i guess.
Also i would like to tell that i ordered the UMIK-1 usb mic. the other day, waiting for it to arrive within the next few day's.
I plan to if possible to run the DRC filters on an Raspberry Pi 4 (4Gb), and have digital filters/room correction applied in realtime for if possible all rates (44.1Khz... 192Khz...)
So, after i read a lot for day's as i wrote i tried to install the LMS on my RPI4 along with BrutefirDRC (plugin for lms which should do realtime DRC) for having some more computerpower than my old NAS have.
The BrutefirDrc plugin was not the easiest part to get running, but without any special filters i got it up and running partially.
I hope it is possible to have Camilladsp within this chain somehow, but not sure how; this is ofcause depending on if i can make it run on the RPI.
So, finding it hard to find information on the net about the hole process, i hope someone can help clear out if this is the right way to handle such Room correction setup ?
(Not specific.)
1. Setup a mic. on software which measure impulses etc... from the room (e.g. REW / roomeqwizard).
2. Take measurements on left spk., right spk.. and export the data into another program which can generate FIR & IIR filters (one for each samplerate i guess?)
3. Load the filters on the convolver (Camilladsp in this case) and stream / play my music through the hole chain in realtime.
Rgds; Jesper.
Lately i had been reading a lot about DRC stuff, finding it very interesting and for me a must try also i guess. I'am new into digital filtering and software optimising room correction stuff, so please bare with me if you think some quistions are to light.
My stereo in a midsize livingroom (all diy except speakers) is used as follows : i have all my old cd's on a NAS, where the Logitech media server (LMS) also resides for now. On the LMS i have "plugins" for Tidal / Qobus and Paradise radio etc... I mostly stream. The stream is feed into via Picoreplayer (Squeezelite) on a RPI 3B+ into an USB Amanero DAC, then preamp and last my poweramp, so pretty normal for 2020 i guess.
Also i would like to tell that i ordered the UMIK-1 usb mic. the other day, waiting for it to arrive within the next few day's.
I plan to if possible to run the DRC filters on an Raspberry Pi 4 (4Gb), and have digital filters/room correction applied in realtime for if possible all rates (44.1Khz... 192Khz...)
So, after i read a lot for day's as i wrote i tried to install the LMS on my RPI4 along with BrutefirDRC (plugin for lms which should do realtime DRC) for having some more computerpower than my old NAS have.
The BrutefirDrc plugin was not the easiest part to get running, but without any special filters i got it up and running partially.
I hope it is possible to have Camilladsp within this chain somehow, but not sure how; this is ofcause depending on if i can make it run on the RPI.
So, finding it hard to find information on the net about the hole process, i hope someone can help clear out if this is the right way to handle such Room correction setup ?
(Not specific.)
1. Setup a mic. on software which measure impulses etc... from the room (e.g. REW / roomeqwizard).
2. Take measurements on left spk., right spk.. and export the data into another program which can generate FIR & IIR filters (one for each samplerate i guess?)
3. Load the filters on the convolver (Camilladsp in this case) and stream / play my music through the hole chain in realtime.
Rgds; Jesper.
Compiling on the PI
Hi Henrik.
Donno if you tried to compile your'e Camilla on the PI yet ? (Raspberry Pi)
I got those two errors ::
Maybe you know howto handle it ?
Rgds; Jesper.
Hi Henrik.
Donno if you tried to compile your'e Camilla on the PI yet ? (Raspberry Pi)
I got those two errors ::
Compiling alsa-sys v0.2.0
Compiling quote v1.0.2
warning: redundant linker flag specified for library `pulse`
Compiling signal-hook-registry v1.2.0
Compiling libpulse-binding v2.15.0
warning: redundant linker flag specified for library `pulse-simple`
Compiling signal-hook v0.1.13
Compiling rustfft v3.0.1
Compiling libpulse-simple-binding v2.15.0
Compiling alsa v0.4.1
Compiling serde_derive v1.0.104
Compiling serde_yaml v0.8.11
Compiling camilladsp v0.0.5 (/home/pi/camilladsp)
error[E0308]: mismatched types
--> src/alsadevice.rs:112:29
|
112 | hwp.set_buffer_size(bufsize)?;
| ^^^^^^^ expected i32, found i64
error[E0308]: mismatched types
--> src/alsadevice.rs:113:29
|
113 | hwp.set_period_size(bufsize / 8, alsa::ValueOr::Nearest)?;
| ^^^^^^^^^^^ expected i32, found i64
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0308`.
error: Could not compile `camilladsp`.
Maybe you know howto handle it ?
Rgds; Jesper.
Thanks for the log! No I don't have a PI so I never tried. I have tried to fix this now, can you check out the branch "pi" and try again?
Should be enough to do "git pull" and "git checkout pi".
Should be enough to do "git pull" and "git checkout pi".
I think a RPi 4 should handle this fine, but I haven't actually tried that. Where in your chain do you want to place the new Pi? Instead of the 3+?Hi here 🙂
Lately i had been reading a lot about DRC stuff, finding it very interesting and for me a must try also i guess. I'am new into digital filtering and software optimising room correction stuff, so please bare with me if you think some quistions are to light.
My stereo in a midsize livingroom (all diy except speakers) is used as follows : i have all my old cd's on a NAS, where the Logitech media server (LMS) also resides for now. On the LMS i have "plugins" for Tidal / Qobus and Paradise radio etc... I mostly stream. The stream is feed into via Picoreplayer (Squeezelite) on a RPI 3B+ into an USB Amanero DAC, then preamp and last my poweramp, so pretty normal for 2020 i guess.
Also i would like to tell that i ordered the UMIK-1 usb mic. the other day, waiting for it to arrive within the next few day's.
I plan to if possible to run the DRC filters on an Raspberry Pi 4 (4Gb), and have digital filters/room correction applied in realtime for if possible all rates (44.1Khz... 192Khz...)
So, after i read a lot for day's as i wrote i tried to install the LMS on my RPI4 along with BrutefirDRC (plugin for lms which should do realtime DRC) for having some more computerpower than my old NAS have.
The BrutefirDrc plugin was not the easiest part to get running, but without any special filters i got it up and running partially.
I hope it is possible to have Camilladsp within this chain somehow, but not sure how; this is ofcause depending on if i can make it run on the RPI.
So, finding it hard to find information on the net about the hole process, i hope someone can help clear out if this is the right way to handle such Room correction setup ?
(Not specific.)
1. Setup a mic. on software which measure impulses etc... from the room (e.g. REW / roomeqwizard).
2. Take measurements on left spk., right spk.. and export the data into another program which can generate FIR & IIR filters (one for each samplerate i guess?)
3. Load the filters on the convolver (Camilladsp in this case) and stream / play my music through the hole chain in realtime.
Rgds; Jesper.
You can use RePhase for making the impulse response. It seems quite popular. It's a windows program, but I think you can run it under wine. REW is very nice for doing measurements, but not sure if it can help with making impulse responses. I just make my filters with a messy old Matlab script. Some day I will rewrite it in Python and make it nice.
I actually do my room corrrection with a few IIR filters, since I didn't really like the sound with a "perfect" correction with a long FIR filter. I just use peaking filters to tame the worst resonances. I use FIR only for the crossover.
Switching sample rate in CamillaDSP (or BruteFIR) needs a full restart of the service. You need separate impulse responses, and separate config files for each sample rate. I simply run 44.1kHz all the time, since that matches all the material I care about. I'm fine with getting TV-series and movies resampled.
Yes, just add a separate "Delay" filter in the pipeline for that channel.Delay on a particular channel - is that available?
//
Henrik i tried another compile after getting the "pi" branch, but it triggers a new error now, sure we/you can fix it 😛
Jesper.
Btw: The other quistions, i will retake when we have the Pi up and running 🙂
Compiling yaml-rust v0.4.3
warning: redundant linker flag specified for library `pulse`
Compiling signal-hook-registry v1.2.0
Compiling quote v1.0.3
Compiling libpulse-binding v2.15.0
warning: redundant linker flag specified for library `pulse-simple`
Compiling rustfft v3.0.1
Compiling signal-hook v0.1.13
Compiling libpulse-simple-binding v2.15.0
Compiling alsa v0.4.1
Compiling serde_derive v1.0.104
Compiling serde_yaml v0.8.11
Compiling camilladsp v0.0.5 (/home/pi/camilladsp)
error[E0502]: cannot borrow `**filter` as immutable because it is also borrowed as mutable
--> src/filters.rs:83:57
|
83 | filter.update_parameters(filterconfigs[&filter.name()].clone());
| ------ ^^^^^^ - mutable borrow ends here
| | |
| mutable borrow occurs here immutable borrow occurs here
error[E0502]: cannot borrow `mix.name` as immutable because `*mix` is also borrowed as mutable
--> src/filters.rs:144:60
|
144 | mix.update_parameters(conf.mixers[&mix.name].clone());
| --- ^^^^^^^^ - mutable borrow ends here
| | |
| mutable borrow occurs here immutable borrow occurs here
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0502`.
error: Could not compile `camilladsp`.
Jesper.
Btw: The other quistions, i will retake when we have the Pi up and running 🙂
This is strange, it's not related to the Pi so I should get the same error. What version of rustc are you using?
This is strange, it's not related to the Pi so I should get the same error. What version of rustc are you using?
pi@SuperLMS:~/camilladsp/src $ rustc --version
rustc 1.34.2
Can you try upgrading to 1.41 with rustup? That's the version I'm using. I'm going to investigate a bit more which version is really required.
- Home
- Source & Line
- PC Based
- CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc