diyAudio logo

LINUX Audio BrutefirGeneral


Brutefir is a nice and unique convolution engine for running FIR-Filters.
It is trimmed to maximum performance in all aspects. If used in a pipe
of processes Brutefir should be the last one.


The tool has been developped by Anders Torger.
Unfortunatly Brutefir is not maintained any longer. However it ist still working.
It could IMO need some improvements, such as improved dithering.


You can download the tool over here:

https://www.ludd.luth.se/~torger/brutefir.html

ON DRC - Duffroomcorrection https://www.duffroomcorrection.com/wiki/Main_Page
you'll find a lot of interesting information.

When it comes to filter creation Uli Brueggemanns Acourate https://www.acourate.com/ is IMO the best tool
to get what you need. I'havn't seen better ones. Please read his WhitePapers? about phase linear filters.

Of course if you have a good scientific background you can build filters by yourself. You don't have to spent that much money.


1.
Installing it is quite easy:


2.
Brutefir and MPD


1. First you need to setup a fifo. That's where brutefir and MPD meet each other.
I'd put it on a RAM directory. /tmp is RAM on my machine

mkfifo /tmp/mpd.fifo


2. change your brutefir-mpd.conf file output to your fifo


input "ileft", "iright" {
device: "file" {path: "/tmp/mpd.fifo"; }; # module and parameters to get audio
sample: "S16_LE"; # sample format
channels: 2/0,1; # number of open channels / which to use
delay: 0,0; # delay in samples for each channel
maxdelay: -1; # max delay for variable delays
mute: false,false; # mute active on startup for each channel
};


3. Now you configure the mpd fifo interface in /etc/mpd.conf


audio_output {
type "fifo"
name "FIFO-Analog-44.1-hw"
format "44100:16:2" # optional
path "/tmp/mpd.fifo" # optional
}


4. Restart mpd, select fifo output in minion and select playlist

5. Start playback here !!!

mpc play

6. Start brutefir as daemon

sudo chrt -f -p 80 ./brutefir -daemon -nodefault <you-dir>/brutefir-mpd.conf

Note: maybe you have to start brutefir as root


Until here it works so far - a bit odd - but it works.

The problem if you start and stop mpd playback, mpd flushes the fifo which makes brutefir die,
because it sees a bad file descriptor.

This needs to be solved on either of the ends. Either brutefir becomes immune against bad file-
descriptors on the fifo or MPD stops flushing the fifo on start and stop.

Once the playlist is playing in mpd next/prev/pause within mpd will work.