Thank you for your donation!


Cloudsmith graciously provides open-source package management and distribution for our project.


Instruction Guide Room Correction with moOde, Camilla DSP and REW - Tutorial
#1
Tutorial for room correction with moOde, Camilla DSP and REW

This discribes how to perform room correction for a stereo (2.0) setup by creating impulse response curves for upload in moOde using the miniDSP UMIK-1 microphone and Room EQ Wizard. It is a step by step guide to get what Dirac promises its customers: '1. Improved localization of sound events (“staging”). 2. Better clarity in music and speech.3. A deeper and tighter bass free of resonances throughout the entire listening area.' - without using Dirac. It works both for MPD and LMS users.


Used Setup / Equipment for this tutorial:
Server:QNAP TS-251B / LMS 8.4.0 running in a docker container
Client:Pi model: 4B 1.1 2GB with DigiOne Signature HAT /moOde 8.3.9 (incl. squeezelite 1.9.9) incl. Camilla DSP 2.0.1
mic: miniDSP UMIK-1
REW V5.30.9 installed on a MacBook Pro with Audio Out: 3,5mm headphone jack + headphone jack to 2 RCA cable
Sound System: NAD Amp, Cambridge Audio DAC, Nubert ATM and floor standing speakers
used target curve: [url= https://mehlau.net/audio/dirac-live-2/Ha...rve]Harman Curve +4 dB[/url] (Harman curve elevated +4dB in the bass/sub-bass range)

items in red are mandatory to perform room correction as described


This guide is intended for users who have moOde up and running. It is equally suited for users of the full moode MPD functionality, or 'only' the squeezelite renderer together with LMS (Logitech Media Server). It allows for automatic samplerate switching, as enabled in Camilla DSP 2.0 and higher. Without prior experience allow +3h to complete the procedure and make sure to have no background noise during measurements.

A. Before the measurement
As a beginner, you should start by learning the basics about creating IR curves with REW. To do so watch this video until 13:00 min. The last three minutes can be skipped, since we are using Camilla DSP, not Equalizer APO.




In case the link does not work: search for 'Correct your speakers with REW, UMIK-1 and Equalizer APO (Room Correction Tutorial)' by Julian Kraus on Youtube
 
Now setup your system with mic at the listening position and headphone (or soundcard) output as input into your (pre-)amp, so that you're able to play sweep sounds on your speakers from REW and simultaneously measure the response.

Optional: Optimize speaker position
Recommended especially for full range speakers. Distances from adjacent walls to speakers have an impact on peaks and valleys in the frequency response, especially in the bass and sub bass range. [i]In a room without absorption elements [i]some destructive interference which causes valleys in the measurement is very likely to occur[/i]. Boomy bass can be corrected for, but [/i]destructive interference can't be EQ'd out. Since the extent of those valleys is influenced by speaker position, we ought to make sure we place the speakers in beneficial spots.
To do so, you can perform frequency sweeps for your left and right speaker individually at different speaker positions and pick [i]the curve/speaker position with the least pronounced valleys. I recommend to determine areas of possible placement first, e.g. [/i]a rectangular area of 60x30cm and next to decide a pattern, e.g. 6 positions within that area. Conduct sweep measurements as learned in the video for each speaker and each position. Finally pick the best position per speaker.

B. Create impulse response curves
Now take your measurements as described by Julian. You may find minor differences in your version of REW, but as I can tell things have only become more straightforward, e.g. the house-curve (=target curve) input is no longer in 'Preferences' but in 'EQ'. I recommend to not take a shortcut and only take one measurement per speaker, since small positional changes can have a strong impact on measured frequency response especially in the mid-higher frequency range. That's why different mic positions and averaging is crucial. If you want to optimize for multiple listening positions e.g. on a couch, you've got to adapt your measurement pattern accordingly.

Once you finished your measurements:
  1. 'Average the responses'. Next switch to 'EQ', choose Manufacturer: Generic, Model: Generic.
  2. Under Target Settings choose Target type and match LF Cutoff and LF Slope to your measurement. Choose a House curve you like. Some use flat response, some use B&K - see link above for the one I've chosen.
  3. 'Calculate target level from response'. I recommend to rather go lower than the calculated target level, with almost no valleys below the target curve (and ignore the dialogue if xy% is above house curve...). Since peaks can be corrected for, valleys caused by interference not quite.
  4. The other digression I allowed myself from Julians instructions was 'Overall Max Boost'. He says to choose 0dB.  I choose 3dB.
  5. Under 'Filter Tasks' 'Match Range' to your speaker output.
  6. At minute 13 he chooses 'Export filter settings as text'. We don't do that. Instead we go back to the main window and choose File>Export>'Export impulse response as WAV'
  7. We see the 'Measurement impulse response export' dialogue: Check 'Mono' / Choose the Average measurement you've created for which you've created filters for / Choose Export measured IR / At the bottom check all the sample rates you want to play music with. For me it's 44.1kHz, 48kHz, 88.2kHz and 96kHz and hit OK / Choose location to save file
  8. Your chosen file name will automatically have the sample rate attached, e.g. yourname-L-44k.wav. Replace 44k with 44100 so that the filename will be, e.g. yourname-L-44100.wav. Likewise replace 48k with 48000, 88k with 88200, 96k with 96000 etc. This is required for automatic sample rate switching to work!
Finally do the same for the other speaker.

Now we're done with REW and switch to moOde.

C. Import IR curves into moOde
  1. Under Audio>Equalizers - Click on 'EDIT' CamillaDSP settings
  2. Under Pipline editor: Status: On / Expert mode: On
  3. Under File management> Configuration / Hit 'NEW' & Enter Name - e.g. MyConfig
  4. go back to prior screen with upper left arrow
  5. Under Audio>Audio Output>Volume type select CamillaDSP
  6. Under Audio>Equalizers CamillaDSP: select 'MyConfig' --> SET
  7. Click on 'EDIT' CamillaDSP settings
  8. Under Settings>General>Signal processing: select 'MyConfig' and 'SAVE' (may already be selected)
  9. Under File management>Convolution click on 'Upload'
  10. Upload all wav files you've created in step 1.
  11. 'Pipeline editor' hit 'OPEN'
D. Edit Camilla DSP configuration in Pipeline editor
Under Filters hit + sign to create new filter for left speaker:
  1. enter name, e.g. ir_left / type: Conv / subtype: Wav
  2. Now hit on icon above trash icon to select (one of) the filter(s) for the left speaker you have created (as described in paragraph A.), e.g. yourname-L-44100.wav
  3. in the filename replace 44100 with $samplerate$, e.g. yourname-L-$samplerate$.wav
  4. Repeat for the right speaker to create 'ir_right'
In case you want good sound also when listening to music at low volume you should add a Loudness filter
  1. hit '+' sign / enter name, e.g. Loudness / type: Loudness / fader: Main
  2. values for high_boost(6), low_boost(6) and reference_level(-5) depend on your setup - I've chosen values in brackets
Note: In moode 8.3.9 the Volume of Camilla DSP can only be adjusted when using the moode Player. As user of squeezelite renderer/LMS together with some LMS client, you need to adjust the volume directly in Camilla DSP, in order to enjoy a working Loudness function.

Switch to Pipeline and hit +-sign twice to create new Filter Pipelines
1st Filter Pipeline
  1. type: Filter, channel:0
  2. hit +-sign in new filter twice and create the 'ir_left' and 'Loudness' filter pipeline
2nd Filter Pipeline
  1. type: Filter, channel:1
  2. hit +-sign in new filter twice and create 'ir_right' and 'Loudness' filter pipeline
Finally, in the bottem left under 'Config' hit 'Apply and save'. Done!
You can turn room correction On/Off directly in the Pipeline editor under 'Files'. Select the circular arrow next to 'flat.yml', in Config hit 'Apply to DSP', go back to your own config etc. As user of the moOde client you can also directly switch configs in the upper right corner.

I do hope you now hear as much an improvement towards natural and neutral sound as I did.



Alternative Approach: Up-/Resampling to one samplerate and using 'Quick Convolution'

If you can't be bothered with automatic sample rate switching, want to stay clear from the Pipeline Editor and also don't need a Loudness (or any other) filter, you can go for a simpler setup: Quick Convolution.
You have all your songs SoX resampled to the maximum samplerate your DAC supports - or any other samplerate of your choosing. And you only use one IR-curve for left and right each, for this exact samplerate.

For Squeezelite renderer:
  1. In Renderers>Squeezelite hit 'EDIT' Squeezelite settings
  2. In 'Other options' enter: -r 96000-96000 -o camilladsp -W -R vLE -S [replace 96000 with your chosen samplerate]
  3. In Audio>Equalizers choose 'Quick convolution filter'
  4. Hit 'EDIT' CamillaDSP Settings
  5. in File management>Convolution 'Upload' the ir-curves with your chosen samplerate
  6. In Settings>General>Signal processing choose 'Quick convolution filter'
  7. Directly below in 'Quick convolution filter' choose the IR-curves for left and right channel you've uploaded
  8. At the top, next to Settings, hit 'SAVE'
When using MPD:
  1. Go to Audio>MPD Options>General>MPD settings: EDIT
  2. chose whichever Settings you prefer, recommended: SoX Resampling Quality: Very High
  3. - 8. same as above



...a few closing remarks:
  • Spotted errors? Get in touch.
  • The reason I have put the easier Quick Convolution setup last is my expectation for the majority of hifi enthusiasts to prefer having their DAC do the re-/upsampling and not some open-source SoX algorithm. Actually I don't. I believe SOX upsampling is top notch - at least when using the -R v switch.
  • Commercial products for home-use I know and heard of visualize a calculated expected outcome after filtering - like REW. But they don't offer actual measurement capability. Possibly to avoid cognitive dissonance and prevent buyers remorse. If someone knows how to easily measure room correction effectiveness with REW: I'm interested!
  • The improvement delta of this exercise for my full range system was way higher than replacing my historic Cambridge Audio Dac Magic with an RME Adi-2 Dac FS. Nothing against the RME device - quite the opposite. I'm loving it for headphone listening. But the DAC apparently wasn't the weakest part from bit to ear. Room acoustics was. Now that I've completed this project I'm perfectly fine with the sound. No more Hifi tweaking. ....Probably :-)
Reply
#2
@OtttO thanks for taking the time to great the how to!
Only I don't share you opinion on about the quality of sox resampling. If you search bit you will find a lot of reviews about, including measurement.

But there is an even better alternative by using the resampler of camilladsp itself.
Reply
#3
(02-26-2024, 08:45 PM)bitlab Wrote: @OtttO thanks for taking the time to great the how to!
Only I don't share you opinion on about the quality of sox resampling. If you search bit you will find a lot of reviews about, including measurement.

But there is an even better alternative by using the resampler of camilladsp itself.

Hi bitlab,
thanks for the feedback - as for camilladsp resampling what are the settings you recommend:
Asynchronous - accurate, Rate adjust?
Reply


Forum Jump: