You are on page 1of 16

A Brief Guide to Creating

Custom Target Curves with Dirac Live

(Rev 2.1 May 6, 2016)

Page 1 of 16
Here are some notes on creating custom filters that I have picked up from AVS Forum
contributors like @markus767 and @Gooddoc. Before getting started I encourage
everyone to read a white paper authored by Sean Olive, Todd Welti, and Elisabeth
McMullin titled “Listener Preferences for In-Room Loudspeaker and Headphone
Target Responses”, dated October 2013, available for downloading here. (My thanks to
Markus767 for pointing this article out.)

Look at the “Avg. Spectrum (before)” graphs in Dirac. Examine the lower end (left side) of
each response curve and note where the response falls below the target (by target, I mean
the Auto Target to start with). This will be in the neighbourhood of 50Hz for a typical
speaker, perhaps higher for a small surround, and perhaps lower for a large tower. This
value will be the lower limit for correction. Now go one octave higher, to 100Hz, for
example. This will be the recommended crossover. Why? Because you will want to correct
one full octave below the crossover, and since the lower limit is 50Hz, this suggests a
100Hz crossover.

Now take a look at the frequency response characteristics of each speaker group.
Typically, several of the speaker groups will have very similar response curves (same low
end cut-off, same high frequency roll-off). Consider grouping similar speakers together in a
larger speaker group (e.g. you might want to combine the surrounds with the surround
backs, or combine the Left/right group with the center speaker). Why group speakers?
Because applying the same correction to similar speakers results in a more seamless
overall response.

The custom target curve will typically look like a ski jump. There will be a “hill” on the left.
Then there will be a downward slope, and at the bottom of the slope, the ski jump will level
off. The “hill” starts at a level of 0dB and remains flat at 0dB until the one-octave-below-
crossover point (50Hz in this example), and then gradually slope downwards through the
crossover point until it reaches the one-octave-above-crossover point (200Hz in our
example), end then level off and remain flat to the upper correction limit (normally
somewhere between 18Khz and 20Khz). Why start at 0dB? Because we want to avoid
boost when creating filters.

How low is the flat portion above the one-octave-above-crossover point? Look at the far
right end of the frequency response curve (the high end). Normally, the HF response will
be down 6-8dB from the response in the mid-range. The flat portion of the target curve
should be the low point of the HF roll-off, say -8dB. This allows you to apply correction
throughout the mid-to-high frequency range without applying boost.

Now that you have a nice ski-jump shaped target curve for one speaker group, apply the
exact same shape to the other speaker groups in the range of one octave below and one
octave above the crossover point. This will ensure a pleasant, seamless response across
all speaker groups. Applying the same curve to the sub channel is especially important.
And finally, depending on each speaker group’s response characteristics, consider
establishing a lower and an upper limit for the correction. This is done by dragging the
“curtain” to the appropriate cut-off frequency.

Next step is to optimize the filters, load them into a slot, and give it a test listen!

Note: Since the top of the “ski slope” curve is at 0dB, and (in our example) the flat lower
portion of the curve is at -8dB, this results in an 8dB bass boost. For many, this is the
perfect boost, and it really will result in strong bass. If you find the bass overwhelming,

Page 2 of 16
consider raising the “flat” part of the target curve to a higher value. A -5dB level will result
in a 5dB bass boost, for example. Experiment to find the bass level that matches your
taste.

Note 2: The “ski-jump” target curve will result in speaker levels lower than you might be
used to, i.e. lower than 75dB. This is perfectly normal. Compensate by raising the master
volume on the AVR, as opposed to raising individual channel trims, which has a bad effect
on the signal-to-noise ratio.

Note 3: Creating the custom target curve by adding breakpoints and dragging them around
using the mouse in the DLCT GUI is OK, but saving the target files to an external text file
and using a text editor to create the desired changes is a much easier and more accurate
approach.
And here is an example of the “ski jump” for the left/right speaker pair:

Creating Dirac Custom targets by Editing Target text Files


An AVS Forum member sent me a link to his Dirac Project file, and asked me how to
create a house curve that increased the level of the bass frequencies (not an unusual
request).

In the original project, there are three speaker groups, left+center+right,


surrounds+surround backs, and the subwoofer channel. After loading the project into
DLCT, proceed to the Filter Design page. For each of the three speaker groups, click
“Save Target”, and give each file a descriptive name, e.g.

- left+center+right original.txt
- surrounds+surround backs original.txt
- Sub original.txt

Note that the file names contain the word “original”, which clearly marks the beginning

Page 3 of 16
targets, should we need to back out any changes we are going to make. The target text
files are stored in the following directory:
C:\Users\<User-Name>\AppData\Roaming\Dirac\OEM\MiniDSP\nanoAVR\Targets.

Page 4 of 16
Tip: Create a shortcut to the targets directory and place it on your desktop—it will make
getting to the targets much easier.

Tip 2: You don't need to be connected to the 88A to load a project and edit the targets.
When you launch DLCT disconnected from the 88A and without a microphone plugged in,
you will receive first a warning that no mic or 88A has been detected, and then a warning
that the system configuration has changed. Dismissing the first warning and clicking
"Cancel" on the second warning allows you to proceed to the filter design screen. You can
save your changes, but to load the new targets to the 88A, you will need to connect to it, of
course.

Now go to the directory where the target text files are saved. Open one of the files, say the
left+center+right original.txt file. It looks like this:

# Generated by Dirac Live Calibration Tool V1.1.0 (Build 6937)


BREAKPOINTS
30 0
50 0
70 -0.8
100 -2.4
140 -4.9
200 -6.8
300 -7.8
400 -8
700 -8
16000 -8
HPSLOPEON
0
LPSLOPEON
0
HPCUTOFF
10
LPCUTOFF
20000
HPORDER
2
LPORDER
2
LOWLIMITHZ
17.9993
HIGHLIMITHZ
21000

The other two target text files look similar. The worksheet below shows the values in the
three “original” target text files. One very important point to note is that the target values for
the first two groups are identical for one octave above the crossover, and the sub target
values are the same for one octave below the crossover.

Page 5 of 16
This exercise will demonstrate how to add an additional 4dB bass boost to the original
Dirac Project file. Here are the baseline files:

Page 6 of 16
To add 4dB to the bass, we will lower the flat portion of all the speakers except the sub
from -8dB to -12dB. The new target values will look like this:

Page 7 of 16
Now, open each of the three “original” target Text files, plug in the new target values, and
save the files with a new file name, e.g. left+center+right +4dB.txt. Here is what the
updated target text file looks like:

BREAKPOINTS
30 0
50 0
70 -1.05
100 -3.6
140 -7.35
200 -10.2
300 -11.7
400 -12
700 -12
16000 -12
HPSLOPEON
0
LPSLOPEON
0
HPCUTOFF
10
LPCUTOFF
20000
HPORDER
2
LPORDER
2

Page 8 of 16
LOWLIMITHZ
17.9993
HIGHLIMITHZ
21000

Finally, go back to the Dirac project file loaded in the DLCT, and for each of the three
speaker groups, click “Load Target”, and you will see the target curve immediately change
to reflect your new target values. Here is the new LCR target curve:

Now click “Optimize”, and the new Avg. Spectrum (after) curve reflects your new targets.

Page 9 of 16
To finish up, make sure you save the updated project, then drag it to an available memory
slot, turn Dirac on, and make sure you maximize output level before exiting DLCT.
Note: Because we have lowered the targets by 4dB, the overall output level of your
speakers will be 4dB lower (relative to the sub), so you will need to adjust the AVR master
volume to compensate.

Page 10 of 16
Undocumented Target File Features
When the target files are exported, you will notice several settings for which there is no
documentation in the MiniDSP 88A User Guide, nor on the Dirac Research web site (at
least none has been found so far). These settings are:

Setting Definition
HPSLOPEON High Pass Filter
(0=Off, 1=On)
LPSLOPEON Low Pass Filter
(0=Off, 1=On)
HPCUTOFF Cut-off value for High Pass Filter
<value in Hz>
LPCUTOFF Cut-off value for Low Pass Filter
<value in Hz>
HPORDER Filter slope (e.g. 6dB/octave, 12dB/octave, etc.)
<2,4,8>
LPORDER Filter slope (e.g. 6dB/octave, 12dB/octave, etc.)
<2,4,8>
LOWLIMITHZ Lower limit to apply correction (left “curtain”)
<value in Hz>
HIGHLIMITHZ High limit to apply correction (right “curtain”)
<value in Hz>

The best way to understand the effect these settings have is to run a set of experiments.
Low Pass Filter Experiments

Start by looking at the typical Left/Right target curve with no Low Pass Filter:

Page 11 of 16
Now change LPSLOPEON to 1, LPCUTOFF to 18000, and LPORDER to 4.

Note the resulting roll-off of the high frequencies. Now change LPCUTOFF to 15000.

Note that the lower LPCUTOFF value means that the high frequency roll-off starts earlier.

Page 12 of 16
Now change LPORDER to 8.

The high frequency roll-off starts in the same place, but the roll-off is steeper. Now change
LPORDER to 2.

Now the roll-off slope is more gradual.

Page 13 of 16
High Pass Filter

Start with HPSLOPEON set to zero, i.e. no Low Pass Filter:

Now change HPSLOPEON to 1, HPCUTOFF to 25, and HPORDER to 4.

Note the gradual roll-off in the low end.

Page 14 of 16
Now change HPCUTOFF to 50.

The low frequency roll-off starts earlier. Now change HPORDER to 8.

The low frequency roll-off is much more aggressive.

Page 15 of 16
Now change HPORDER to 2.

The low frequency roll-off is shallower now.

The point of this section is to illustrate the powerful capabilities of the undocumented
features in the target text file. This section is a “how to” section, not a “why to” section.
For a better understanding of when to apply low and high pass filters, you will need to do
some research with audio theorists, or experiment on your own, relying on listening for the
changes, or measuring the changes with a tool like REW. Good luck!

Note: In order to experiment with the low and high pass filters, make changes to the filter
text file. Before loading the updated text file, make a change to the current filter in
DLCT, e.g. drag a break point to a slightly different location. Now load the updated target
text file, and the break point will snap back to its original position. Then click the Optimize
button to see the results of the change. Why is the tweak to the break point necessary?
DLCT will not re-optimize the filters unless it perceives a change has been made.
Evidently, changing one of the undocumented features will not set the “changed” flag, and
DLCT will not re-optimize. Tweaking the break point sets the “changed” flag, and now
Optimize will work as expected.

Corrections or suggestions regarding this document should be directed to @AustinJerry at


AVS Forums.

Page 16 of 16

You might also like