Using MFreeformEqualiser for room/speaker correction

Official support for: meldaproduction.com
RELATED
PRODUCTS

Post

If you record a sine sweep through your speakers using a flat microphone, then MFreeformEqualiser's 'analyse audio files' feature to detect the resultant frequency curve, you can cancel out the imperfections. Do this by 'swap source and target' to move the curve over to the green 'target', and then draw in your ideal curve on the red curve using the Draw function and then hit 'Equalize green to sound like red'.

The problem is, what should the ideal curve look like? How do I draw a 3dB or 4.5dB curve using the draw function? So far I've just been trying to draw a curve that loosely follows the average curve of my setup, but ideally it would be more... well... ideal.

Any ideas or thoughts on this?

Post

The ideal curve for critical listening is basically flat down to 63Hz. For music production, you want a curve of 1.5dB/oct with the bass being louder. For consumption and enjoyment, you can have any curve you like. Typically people boost the bass a lot. Theaters have their own curves as well.

You also want to measure in a realistic radius and not just a single point. This is because the SPL for a given frequency in a room can vary drastically within a short distance. The main way to counteract that is using less EQ than you might initially assume.

Keep in mind that EQ does nothing to minimize reflections or ringing. For that, you need absorption. Absorption, by minimizing reflections, also helps even out SPL - mainly nulls. Due to the nature of reflected interference, nulls are always more severe than peaks.

As far as using MFreeformEq, I can't help you because I've never used it for this purpose.

Post

You could disable drawing mode and draw the shape using nodes to get a perfect straight line.
Melda Production & United Plugins
Surface Studio = i7, 32gb, SSD.
Windows 11. Bitwig, Reaper, Live. MTotal.
Audiofuse, Adam Audio monitors + sub, iLoud MTM.
Polybrute, Summit, Pro 3, Tempest, Syntakt, AH2.
Ableton Push 2, Roli Seaboard Block.

Post

Yeah, I know how to use the graph editor fairly well, my question was more about ensuring that the curve I draw in the green source curve is the 'right' curve, given it's not clear how the scale works.

Anyway, I was able to create a 3dB/Oct curve by dropping points at each octave, dropping by 3dB for each point. So, starting at 20hz at the highest volume (+24dB) and then 40hz (21dB), 80hz (18dB), etc. It was fairly straight looking but slightly skewed as Melda's frequency graph is a little skewed to make the numbers rounder.

Post

Hehe well, this gets sort of phylosophical I assume :D. One of my future plans is a plugin, that would let you analyze your own hearing system (so everything from the sound creation to your ears together) and then with some online exchange we would hopefully be able to approximate the median hearing of people better and create an EQ curve specifically for you, that would match this "average". We'll see how that will go.
Vojtech
MeldaProduction MSoundFactory MDrummer MCompleteBundle The best plugins in the world :D

Post

I've been using FreeformEQ (inside an MXXX session) for this for quite some time (for headphones too).

There are other specific room EQ products available of course - Dirac, REW, Sonarworks etc. - but they either aren't suited for an ASIO system, add latency, don't have detailed editing of the spectrum, or are just expensive - and seeing as I already had MXXX I thought I'd just go with that, as it avoids all of those problems!

Initially I just tuned manually, by ear, using an oscillator. Which got very good results (though you tend to get a warm balance by doing that). This completely transformed the sound of my headphones, however, and saved me the upgrade cost of buying Sennheiser HD800 :hihi:

I moved on to recording pink noise from the speakers (using an ipad Pro w/AudioTools) then matching the recording with direct pink noise in FreeformEQ to produce the curve. A step up in quality! Those little MEMS mics in the ipad are surprisingly accurate!

However, today I had delivered a MiniDSP UMIK-1 USB measurement mic - which has its own built-in preamp and an individual calibration file that can be imported into room EQ software to cancel out manufacturing discrepancies in the response.

After spending a little time creating an inverse calibration EQ in FreeformEQ based on that file (there's a FR for you Vojtech - importing calibration files!) I settled on the below process:
  • Pink noise recording
  • Play recording via inverse calibration EQ into FreeformEQ analysis, match to direct pink noise, which produces a Flat speaker EQ
  • Add an additional FreeformEQ with a preference curve (as it turns out a Flat FR speaker is not necessarily pleasant to listen to, especially in the nearfield!)
One piece of advice - don't let the match EQ chase room nulls too far - for me, it wanted to add 12dB at 300Hz (which is a room null in my space) - EQ is not very effective for nulls - so I chopped the peak off at 6dB.

The end result after 1 run through - a major step up. The new microphone has made a big difference over the ipad. I'll be following up with some fine tuning and re-measurement. And my crappy cheap speakers have survived another day, the upgrade to Genelec/Neumann/Geithain isn't happening yet :hihi:

As for the preference curve - I tried recreating a few - the harman curve, and a few FR plots that have been taken at high-end recording studios - but they were beaten easily by a simple straight line. 0dB at 20Hz, to -7dB at 20KHz.

Post

Good approach :) Maybe you can post some screenshots of the various stages so that others can get an even better understanding. And, I am not sure what you meant by "inverse calibration EQ".
DarkStar, ... Interesting, if true
Inspired by ...

Post

Yeah, that's interesting info, thanks for sharing.

I downloaded one of those calibration files for the UMIK 1 (grabbed a serial from a screenshot) and it's just a text file that lists 615 frequency points with amplitudes (e.g. 160hz = 0.6). It's easy to convert that to a spreadsheet file or whatever. The melda graph editor can import CSV files, so it would be possible to import.

Unfortunately the format of points in the melda CSV is totally different, they're writen in X/Y coordinates relative to the graph center (e.g. X= 1.65235 Y=0.00235). There's a chance someone could create a way to convert the calibration format from mics into the melda graph format by figuring out the hertz values relative to the melda graph center. With a day I might be able to crack it, but I don't have time.

Post

DarkStar wrote: Wed Sep 22, 2021 9:07 am Good approach :) Maybe you can post some screenshots of the various stages so that others can get an even better understanding. And, I am not sure what you meant by "inverse calibration EQ".
I'll see if I can get some material together for it - I appreciate I wrote a big dense wall of text :hihi:

I got inverse calibration EQ wrong, actually - it's not inverted. It's simply the calibration file data represented in FreeformEQ as-is, not a mirror image! Once I corrected that, I got the measured speaker response (minus two narrow room nulls) inside a 7dB window from 44Hz to 20KHz! Bearing in mind that without EQ that window was 25dB, that's quite an improvement! Plus there's potential for fine tuning yet.

The calibration file isn't terribly difficult to translate manually - it's very gently sloping if you visualise it, no crazy complex swings and peaks. So you can choose a handful of data points and represent the rest with curves in FreeformEQ. But still would be wonderful to be able to either import it directly, or have a tool to convert it to the .csv / x-y coords format that Melda uses..

One thing I didn't mention before is that in FreeformEQ it's great to be able to choose between Minimum Phase mode (no latency!) or linear phase, which adds a ton of latency but is slightly (though noticeably) more accurate, particularly in LF. Perfect for non-timing-critical things like mixdown or just listening to music - and just go to Minimum Phase for things like playing instruments or DJing etc.

Post

great idea, but i don't think my monitors could handle the correction needed for my hf hearing loss!
MeldaProduction wrote: Tue Sep 21, 2021 9:17 pm Hehe well, this gets sort of phylosophical I assume :D. One of my future plans is a plugin, that would let you analyze your own hearing system (so everything from the sound creation to your ears together) and then with some online exchange we would hopefully be able to approximate the median hearing of people better and create an EQ curve specifically for you, that would match this "average". We'll see how that will go.

Post

Here you go...

Here is a calibration file, converted into MeldaProduction format and Imported into MFreeformEqualizer (in drawing mode) and zoomed vertically a bit.

Image

Attached below is an Excel spreadsheet to do the conversion:
-- paste the calibration file figures into Columns B and C
-- copy Column H into a .csv file
-- Import that file into MFreeformEqualizer.
You do not have the required permissions to view the files attached to this post.
DarkStar, ... Interesting, if true
Inspired by ...

Post

DarkStar wrote: Wed Sep 22, 2021 4:01 pm Here you go...

Here is a calibration file, converted into MeldaProduction format and Imported into MFreeformEqualizer (in drawing mode) and zoomed vertically a bit.

Attached below is an Excel spreadsheet to do the conversion:
-- paste the calibration file figures into Columns B and C
-- copy Column H into a .csv file
-- Import that file into MFreeformEqualizer.
Wow, that works a treat I believe! Great job, thank you. Melda could effectively use what you've done in order to incorporate into the plug.

The only thing is what to set the 'range' in the plugin to. If the calibration files are written in straight dB values, then I think setting the range to the default of +24 seems to be setting the Y axis correctly based on the test data I have... but it would be important to leave it at 24 or it'll bork everything, something to keep in mind!

Post

As far as I know. the range in the plug-ins is always +/- 24 dB. All you can change is the visible portion
DarkStar, ... Interesting, if true
Inspired by ...

Post

vectorwarrior wrote: Wed Sep 22, 2021 4:33 pm
Wow, that works a treat I believe! Great job, thank you.
Yes, works great here too (using LibreOffice rather than Excel)

Many thanks to you, Darkstar, for working this out! :clap: :clap: :clap:

My manual attempt was reasonably accurate, but this gets it exactly right! Another incremental improvement!

Post

Oh, what a nice discussion. Trying to do this with a Sonarworks file... Getting near it, but so far I failed...
looks like this:

Code: Select all

20.0	0.02
20.5	0.03
20.9	0.03
21.4	0.04
21.9	0.05
22.4	0.07
23.0	0.08
23.5	0.09
24.1	0.10
24.6	0.11
25.2	0.13
25.8	0.14
26.4	0.15
27.0	0.17
27.6	0.18
28.3	0.19
28.9	0.20
29.6	0.22
30.3	0.23
31.0	0.24
31.7	0.25
32.5	0.27
33.2	0.28
34.0	0.29
34.8	0.31
35.6	0.32
36.5	0.33
37.3	0.34
38.2	0.36
39.1	0.37
40.0	0.38
40.9	0.39
41.9	0.41
42.9	0.42
43.9	0.43
44.9	0.44
45.9	0.46
47.0	0.47
48.1	0.48
49.2	0.50
50.4	0.51
51.6	0.52
52.8	0.53
54.0	0.55
55.3	0.56
56.6	0.57
57.9	0.58
59.2	0.60
60.6	0.61
62.0	0.62
63.5	0.63
65.0	0.64
66.5	0.64
68.0	0.65
69.6	0.65
71.3	0.65
72.9	0.64
74.6	0.64
76.4	0.63
78.2	0.63
80.0	0.62
81.9	0.61
83.8	0.61
85.7	0.60
87.7	0.60
89.8	0.59
91.9	0.59
94.0	0.58
96.2	0.58
98.5	0.57
100.8	0.57
103.1	0.57
105.5	0.56
108.0	0.56
110.5	0.55
113.1	0.55
115.8	0.54
118.5	0.54
121.2	0.53
124.1	0.53
127.0	0.52
129.9	0.52
133.0	0.51
136.1	0.51
139.3	0.50
142.5	0.50
145.8	0.49
149.3	0.49
152.7	0.48
156.3	0.48
160.0	0.48
163.7	0.47
167.5	0.47
171.5	0.47
175.5	0.46
179.6	0.46
183.8	0.45
188.1	0.45
192.4	0.44
196.9	0.44
201.5	0.43
206.3	0.42
211.1	0.42
216.0	0.42
221.1	0.41
226.2	0.41
231.5	0.41
236.9	0.41
242.5	0.40
248.1	0.40
253.9	0.40
259.9	0.40
265.9	0.40
272.2	0.39
278.5	0.39
285.0	0.39
291.7	0.38
298.5	0.38
305.5	0.38
312.6	0.38
319.9	0.38
327.4	0.39
335.1	0.39
342.9	0.39
350.9	0.40
359.1	0.40
367.5	0.40
376.1	0.39
384.9	0.39
393.9	0.38
403.1	0.37
412.5	0.36
422.1	0.34
432.0	0.33
442.1	0.33
452.4	0.32
463.0	0.31
473.8	0.31
484.9	0.31
496.2	0.32
507.8	0.32
519.7	0.32
531.8	0.32
544.3	0.32
557.0	0.32
570.0	0.31
583.3	0.30
597.0	0.29
610.9	0.28
625.2	0.28
639.8	0.27
654.8	0.26
670.1	0.26
685.7	0.25
701.7	0.25
718.1	0.25
734.9	0.24
752.1	0.24
769.7	0.23
787.7	0.22
806.1	0.21
824.9	0.20
844.2	0.18
863.9	0.16
884.1	0.14
904.8	0.13
925.9	0.11
947.6	0.09
969.7	0.06
992.4	0.04
1015.6	0.02
1039.3	-0.00
1063.6	-0.02
1088.5	-0.04
1113.9	-0.06
1139.9	-0.08
1166.6	-0.10
1193.8	-0.12
1221.8	-0.13
1250.3	-0.15
1279.5	-0.16
1309.4	-0.17
1340.0	-0.19
1371.4	-0.20
1403.4	-0.21
1436.2	-0.22
1469.8	-0.24
1504.1	-0.25
1539.3	-0.27
1575.3	-0.28
1612.1	-0.29
1649.7	-0.31
1688.3	-0.32
1727.8	-0.34
1768.1	-0.35
1809.5	-0.36
1851.8	-0.38
1895.0	-0.39
1939.3	-0.40
1984.7	-0.41
2031.0	-0.42
2078.5	-0.43
2127.1	-0.44
2176.8	-0.45
2227.7	-0.46
2279.7	-0.47
2333.0	-0.47
2387.6	-0.48
2443.4	-0.49
2500.5	-0.49
2558.9	-0.49
2618.7	-0.49
2679.9	-0.50
2742.5	-0.50
2806.6	-0.50
2872.2	-0.50
2939.4	-0.51
3008.1	-0.51
3078.4	-0.52
3150.3	-0.52
3223.9	-0.52
3299.3	-0.51
3376.4	-0.50
3455.3	-0.48
3536.1	-0.46
3618.7	-0.42
3703.3	-0.38
3789.8	-0.33
3878.4	-0.27
3969.1	-0.20
4061.8	-0.12
4156.8	-0.04
4253.9	0.04
4353.3	0.13
4455.1	0.23
4559.2	0.32
4665.8	0.42
4774.8	0.52
4886.4	0.63
5000.6	0.73
5117.5	0.83
5237.1	0.93
5359.5	1.03
5484.8	1.13
5612.9	1.23
5744.1	1.34
5878.4	1.45
6015.8	1.57
6156.4	1.69
6300.2	1.83
6447.5	1.97
6598.2	2.12
6752.4	2.28
6910.2	2.43
7071.7	2.59
7237.0	2.75
7406.1	2.91
7579.2	3.06
7756.4	3.22
7937.7	3.38
8123.2	3.55
8313.0	3.73
8507.3	3.92
8706.1	4.12
8909.6	4.33
9117.9	4.55
9331.0	4.78
9549.0	5.01
9772.2	5.24
10000.6	5.46
10234.3	5.67
10473.5	5.85
10718.3	6.00
10968.8	6.12
11225.2	6.20
11487.5	6.24
11756.0	6.25
12030.8	6.22
12312.0	6.16
12599.7	6.07
12894.2	5.96
13195.6	5.82
13504.0	5.67
13819.6	5.49
14142.6	5.30
14473.1	5.08
14811.4	4.85
15157.5	4.60
15511.8	4.33
15874.3	4.06
16245.3	3.77
16625.0	3.49
17013.6	3.22
17411.2	2.96
17818.2	2.72
18234.6	2.52
18660.8	2.34
19096.9	2.20
19543.2	2.09
20000.0	2.01
Convertation to H gives no values :-(... I'm using libre office as well...

Post Reply

Return to “MeldaProduction”