Digital room correction ,FIR convolver

Hi,
I was thinking about doing room correction through Volumio. I am sure current hardware(BBB and Pi) can meet the requirements, at least for 16bit 44.1Khz samples.
The ability to apply room corrections would make volumio a dream music player.
There are open source programs available already for filter generation
drc-fir.sourceforge.net/
ccrma.stanford.edu/planetccrma/software/
and an opensource convolution engine Brute FIR.
Or nwfiir, which is a real-time digital equalizer.
ludd.luth.se/~torger/filter.html

I’m already doing this! :slight_smile:

volumio (upmpd/mpd) -> alsa ‘loopback’ -> jack -> jconvolver (applies filters) -> usb audio

i’ll post a tutorial soon.

mikekuehn, this is very interesting. Does it handle sample rate switching? Looking forward to the tutorial!

So far I have had it working with resampling, but not switching (such would require restarting Jack each time, which is doable but slow).

For resampling:

  • Install Jack
  • Create alsa loopback device (asound.conf)
  • Set loopback device as output in Volumio
  • Init script to start jack, alsain, jconvolver and connect them

Without resampling:

  • Instead of loopback device, install alsa-plugins

Lots of information here: alsa.opensrc.org/Jack_and_Loopba … ack_bridge

Are you using a raspberry pi 2? I could prepare a working RT kernel / Jack Volumio image…

I am trying to make MPD work with brutefir. MPD has pipe enabled. MPD section is as follows:

audio_output { type "pipe" name "brutefir pipe" command "brutefir -nodefault /root/.brutefir_config 2>/dev/null" format "44100:16:2" }

It has been impossible for me to make it work until now. If anyone has tried brutefir/MPD/pipe, your help will be highly appreciated!

mikekuehn, I 'm very interesting in what you are doing. I recently bought a Raspberry Pi 2 and I want to run DRC in Volumio.

If you find the time to prepare a working RT kernel / Jack Volumio image, I would be glad to test it on my equipment (Airplay + Raspberry PI2 + Benchmark DAC 1).

Let me know.

This is something I want to do too. Check out this thread for a similar (and very promising) initiative that is using ecasound and LADSPA plugins for dsp. Hopefully someone over here can assist getting it to work on the Raspberry pi/volumio as well (the author struggled with audio quality with high rez files). I have been using a similar set-up on a Ubuntu computer but don’t have a multichannel sound card yet to try it with a volumio solution. In fact, incorporating this type of solution into Volumio by default would really make Volumio something special!!! It works by using MPD to pipe out the signal to ecasound that can split out the signal in multiple channels and add whatever filter or cross-over you want.

diyaudio.com/forums/pc-based … overs.html

which is based on Richard Taylor’s blog (which replicated for example Linkwitz complex cross-overs for the Pluto and LX521 speakers ) rtaylor.sites.tru.ca/2013/06/25/ … are-howto/

mikekuehn, I’m very interested in trying the setup you are using! :slight_smile: Were you able to create a RT kernel / Jack Volumio image?

Sure, sorry I haven’t been around for a bit. I’ll work on a minimally modified version of the 1.55 volumio image. (Modified to use Jack by default, with RT kernel, running jconvolver - 2 inputs and 2 outputs). That should be a good starting point for everyone? The main issue so far is keeping Jack connected. Alsa_In adds too much overhead due to resampling (also … resampling, ew!)

I have been preparing FIR filters in Windows using Holm Impulse and RePhase. Or “sampling” a room correction VST plugin to get its impulse response. Both work well.

That sounds interesting, and since we are now creating the Volumio plugin system, that could be a great chance to start developing it together and ship it included in the first Volumio2 version…
You want to join us and create this?
If yes, just send me a pm :wink:

Michelangelo,

I’m not a ‘linux guy’ but I got a great-sounding speaker crossover running on BBB in the Botic kernel. Unlike others that use LADSPA DSP filters running in a separate host program (e.g. ecasound), this one runs in alsa so it does not enforce any sample rate changes on the signal chain. When used with a clock-switching cape, this saves considerably on CPU resources in addition to better preserving our pristine sound bits. I invite you and anybody interested to look at the alsa configuration that is working with BBB/Botic. At first I thought I was done, only to find a glitch :unamused: when using some music players like MPD. After getting some great help online, I got it sorted out. So, check out especially the first and last page of the thread:

diyaudio.com/forums/twisted- … s-bbb.html

In theory, any LADSPA filter or filters could be executed in alsa, and there is a lot of cool stuff ‘out there’. Steve Harris has an impulse convolver:

plugin.org.uk/ladspa-swh/docs/la … th_sEc2.58

Considering the ‘audiophile’ philosophy of Volumio, I suggest that alsa is the best place to run some of these rather ‘non-traditional’ manipulations. If they work there, you will have the best chance of optimal SQ.

Keep up the good work :smiley: ,

Frank

@Mikekuehn, this is pretty awesome if you could do it. I looked exactly for an rpi convolver but my Linux skills are non existent.

Gesendet von iPhone mit Tapatalk

I totally support a modified version of 1.55 with built-in support for convolvers. It may save a lot of time to the people interested in it.

I just ran across an old post on hydrogen audio in which a person compiled their own impulse into the Steve Harris LADSPA plugin, then gave it a listen. It reportedly sounded awful - the plugin was not designed to be used in real time. Sorry I didn’t see this earlier…

I am also very interested in having convolution capability but am looking at applications outside room correction. One capability I would hope anyone looking at adding this would consider is what is often called “true stereo.” This means direct convolution kernels from L->L and R->R but in addition kernels for L->R and R->L using summation at L and R.

The area I am looking into involves headphones rather than speakers and this cross channel capability allows for the creation of 3D ambiance on a stereo stream or persuasive stereo to binaural simulation.

It would also be fantastic if the convolution implementation were zero latency. A bit complicated but it allows minimum phase IR’s to be applied without incurring any audible delay in the process. Really good for keeping video in sync. Here’s a Google search to reveal more on that subject: google.com/search?q=zero+la … 8&oe=utf-8

How its work?
I can use 2 parallel DAC`s for using internal programm crossover?!
Or in this topic tells only about like room correction filters?

This is a very interesting feature that could be provided as plug in in volumio 2 as suggested by michelangelo.

I’ve made a little writeup how to do Room Correction over all your programs, within PulseAudio: mythtv-multikabel.blogspot.nl/20 … r-and.html

The used LADSPA plugin could also run within ALSA, as described here: github.com/bmc0/dsp/wiki/System-Wide-DSP-Guide

Hi,
Thank you. I’m going to try asap. :smiley:

This is a very interesting feature for volumio 2.