Rendered at 22:28:31 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
acidburnNSA 11 hours ago [-]
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.
vladvasiliu 9 hours ago [-]
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.
Dirac Live BC or Dirac Live ART? I would love to know how much these room correction approaches differ in practice.
vladvasiliu 2 hours ago [-]
I think I may have been thinking about ART, indeed.
MrBuddyCasino 9 hours ago [-]
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.
vladvasiliu 9 hours ago [-]
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).
throwawaySimon 4 hours ago [-]
Ive done quite extensive testing with Dirac(with a MiniDSP Flex), rePhase, normal PEQs, BruteFIR, CamillaDSP etc. etc.
Dirac is the most user friendly of the bunch, but honestly once you limit the correction to below Schroeder frequency I cannot tell them apart. So for my systems I just stick to a few PEQs targeting the main peaks under 300hz.
SirMaster 7 hours ago [-]
You can get a miniDSP 2x4HD for like $225 that supports Dirac Live.
giobox 5 hours ago [-]
The optional Dirac Live firmware/licence for the miniDSP is an extra $199, so it's really $425.
I have one and personally didn't bother, did the usual UMIK-1 + REW to create the room correction.
> 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. ;)
alnwlsn 1 hours ago [-]
Neat! I've been using a Teensy 4 for some of these things recently. The Teensy Audio Library is pretty good, but even though open source is pretty well tied to the Teensy hardware.
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.
mattclarkdotnet 30 minutes ago [-]
It's for the pico. RP2040 works fine, but RP2350 has a hardware FPU and much more processing capability, so supports more channels and filters
skybrian 4 hours ago [-]
This looks very cool.
Since a Raspberry Pi Pico doesn’t have built-in audio output ports, I think the main thing blocking ordinary people from using it is figuring out the hardware? A link to a tutorial for how to add audio output would be useful.
WeebLabs 4 hours ago [-]
Thank you! I will soon be producing a comprehensive introductory video on YouTube, which should make things more accessible.
There will also be an official plug-and-play custom board that includes all of the relevant IO, connectors and codecs.
kcoul 3 hours ago [-]
In the meantime, what would you recommend (if there's anything off-the-shelf that would work in a plug-and-play manner?)
I had a project in mind that was waiting for something like this! :)
WeebLabs 3 hours ago [-]
For USB input and SPDIF output, all that you need is a TOSLINK TX module(s) or a couple of capacitors and a resistor if you want coaxial SPDIF. For I2S output, the PCM5102A modules that you find on Amazon work very well, with very reasonable performance (SNR >100dB, THD+N ~95dB).
For 2.1 configurations in a pinch, the firmware includes a software DAC that's more than adequate to drive a subwoofer, so only one external DAC is needed.
skybrian 3 hours ago [-]
Uh, some people like videos but I'd really rather have a web page with all the steps laid out and still photos. (And maybe links to the video, too?)
A custom board sounds great, too.
WeebLabs 2 hours ago [-]
There is a comprehensive readme on the repository but I will soon be adding a simplified "Getting Started" section.
skybrian 52 minutes ago [-]
Glad to hear it!
dmitrygr 6 hours ago [-]
Pretty cool, though the assembly could be tightened in a few hot loops, eg:
mov r3, r10
adds r5, r5, r3
mov r9, r5
can be made into
mov r9, r10
add r9, r5
since r5 and r3 are both dead, and so are the flags
abhiraj_patwa 5 hours ago [-]
Can I use this to connect my electric guitar straight to my pc, or use this DSP for guitar effects?
SoleilAbsolu 3 hours ago [-]
Looking through the GitHub and the AudioScienceReview link - this appears to be specifically about firmware features. You'd need to ensure that hardware inputs on device have input impedance of at least 250Kohms, probably closer to 1Megohm to prevent loading and signal loss if plugging guitar right in. I'd also assume (didn't see confirmation) that I/O is at line level, which is significantly higher than instrument (passive guitar) level, but this device can clearly add/adjust gain along the way. If you use active pickups with a built-in preamp like EMGs, it would probably work just fine.
atmanactive 3 hours ago [-]
Any chance of supporting 192kHz?
adzm 37 minutes ago [-]
Just wondering, why? This is for carrying 96kHz frequencies in the signal?
ssl-3 9 minutes ago [-]
A sampling rate of 192kHz is overkill. And 192KHz exist as a sample rate in audio world because it is overkill.
With a Nyquist frequency of ~96KHz, all of the arguments about whether a person can hear up to eg 22.05KHz, 24KHz, or if there's something meaningful all the way up at 48KHz, become completely and totally ameliorated.
Those arguments were always such tiresome ordeals.
The cost of dissolving those arguments is just some some bandwidth and CPU cycles -- which is to say, it costs approximately nothing.
Please let the man cook. :)
hexmiles 10 hours ago [-]
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.
ssl-3 24 minutes ago [-]
A Behringer UMC1820 does that combination of things (cheap, lots of analog IO, PC interface) very well. It provides 8 inputs OOTB.
For more inputs, a Behringer ADA8200 can be connected with a garden-variety TOSLINK cable, bringing the total of 16.
Or: Two UMC1820s, clocked together using that same TOSLINK cable. That provides 16 inputs that are all identical and also operating in lock-step.
In terms of cost: A smart way to play with this stuff is to buy used gear, and treat eBay as a long-term rental program. Just buy it, use it, and when you want to try something different: Sell it. It works because the depreciation on stuff like this is basically a straight line once the initial hit of turning "new" into "used" gear is over with.
The long-term rental cost then is mostly a combination of time, shipping expense, and seller fees. Keep it as long as you want. :)
AnthonBerg 3 hours ago [-]
The Topping Pro audio interfaces have ludicrously good inputs. The E8x8 has eight analog ins and eight outs plus more connectivity for $450. It is very cheap for what you get. The inputs are crazy good. $450 is also a good chunk of cash, so…
For the $450 you get a lot of stuff. Preamps for mic and guitar pickups. Powerful headphone amp. It's clearly worth it if you make use of some of it, and potentially even just for the inputs alone. $450/8 = $56 per ludicrously clean input is good.
I bought an E1x2 kind of as a joke. Just to see how bad it was. It's actually really, really good.
And also:
It's actually possible to gang together multiple disparate audio interfaces. Let the audio stack keep them in sync with ASRC. Aggregate Device on macOS can do this. People say you can't but you can. Linux is good for this too. If you find a cheaper per channel input, this can actually be done; Piecemeal it.
hexmiles 3 hours ago [-]
Thanks for the suggestion. I was hoping for something cheaper since I don't need really high quality. For now, I'm using a bunch of cheap USB soundcards that are good enough, but having multiple USB devices makes routing hell.
mattclarkdotnet 28 minutes ago [-]
I2S input is on the roadmap, and hardware modules from AliExpress are being tested by Troy, so yes you will get plenty of analog inputs!
mystifyingpoi 3 hours ago [-]
> a cheap way to add 8–16 inputs to my PC
The cheapest option is probably some Behringer mixer with enough inputs and multitrack interface over USB, like XR18.
lysace 9 hours ago [-]
The ADCs on RP2040/2350 only have 12 bit resolution.
mattclarkdotnet 26 minutes ago [-]
The analog input will use separate ADC modules, just as the analog output uses separate DACs. DSPi itself is purely digital (OK, excepting the PWM based sub out). These modules are just a few dollars on AliExpress for ~96dB SINAD
gsliepen 8 hours ago [-]
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.
lysace 8 hours ago [-]
Yes, but we weren't talking about the (current) scope of this project.
Kirby64 9 hours ago [-]
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.
nereye 8 hours ago [-]
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.
roxolotl 10 hours ago [-]
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.
What would be the best way to have analog input and output?
MomsAVoxell 8 hours ago [-]
Zynthian.
amelius 11 hours ago [-]
Is there a guaranteed latency?
WeebLabs 7 hours ago [-]
Hello. I am the creator of this project! Nominal latency is currently 8ms, with ±1ms of variance. All output channels are phase-locked, so this doesn't present a problem for multi-way crossover implementations.
Why? This is a device more for home audio/audiophile uses it seems? Why does latency matter there?
MomsAVoxell 8 hours ago [-]
Would be nice to use it as a synthesis DSP if the latency were a bit better.
wiradikusuma 10 hours ago [-]
I recently bought a Behringer U-phono UFO202 as a cheap DAC for my mini pc. Can this Pi thing replace it?
justin66 9 hours ago [-]
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.
wiradikusuma 7 hours ago [-]
Oh no. I actually haven't used it, it's still sitting in my drawer. And yes it's a headless Debian.
akho 10 hours ago [-]
This Pi thing does not have a DAC.
9 hours ago [-]
lysace 11 hours ago [-]
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.
amluto 6 hours ago [-]
> high quality parametric stereo reverb/echo effect
I’m sometimes annoyed that the home audio/audiophile world is so separate from the live/professional world.
For playing recordings with fancy effects, you can throw massive overkill CPUs at it with small batches, brutefir style, or you can do high-latency FFT filters, and you can get essentially perfect FIR reverb effects with a latency vs complexity tradeoff.
But the algorithm in the middle exists and is not that exotic. You divide your impulse response into a very short piece at the beginning, then a longer piece after that, then a longer piece after that, in exponentially increasing pieces. And then you add up the results, with straight addition and multiplication for the short one, and (carefully scheduled to avoid stalls) FFT convolution for the long ones, and you get basically arbitrary long FIR filters with logarithmic amortized complexity per sample and as low as zero sample latency if you are so inclined.
I think this is called “non-uniform partitioning” or something to the effect. I’m not aware of any serious, public implementation for audio use.
Rohansi 9 hours ago [-]
The RP2350 (Pico 2) supports external PSRAM so you can add several MB more there if you need it.
Lerc 7 hours ago [-]
I have always wondered kind of bandwidth you could make by multiple channels of PSRAM driven by PIO/DMA. Individually they're not so speedy(although the APS6408L-OCH-BA seems pretty crazy) , but how many can you run simultaneously. In terms of the RP2350 it would be fascinating to see how many times a second could you replace the entire contents of SRAM.
Rohansi 4 hours ago [-]
Can surely get more bandwidth but the it's less useful because it will not be directly accessible by the CPU anymore.
mazurnification 4 hours ago [-]
I believe PSRAM is directly accessible by CPU (there is even cache for PSRAM). Or am I missing something?
Rohansi 3 hours ago [-]
Lerc was referring to driving multiple PSRAM chips from a single Pico with PIO/DMA. The CPU will only work with a single PSRAM chip.
Lerc 3 hours ago [-]
Yes, I was thinking of it more like bank switching.
Although, going back to the start of the thread where the suggestion was adding more RAM to future chips perhaps the request could be for support for multiple channels in the future.
It;s the age old question of parallel Vs serial Vs multi channel serial.
WeebLabs 4 hours ago [-]
PSRAM is a possibility that I have explored for offloading the delay line buffers, which occupy quite a significant chunk of SRAM at the moment. It should be fast enough.
lysace 8 hours ago [-]
Default specs matter a lot for worldwide availability and affordability, as well as for the willingness of people to spend a lot of time creating free software for it.
Rohansi 3 hours ago [-]
520KB of SRAM is actually on the high end for microcontrollers. It doesn't seem like much but SRAM is on-die and significantly lower density than DRAM. For comparison, it's the same type of memory used for CPU caches, which are also small!
You can easily find dev boards with 8MB of PSRAM online if you need it. Or you can buy the PSRAM and hook it up yourself. If you still need more memory than that then you're looking at the wrong chip for the job.
lysace 2 hours ago [-]
I shouldn’t wish for more onboard RAM for the next Pico iteration because other boards already have more. Okay, dude.
Rohansi 28 minutes ago [-]
Other boards with the same MCU as the Pico, yes. The only downside is you lose one GPIO.
[1] https://github.com/HEnquist/camilladsp
[2] https://github.com/VilhoValittu/CamillaFIR
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/
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).
Dirac is the most user friendly of the bunch, but honestly once you limit the correction to below Schroeder frequency I cannot tell them apart. So for my systems I just stick to a few PEQs targeting the main peaks under 300hz.
I have one and personally didn't bother, did the usual UMIK-1 + REW to create the room correction.
> https://www.minidsp.com/products/dirac-series/index.php?opti...
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. ;)
What are the odds a Raspberry Pi could keep up with BTrack?
https://github.com/adamstark/BTrack
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.
Since a Raspberry Pi Pico doesn’t have built-in audio output ports, I think the main thing blocking ordinary people from using it is figuring out the hardware? A link to a tutorial for how to add audio output would be useful.
There will also be an official plug-and-play custom board that includes all of the relevant IO, connectors and codecs.
I had a project in mind that was waiting for something like this! :)
For 2.1 configurations in a pinch, the firmware includes a software DAC that's more than adequate to drive a subwoofer, so only one external DAC is needed.
A custom board sounds great, too.
With a Nyquist frequency of ~96KHz, all of the arguments about whether a person can hear up to eg 22.05KHz, 24KHz, or if there's something meaningful all the way up at 48KHz, become completely and totally ameliorated.
Those arguments were always such tiresome ordeals.
The cost of dissolving those arguments is just some some bandwidth and CPU cycles -- which is to say, it costs approximately nothing.
Please let the man cook. :)
For more inputs, a Behringer ADA8200 can be connected with a garden-variety TOSLINK cable, bringing the total of 16.
Or: Two UMC1820s, clocked together using that same TOSLINK cable. That provides 16 inputs that are all identical and also operating in lock-step.
In terms of cost: A smart way to play with this stuff is to buy used gear, and treat eBay as a long-term rental program. Just buy it, use it, and when you want to try something different: Sell it. It works because the depreciation on stuff like this is basically a straight line once the initial hit of turning "new" into "used" gear is over with.
The long-term rental cost then is mostly a combination of time, shipping expense, and seller fees. Keep it as long as you want. :)
https://topping.pro/E8x8-Pre/
For the $450 you get a lot of stuff. Preamps for mic and guitar pickups. Powerful headphone amp. It's clearly worth it if you make use of some of it, and potentially even just for the inputs alone. $450/8 = $56 per ludicrously clean input is good.
I bought an E1x2 kind of as a joke. Just to see how bad it was. It's actually really, really good.
And also:
It's actually possible to gang together multiple disparate audio interfaces. Let the audio stack keep them in sync with ASRC. Aggregate Device on macOS can do this. People say you can't but you can. Linux is good for this too. If you find a cheaper per channel input, this can actually be done; Piecemeal it.
The cheapest option is probably some Behringer mixer with enough inputs and multitrack interface over USB, like XR18.
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.
https://www.raspberrypi.com/news/upcycle-a-sonos-play1/
https://github.com/WeebLabs/DSPi/commit/ba8e481570e6a5ce3d35...
The end-to-end delay is about 10ms, according to this comment:
https://www.audiosciencereview.com/forum/index.php?threads/i...
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.
I’m sometimes annoyed that the home audio/audiophile world is so separate from the live/professional world.
For playing recordings with fancy effects, you can throw massive overkill CPUs at it with small batches, brutefir style, or you can do high-latency FFT filters, and you can get essentially perfect FIR reverb effects with a latency vs complexity tradeoff.
But the algorithm in the middle exists and is not that exotic. You divide your impulse response into a very short piece at the beginning, then a longer piece after that, then a longer piece after that, in exponentially increasing pieces. And then you add up the results, with straight addition and multiplication for the short one, and (carefully scheduled to avoid stalls) FFT convolution for the long ones, and you get basically arbitrary long FIR filters with logarithmic amortized complexity per sample and as low as zero sample latency if you are so inclined.
I think this is called “non-uniform partitioning” or something to the effect. I’m not aware of any serious, public implementation for audio use.
Although, going back to the start of the thread where the suggestion was adding more RAM to future chips perhaps the request could be for support for multiple channels in the future.
It;s the age old question of parallel Vs serial Vs multi channel serial.
You can easily find dev boards with 8MB of PSRAM online if you need it. Or you can buy the PSRAM and hook it up yourself. If you still need more memory than that then you're looking at the wrong chip for the job.