RPi + Volumio + BruteFIR + Wolfson audio card

Hi all,

After using Volumio to stream audio around my flat, I am now working on a project which aim is to introduce FIR filtering before playing music. For that purpose I am using BruteFIR and it works pretty well with the Wolfson Audio Card. The sound quality is really great, so now I just would like to understand why :slight_smile: Actually now I would like to be able to do everything by myself but the part I don’t understand is “how did you tweak linux kernel in order to improve sound quality that much?” I tried to make so search across the web but I can’t find anything “concrete”.

It would be really nice if you could explain me how to do it, for example, is it possible to use another distro like arch or debian and tweak it in order to get almost the same results as with Volumio?

Anyway, thanks a lot for your work


Search the forum for an alternative to BruteFIR.

And BTW, the tweaks to the kernel may help to reduce stuttering or delays, the sound coming out is the same. Bits are bits.

I suggest you to have a look here : dsp-with-raspberry-hifiberry-and-volumio-drc-folve-t672.html

Thanks for both of your answers but I must have been unclear. Actually I am not looking for a BruteFIR alternative. I find this piece of software great and it works perfectly. Anyway, thanks for showing me Folve, I didn’t know about it and I have a look into. :slight_smile:

My concern is about being able to reproduce kernel modifications of Volumio in order to improve sound quality of other linux distros. Moreover, I’d like to understand how does it works for educational purpose.

BTW Lag-na, your assumption “Bits are bits” makes sense, but only if the system is high quality “bit-perfect”, which means that you have no up/down sampling during the process and reliable clocks for example. Otherwise you may introduce some quantification/sampling errors, jitter…

I’m very intersted by what you are saying ! How did you manage to make brutefire working on RPI ? Because folve is limited to flac (and maybe some other fole format). If you can explain how you do that and performance / results it would be nice and I would like to test it !
For the kernel tweak I can :frowning: 't help you

Sure, about the installation of BruteFIR I used mainly this guide (start page 8) : http://www.acourate.com/freedownload/The_Guide_to_VoyageMPD_BruteFIR_and_JACK_v1.6.pdf which I found very clear. Indeed I had no experience of Linux before starting this projet.

Basically, what you have to do is :

  1. Install the library fftw
  2. Install BruteFIR 1.0m
  3. Configure it, regarding to your needs

And even if I was unable to install it on Angstrom (still trying), it works perfectly with both Volumio and Raspbian.
About the configuration, I didn’t need jackd so I stayed with Alsa in order to avoid layers as much as possible.

Let’s talk about the performance now, I take input sound from SRC in 16b/48kHz to S/PDIF WAC In --> Apply filter in Brutefir, still in 16/48 --> Playback in S/PDIF, again in 16/48 to an amplifier. This is the maximum I can get with double precision coefficients. The processor then runs approximately to 90% which is already above BruteFIR advice, but so far works well for me.

I hope everything is clear, feel free to ask me if you have more questions.
What about your project?

for my project, have a look at rasp-volumio-project-t1296.html :wink:

a question and a suggestion :
what did you use to generate your filter (mic / software)? I use DRCdesigner from a ubuntu to generate filter for folve.

To reduce RPI cpu use, maybe you can overclock it… connect via ssh and type raspi-config and then overclock… I didn’t try yet…

Sorry for the late answer.
I am not doing room correction with my pi but applying real time audio effects. Hence I am using Matlab/Scilab to generate coefficients in a text file, which is link to BruteFIR.

Thanks for your suggestion about overclocking the Pi, actually I already had to overclock it to medium in order to process the filter without crashing. So yes, overclocking the pi in order to reduce cpu use is a good idea and works :slight_smile:

Really your project is nice and clean I like it. I can see that you are using I2S with a DAC, could you explain me how to activate it and control the signals you send? Cause for the Wolfson I just had to patch the kernel so I didn’t understand how it works. I already read the thread on this forum about I2S but wasn’t able to reproduce it :frowning:

If you can reduce the filter length, you would also be fine.

As info: what is the filter length the RPi can keep up with at 44 kHz/16 bit?

Also: BruteFIR is heavily optimized for x86, running it on an ARM may be quite inefficient: it has never been optimized for it.

@ François
In Volumio, from the webUI/settings you just have to activate the i2s driver for your DAC and reboot. As simple as this! :smiley:

@Lag-na : About my filter length, I use a set of 32768 coefficients but the aim would be to increase the number of it instead of reducing it. BTW I am running 16b/48k instead of 16b/44,1k. And for sure BruteFIR is optimize on x86, I already runned it on intel platforms and it is about 25x times faster. But the point is I can’t find another platform where I can access Digital In AND Out. Despite Digital out is easy to find, digital in is much less common. My only solution for doing it right now is the Wolfson audio card. If you know any other solution I would be really interested. :slight_smile:

@Balbuze : Ah ah I didn’t see this feature, thanks a lot. But still, I don’t understand how it works and it somehow bother me :wink: