Self contained room/sound correction solution in Volumio

Hi Volumio community and developper, I am a super happy Volumio customer for several years.
I have just added the FusionDSP plugin and am impressed by the quality and ease of configuration. This allowed to significantly improve the sound quality of my speakers at the extremes of the spectrum.

I was wondering if it would be possible (or potentially already done) to have a full contained solution based on Volumio on RPi and a UMik microphone to tweak the native output of the streamer + amplifier + speakers to a defined sound curve.

I know that REW may run on RPi, but I was more thinking about a lean process embedded in Volumio playing sweeps while recording through UMik, asking for a target sound curve, then creating a FIR correction file and placing it in the dsp?

Any feedback or info about interest/feasibility would be appreciated.

Benoit

Hello!

Thanks :grinning:

I already thought of that…
The idea is to use DRC FIR. But it is complicated to includes plenty of cases. When you use REW you can check is measure is correct before using it. A single sweep is IMHO not enough.
I’m still thinking on how to do that though…
Suggestions welcome!
:wink:

1 Like

Thanks for you rapid answer, Balbuze (I would have guessed you would react to this proposal ;-).

Sure, doing it in a semi automated process will somehow keep the user blind about the automated selection of the corrections. Unless properly implemented it might lead to unexpected results.

Anyway, if you are in for some test development, I would be happy to provide feedback.

Benoit

http://drc-fir.sourceforge.net/doc/drc.html

For reference.

Yes… This is what I wrote above :wink:
Drc-fir is already used in FusionDsp to generate filters from an impulse in filter generation section (in convolution mode)

For the process, I propose the following, fully agnostic about the feasibility with DRC and Volumio plugin mechanic and web display.

Hardware assumptions:

  • USB microphone with definition file
  • Raspberry Pi 4 4gb
  • GPIO I2S DAC

select scenario/action : should it be contained in a single plugin with different sections or spread over several ones?
=> adjust sweep volume / record sweeps / calculate correction file / update DSP / verify room correction.

A/ adjust sweep volume
play sweeps button : plays continuous sweeps until pressed again
→ feedback sound level in web interface

B/ record sweeps

  1. request a file name for storing the different files generated in the process.
  2. select sweep options (number of sweeps, delay in between sweeps, …)
  3. play+record several sweeps separated by a timing to allow scanning the listening area with the microphone
  4. generate and store averaged response (or other black magic maths on the scans to a potentially more relevant result?)
    → Would it be worth/possible to have a graphic view of result in the web header?

C/ calculate correction file

  1. Select averaged response file amongst the available ones (recorded at the previous step)
  2. Select the target curve amongst a list of predefined ones (<300hz; full flat; full high freq roll off;…). Ability to upload a user target curve ?
  3. Select potential options for the correction profile generation.
  4. Run the correction calculation.
  5. Save the correction file (automated naming based on filename in 1.)

D/ Update DSP
update DSP settings to use the generated correction file : select file in a list and push on update DSP button - Though this might be done manually in DSP plugin by the user

E/ Verify room correction

  1. Select the averaged sweep file associated with the correction file loaded in DSP
  2. Runs a sweep
  3. Generate a file with overlay graphs
  4. display graph

Happy to discuss further the logic. A first version to test the usability might provide a very limited set of user selection/customization and potentially expand it upon user feedback.

Benoit

Hello.
This a complex process…
I not sure averaging sweep is faisable.
Even in REW you can’t use average to generate impulse (or in very recent beta?).
MMP measure with pink noise is not a drc fir feature.
From part C) is already in place.in FusionDsp:
Select impulse
Select target curve
Select sample rate
Select strength for effect.
What’s not available is displaying curve in UI and not in my skills…
Last point, the amount of work to make something good enough and reliable is maybe not in phase with the need and spending months for just 3 passionated users (me!:stuck_out_tongue_winking_eye:) is difficult to justified…
But I am still thinking about this.
Thanks

Obviously a significant amount of work, I agree.
You may reach out to me if you want some input or discuss/test some ideas. Now, I am a bit more positive about the potential public, if implemented and documented in an easy process.

Now we might also decide to perform part of the process outside of Volumio, but still on the RPi (command line or graphic interface). I would find very elegant to have a self contained solution to avoid using an external computer.

Benoit

Hello! Another enthusiastic user here, so you might have a use case – but I’m also product owner in my daily life.

Except for the ‘it can be done so I must do it’ attitude, does it really bring that much? How many people can be bothered with setting this up and actually using it constantly?

Even a hi-fi / surround setup using audyseey is a single use experience for most, the target audience doing more might be in audirvana / roon territory, not volumio?

I would be really thankful with a good piece of documentation on how to do this properly (the process of setup, measurement, export+import to fusionDSP is not as easy to figure out at first), or perhaps a (series of) youtube videos guiding along?

Just as suggestions :grinning:

Good to know we are already 3 to be interested :nerd_face:. Theoretically, once properly set up, room correction should be kept on all the time. The goal is to have a working and easy to apply process. Currently performing measurements with another computer running on windows and requiring REW and RePhase to generate the filter and copying it on the streamer is a hurdle very few have the knowledge and interest in setting up.
I strongly believe that connecting a 100€ microphone to the RPi and following a simple procedure would allow a lager population to use this technology.

Benoit

1 Like

+1 :grin:

+1 :grinning:

Let’s say something is coming! :kissing_smiling_eyes:

3 Likes

Yes I completely agree - I was thinking of doing something similar already - I just bought myself a umik-1 microphone and would love to use REW (or similar) within volumio - I think room correction is a killer feature (just look at how much Dirac Live costs). I have already used Audyssey in my main system and I thought it made a huge difference. I use Volumio in 2 other rooms and I actually believe both those rooms (and the cheaper speakers I have in those rooms) would greatly. benefit for room correction - I am using a bit of EQ already with FusionDSP.

1 Like