Link Search Menu Expand Document

Room Correction with Volumio

Volumio is open source music playback software that can run on a PC, Raspberry Pi, etc. It provides DSP features through a plugin called FusionDSP, which is a front end for CamillaDSP.

HouseCurve is an iOS application for tuning audio systems. It turns your iPhone/iPad into a capable audio analyzer using the built in microphone. It can be used for tuning tasks like creating room correction filters, subwoofer time alignment, level matching and choosing crossovers. A free trial can be found at housecurve.com.

This app note will demonstrate room correction using HouseCurve and Volumio’s FusionDSP plugin.

What you need

  • An audio system running Volumio 3 with the FusionDSP plugin.
  • A Volumio control (web interface, dedicated app, etc).
  • An iPhone or iPad with HouseCurve installed on it.

HouseCurve achieves reasonable measurement accuracy with the built in iPhone or iPad microphones. For more information see microphones.

You will need a way to transfer files from your iPhone/iPad to Volumio. Use whatever method you are most comfortable with. This app note will use Volumio’s /mnt/INTERNAL Samba share (comes configured in the Raspberry Pi image).

Samba on Linux doesn’t always work with iOS devices. To ensure compatibility, install the Fruit Samba VFS module. Without this, file transfers may fail with “attribute not found” errors. For instructions see.

For best results, ensure the audio system is set up correctly before applying room correction.

1. Install FusionDSP Plugin

Using the Volumio control, install the plugin by going to Volumio settings -> plugins. You will need to sign your device into a MyVolumio account (free or paid) to see the plugin.

FusionDSP Plugin

2. Get Connected

HouseCurve measures your audio system by listening to it play a sine sweep test signal.

For this app note, we will perform measurements using externally played sweeps. This method doesn’t require a direct connection to the audio system. Instead, we transfer the test signal as a wav file to the audio system and play it manually. HouseCurve will measure by listening to the test signal as it is played.

This method will work with any audio system, but it requires more steps. You can skip this and use a direct connection instead, see connecting for more infomration. Note - at the time of writing this app note, measurements over AirPlay didn’t work with Volumio on a Raspberry Pi 3B. This isn’t uncommon for unofficial AirPlay implementations (Shairport-sync, etc).

To transfer files to Volumio’s Samba share, open up the Files app on you iPhone/iPad and select Connect to Server. Enter the network name of the Volumio device (ex: volumio.local) and connect as a Guest. HouseCurve will now be able to save to this location.

Volumio samba share

Launch HouseCurve on your iPhone/iPad. Tap Setup to display the Measure Setup screen, then tap Stimulus Type.

measure setup

Set the stimulus type to External Sine Sweep. Tap Export test signal and select a location to save the wav file and transfer to Volumio’s library.

stimulus type

If you save directly to Volumio’s Samba share, you will need to refresh the library to see the file.

Saving to share

You should now be able to play the test signal using Volumio.

3. Collect Measurements

Using the Volumio control, access the FusionDSP plugin and ensure that equalization is disabled.

Launch HouseCurve on your iPhone/iPad. Tap Reset to clear previous measurements.

ready to measure

Tap Plot Setup to display the Plot Setup screen. Ensure that the plot mode is “average”.

plot setup

To measure with external sweeps, first tap Plot Setup on HouseCurve to start the measurement process. Then use Volumio to play back the test signal. Ensure that the iPhone/iPad microphone is pointed in the direction of the speakers. Measure at a normal listening volume.

Note - HouseCurve must remain in the foreground to measure. If you need to trigger playback with the same iPhone/iPad, start a looped playback, then switch back to HouseCurve to start the measurement. HouseCurve will only collect one measurement at a time.

Looped playback

HouseCurve will automatically average measurements as they are collected. To get a realistic measurement of your listening area, it is important to average measurements from several locations. For a desk (near field), try measuring from 2-3 locations. For a living room, try 3-5 locations.

averaged measurements

When you are satisfied with the average measurement, save it by tapping Save. The saved measurement will be used to generate the room correction filters.

4. Generate Filters

Tap More and select Equalize. HouseCurve will display the Equalize tool.

The Equalize tool generates biquad (IIR) filters to correct a saved measurement to a target curve. These filters can be exported as parametric equalizer settings. This is what we will use for Volumio.

The generation process is instantaneous, so the display automatically updates to reflect any setting change (target curve, saved measurement, filter settings, etc).

equalize screen

HouseCurve allocates filters to regions with the largest deviation from the target curve, preferring lower frequencies and ignoring areas with low coherence (SNR). You can adjust the target curve and coherence blanking threshold by tapping Plot Setup.

Tap Equalize Setup to display the Equalize Setup screen. The default settings should provide a good correction, but feel free to experiment.

equalize setup

5. Export Filters

Filters can be exported to a file by tapping Export. Ensure that the format is set to “Parametric EQ Settings”. For more information on the format, see file formats.

filter export

Tap Export filters, select a location for the filter file and then tap save. The filter file must be placed in /mnt/INTERNAL/FusionDSP/peq for FusionDSP to see it. Using Volumio’s Samba share, you can save directly to this location:

save filter

6. Load Filters

Using the Volumio control, go to the settings for the FusionDSP plugin. Set Type of DSP to “Parametric equalizer” and apply the setting.

Use Parametric EQ

Scroll down to the section labelled Import A Local EQ File. Select the filter file and press load. If the filter isn’t available in the drop down, make sure it was placed in /mnt/INTERNAL/FusionDsp/peq.

Load Filter

The filters will be loaded and enabled immediately. Scroll back up to the Settings section to see the loaded filters. You may need to adjust the automatic preamp / gain settings to match the original playback levels. Volumio seems to lower the overall gain when filters are loaded.

Wrapping up

With the filters loaded, you can repeat the original measurements to confirm that your system now matches the target curve. The average should be reasonably close to the response predicted by HouseCurve. Happy listening!


Copyright © 2022 Greg Wilding - Made in Canada - contact