Tangentially related, I recently had some hand-me-down high-end full tower speakers lose their integrated subwoofer amps. I bypassed them and wired in an external amp but people said the integrated DSP would be missing. That's when I learned about CamillaDSP [1] and CamillaFIR [2]. I got a calibrated UMIK-1 microphone and did a frequency sweep in the room. Then I applied the Camilla-computed FIR filter to my snapcast-sourced music stream on the Raspberry Pi 3 B I have networked into the living room. Now I have room-corrected and loudspeaker corrected fancy DSP and the speakers sound better than ever. Pretty fun, and very cheap. The Pi3 runs it using about 20% of its CPU. Not bad! I did the same process up in my office with some desk speakers and they sound great too (that time using EasyEffects to apply the filter in real-time rather than CamillaDSP).
Did you ever use Dirac Live and can compare the results? Hardware that supports Dirac is unfortunately very expensive.
FWIW, I've tried Dirac Live and compared it to the correction suggested by REW [0]. In both cases, the measurements were taken with a UMIK-1, and the correction was done on a computer. Contrary to GP, I didn't have to fix borked components, just a random, untreated living room.
Dirac seemed to have a fairly heavy-handed correction. In my case, I only had fairly narrow frequency ranges that needed correcting, but Dirac seemed to move much wider ranges at a time. It's also nearly impossible to tweak; you basically can only increase/decrease "the lows" or "the highs". But maybe I'm missing something.
In contrast, the suggestions produced by REW were loaded in EasyEffects on Linux, and I could tweak everything to my heart's content. But I actually just left it alone, since it was good enough.
I also have a UMIK-1, and tried the REW route once, but it made everything worse. I suspect a lot of the know-how in Dirac is how to automatically get good results.
In my case, the setup is pretty simple. I have full-range floorstanders that only take a single input, and I mostly wanted to control some booming in my listening position. So there's no crossover to handle or anything fancy.
Maybe for more involved situations Dirac does a better job, but, in my case, it didn't really solve anything. Also, I see they now have this newer "bass control" thing, and it's not clear if my version had it when I last tested it (around November 2025).
I don't use it and so haven't compared. I'm interested as well.
Looks like output only and only one stereo pair from USB is processed to outputs, but a really cool project.
> I can't take all of the credit. My little robot intern (Opus 4.5) has been very helpful with the busy work, leaving me free to handle the trickier planning and implementation. ;)
Pi or pi pico? At first glance it looks like that software is designed for double precision floats. That would certainly be some compute. The M0+ doesn't have hardware floating point let alone double precision. The M33 on the newer chip I think has hardware single precision float so a simple find-replace should let it go.
If it's not doing anything else and the sample rates aren't outrageous it might be doable but I'd have to dig into the code more to see how much work they're doing per sample.
I’ve been wanting to follow this tutorial for some time. I think this might make the whole thing way simpler and smaller if all I want is line in.
I wonder if you could do the same thing in reverse and have a cheap way to get multiple inputs.
I would love a cheap way to add 8–16 inputs to my PC; all the audio interfaces I found cost quite a bit.
The ADCs on RP2040/2350 only have 12 bit resolution.
Yes, but this project doesn't do anything analog to begin with. It could just have several S/PDIF and I2S inputs, and convert that to USB. You probably don't want any processing then, and just pass the digital inputs straight to USB. The limit of how many channels you could simultaneously process would then be the USB bandwidth.
Even worse, the ENOB is closer to 9 bits in testing. It’s got horrible DNL/INL. Totally worthless for any audio unless you’re trying to do chiptunes or something.
FWIW, this project is entirely digital (audio in: USB, audio out: S/PDIF or I2S).
There are other projects for the Pico which implement S/PDIF in.
In either case, since it is digital, the quality (or lack of) of the internal ADCs should not matter.
I recently bought a Behringer U-phono UFO202 as a cheap DAC for my mini pc. Can this Pi thing replace it?
I use a UCA202 for the same purpose. Does yours output static sometimes when it sits for too long? Based on my testing this seems to be a Linux thing instead of a Behringer thing.
Why? This is a device more for home audio/audiophile uses it seems? Why does latency matter there?
Nice.
I wonder if 264/520 kB RAM is also enough for a high quality parametric stereo reverb/echo effect? Should fit about 3/6 seconds of uncompressed 16-bit 44.1/48 kHz audio.
Also: Raspberry Pi Ltd - please keep increasing the RAM size in future iterations to unlock even more use cases.
The RP2350 (Pico 2) supports external PSRAM so you can add several MB more there if you need it.
Tangentially related, I recently had some hand-me-down high-end full tower speakers lose their integrated subwoofer amps. I bypassed them and wired in an external amp but people said the integrated DSP would be missing. That's when I learned about CamillaDSP [1] and CamillaFIR [2]. I got a calibrated UMIK-1 microphone and did a frequency sweep in the room. Then I applied the Camilla-computed FIR filter to my snapcast-sourced music stream on the Raspberry Pi 3 B I have networked into the living room. Now I have room-corrected and loudspeaker corrected fancy DSP and the speakers sound better than ever. Pretty fun, and very cheap. The Pi3 runs it using about 20% of its CPU. Not bad! I did the same process up in my office with some desk speakers and they sound great too (that time using EasyEffects to apply the filter in real-time rather than CamillaDSP).
[1] https://github.com/HEnquist/camilladsp
[2] https://github.com/VilhoValittu/CamillaFIR
Did you ever use Dirac Live and can compare the results? Hardware that supports Dirac is unfortunately very expensive.
FWIW, I've tried Dirac Live and compared it to the correction suggested by REW [0]. In both cases, the measurements were taken with a UMIK-1, and the correction was done on a computer. Contrary to GP, I didn't have to fix borked components, just a random, untreated living room.
Dirac seemed to have a fairly heavy-handed correction. In my case, I only had fairly narrow frequency ranges that needed correcting, but Dirac seemed to move much wider ranges at a time. It's also nearly impossible to tweak; you basically can only increase/decrease "the lows" or "the highs". But maybe I'm missing something.
In contrast, the suggestions produced by REW were loaded in EasyEffects on Linux, and I could tweak everything to my heart's content. But I actually just left it alone, since it was good enough.
---
[0] https://www.roomeqwizard.com/
I also have a UMIK-1, and tried the REW route once, but it made everything worse. I suspect a lot of the know-how in Dirac is how to automatically get good results.
In my case, the setup is pretty simple. I have full-range floorstanders that only take a single input, and I mostly wanted to control some booming in my listening position. So there's no crossover to handle or anything fancy.
Maybe for more involved situations Dirac does a better job, but, in my case, it didn't really solve anything. Also, I see they now have this newer "bass control" thing, and it's not clear if my version had it when I last tested it (around November 2025).
I don't use it and so haven't compared. I'm interested as well.
Looks like output only and only one stereo pair from USB is processed to outputs, but a really cool project.
Also, for those watching for it: https://www.audiosciencereview.com/forum/index.php?threads/i...
> I can't take all of the credit. My little robot intern (Opus 4.5) has been very helpful with the busy work, leaving me free to handle the trickier planning and implementation. ;)
And here's the release thread for those of you wanting a bit more detail or to talk with the creator: https://www.audiosciencereview.com/forum/index.php?threads/i...
What would be the best way to have analog input and output?
This is awesome.
What are the odds a Raspberry Pi could keep up with BTrack?
https://github.com/adamstark/BTrack
Pi or pi pico? At first glance it looks like that software is designed for double precision floats. That would certainly be some compute. The M0+ doesn't have hardware floating point let alone double precision. The M33 on the newer chip I think has hardware single precision float so a simple find-replace should let it go.
If it's not doing anything else and the sample rates aren't outrageous it might be doable but I'd have to dig into the code more to see how much work they're doing per sample.
I’ve been wanting to follow this tutorial for some time. I think this might make the whole thing way simpler and smaller if all I want is line in.
https://www.raspberrypi.com/news/upcycle-a-sonos-play1/
I wonder if you could do the same thing in reverse and have a cheap way to get multiple inputs. I would love a cheap way to add 8–16 inputs to my PC; all the audio interfaces I found cost quite a bit.
The ADCs on RP2040/2350 only have 12 bit resolution.
Yes, but this project doesn't do anything analog to begin with. It could just have several S/PDIF and I2S inputs, and convert that to USB. You probably don't want any processing then, and just pass the digital inputs straight to USB. The limit of how many channels you could simultaneously process would then be the USB bandwidth.
Even worse, the ENOB is closer to 9 bits in testing. It’s got horrible DNL/INL. Totally worthless for any audio unless you’re trying to do chiptunes or something.
FWIW, this project is entirely digital (audio in: USB, audio out: S/PDIF or I2S).
There are other projects for the Pico which implement S/PDIF in.
In either case, since it is digital, the quality (or lack of) of the internal ADCs should not matter.
I recently bought a Behringer U-phono UFO202 as a cheap DAC for my mini pc. Can this Pi thing replace it?
I use a UCA202 for the same purpose. Does yours output static sometimes when it sits for too long? Based on my testing this seems to be a Linux thing instead of a Behringer thing.
This Pi thing does not have a DAC.
Is there a guaranteed latency?
85ms
https://github.com/WeebLabs/DSPi/commit/ba8e481570e6a5ce3d35...
Ouch, thats pretty average, what a pity ..
That's the maximum delay when adding a delay for synchronising with other sources.
The end-to-end delay is about 10ms, according to this comment:
https://www.audiosciencereview.com/forum/index.php?threads/i...
Why? This is a device more for home audio/audiophile uses it seems? Why does latency matter there?
Nice.
I wonder if 264/520 kB RAM is also enough for a high quality parametric stereo reverb/echo effect? Should fit about 3/6 seconds of uncompressed 16-bit 44.1/48 kHz audio.
Also: Raspberry Pi Ltd - please keep increasing the RAM size in future iterations to unlock even more use cases.
The RP2350 (Pico 2) supports external PSRAM so you can add several MB more there if you need it.
[dead]