Link Search Menu Expand Document

Volumio Room Correction

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. Download here.

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

For an introduction to room correction, please read the overview. To learn more about taking measurements with HouseCurve please see the usage documentation.

You can also check out the Volumio community forum for more information or to ask for help. There’s a dedicated topic on this app note if you’d like to share your results.

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. There are several ways to do this as described in connecting.

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, the test signal is played manually while HouseCurve just listens.

The FusionDSP plugin makes this easy by shipping with HouseCurve’s test signal. To access it, go to FusionDSP settings. In the “Tools” section, select “install tools”. When the install completes, choose HouseCurveTestSignal.wav as the file to play. Press “Play selected file” to play the sweep.

fusiondsp tools

Next, we need to configure HouseCurve for external sweeps. 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.

stimulus type

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 can produce PEQ (biquad) or FIR filters to correct a saved measurement to a target curve. For this app note, we will use PEQ filters and export them as parametric equalizer settings (ie: Freq, Gain, Q). Note that FusionDSP can also support FIR filters via convolution. The FIR filter produced by HouseCurve has better low frequency resolution, resulting in smoother bass and nicer sound stage/imaging. However, this comes at a cost of higher CPU usage.

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

equalize tool

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. For more information, see gain management.

Tap Equalize Setup to display the Equalize Setup screen. Ensure filter type is PEQ. 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 © 2024 Greg Wilding - Made in Canada - contact