Playback Optimisation with Acourate

Übersichtsbild von Acourate

Table of Contents

Introduction

08/04/2024

My system/room was measured for the first time at the end of 2013. At that time I still had a purely analogue setup with the Stacked Quads and the RiPol. I split the frequency with the AFW1 at 125Hz. Of course I had a few ideas at that time about what could be improved, but overall I was satisfied.

This measurement changed everything!

It mercilessly showed me what was wrong and what compromises I had been listening to all those years.

This led to the development of the active absorber in the following years and the changeover to digital signal processing in 2021. Since then, I have been learning more and more, with some astonishing improvements in the playback quality in my listening room.

In addition to the possibility of implementing room acoustics measures, I was also inspired by the article

Dr. Ulrich Brüggemann – Thoughts About Crossovers

to follow this path. When you realise how inadequate analogue crossovers are and how much better digital FIR filters can do the job, then you simply have to draw the consequences. You can find the article in the Infocenter on the AudioVero homepage.

Digital signal reproduction also offers the option of time alignment in a multi-way system. A music signal that is split between the speakers and does not reach the ear at the same time is not reproduced correctly per se.

In the following I describe the way I currently use to measure my setup in order to determine the correction files. I hope that I can give other users of Acourate and the AcourateConvolver suggestions and a guide on how to approach optimisation.

A very good introduction to Acourate can be found in the manual “Quick introduction to Acourate”, which can be found in the info centre on the AudioVero homepage as a pdf file.

If you are not afraid to read instructions in English, then the following book is also a good choice:

Mitch Barnett – Accurate Sound Reproduction Using DSP

However, Mitch uses JRiver and there is no information about the AcourateConvolver. Nevertheless, a lot of technical and acoustic background is explained. You can get it as a book or as a Kindle eBook. Even though I don’t use JRiver myself, I found the book extremely informative.

The hardware and software components used determine the procedure for the Acourate optimisation of your own system, at least in some areas. Therefore, individual differences may occur.

The system is quite complex and therefore prone to errors. It requires knowledge of digital signal processing. But you also need to know how to administer computers and networks and how to set up an operating system. If things get stuck in one place and you don’t have the necessary knowledge, it can very quickly put an end to relaxed music listening via an optimised audio playback system. However, if everything works as intended, you get a reproduction with a quality that you never thought possible.

The effort is definitely worth it!

It’s best to find someone to mentor you. This makes it much easier to get started.

Description of the Components

08/04/2024

One of the most important software components that I use alongside the actual Acourate is the AcourateConvolver. In some places, this has a direct effect on how the calculated parameters and correction files are processed. But it also determines the topology of the hardware.

Hardware Used

At the centre of my audio signal processing sits a Lynx Aurora(n) studio converter. This converter has a modular design, so this statement needs to be specified in more detail: It is a “PRE 2016 DANTE”. This means that the converter is equipped with 16 analogue inputs and outputs and 4 microphone inputs on the analogue side. For digital signal transfer, it is equipped with a card for connection to a Dante network.

The AcourateConvolver runs on a PC with an Intel Core i7-13700K with 16GB RAM. I use a Windows Server 2022 Standard for 24 cores as the operating system. My experience has shown me that it is beneficial for the audio performance if the computer has as little to do as possible, hence the powerful CPU and the server operating system. The computer runs without a mouse, keyboard and monitor. It is administered remotely by me. The computer is equipped with 2 Ethernet interfaces. The first is connected to my private network and the second is used to connect to the Dante network. As the computer is located in an adjoining room, it can be actively cooled. This means that I am not limited to 65W types that can still be passively cooled when selecting the CPU.

The centre of the Dante network is a Cisco SG250-08 managed switch. I use the Dante network exclusively for the audio data transmission. The settings of the switch are optimised for the transfer of audio data in the Dante network. I use CAT6 cables.

In an active multi-way system described here, the volume should/must be controlled after the convolution (AcourateConvolver). For this reason, a corresponding multi-channel preamplifier is required. I use my VV7 preamplifier at this point. The power amplifiers are connected to the outputs of the preamplifier. These drive the individual loudspeaker components of my RQM system. There are currently seven channels.

There is a second PC in my setup. It is passively cooled and is located directly in the listening room. The processor used is an Intel Core i3-8100 with 16GB RAM. Windows 11 Pro is running on this computer. The computer is equipped with a mouse, keyboard and monitor. This computer also has 2 Ethernet interfaces (internal network & Dante). I use this computer for the Acourate measurements and the administration of the Convolver PC, the Lynx converter and the Dante network.

I used the very high-quality Earthworks M50 measurement microphone for all room acoustic measurements. My experience has shown me that you can certainly make your first attempts with an inexpensive microphone, but if you want to get the best out of your system, you shouldn’t skimp on the measurement chain.

Software Used

As I mentioned in the description above, I also use the AcourateConvolver in addition to Acourate.

To integrate the two PCs into the Dante network, the Dante Virtual Soundcard (DVS) runs on the computers. It establishes the connection between the audio software and the Ethernet interface / Dante network via an ASIO interface. My Roon server is also integrated into the Dante network in this way.

The Dante Controller software is also installed on the measurement PC. This is used for the complete administration of the Dante network and the associated components.

The Lynx NControl software can also be found on this computer. This can be used to configure the converter. The connection is made via the Dante network, so no further hardware is required.

Optimization of the RQM System

09/04/2024

In the following, I describe the procedure for calibrating my RQM system. However, it is not limited to my system and you can do most of it as described. In each case, I give a reference to things that are done specifically for my system.

At the time of writing this page I was using Acourate version 2.1.6 and AcourateConvolver version 2.0.7.

I operate the Dante network at 96kHz / 24Bit. This setting turned out to be the “sweet spot” for me with the Lynx converter. At higher frequencies I find the audio playback somewhat “strained”. I also carry out all measurements at this sample rate. The Lynx converter is the clock master in the Dante network.

I create a separate directory with the current date in the name for each measurement. This gives me a chronological history. I also make notes on the measurements and the results. I use DokuWiki for this, which I run on a Raspberry Pi 4B. So I can see what I have tried out on the system at any time.

At this point I have to anticipate a little. I operate my system with a filter length of 262144 taps. This is the largest possible number that can be set in Acourate. The recommendation for 96kHz is 131072 taps, but it simply sounds better to me this way.

Before the system can be optimized, the signal routing in the Dante network must first be defined. Without correct routing, the system will not be able to produce any sound. Of course, this also applies to all other digital solutions. However, a description is not part of this document.

I also assume that Acourate and AcourateConvolver are installed and licensed. This means that everything is ready to use from the software side.

The following description is chronological and should be carried out as such.

Creation of the Calibration File for the Microphone Used

09/04/2024

Every reputable manufacturer of a measurement microphone provides individual calibration data. This data is used to generate a correction file for the measurement with Acourate. It is integrated into the measurements in order to correct the microphone’s inaccuracies directly.

The challenge here is to recognize whether the data provided is the original measurement data or whether it has already been inverted by the manufacturer. However, I will explain a few lines below how you can recognize this with relative certainty. Of course, you can also ask the manufacturer about this.

With my Earthworks M50, the corresponding file comes as a text file. It contains one pair of measured values per line (frequency & amplitude) and can be read directly into Acourate. As an example, you can see the first 10 lines of this file below.

"Transfer Function Mag - dB volts/volts (0.10 oct)(eq)(eq:aux)"
      "Hz"      "Data"
     3.000,  -2.387989
    10.000,   1.387989
  765.4139,   1.387989
   818.201,   1.416025
  870.9882,   1.448313
  950.1689,   1.496563
  1002.956,   1.517841
  1082.137,   1.508638
...

It can be assumed that the amplitude of a microphone decreases towards the low frequencies. This can be taken as an indicator of whether the measurement data supplied has already been inverted. In my file you can see that the amplitude value at 3Hz (-2.38dB) is smaller than that at 10Hz (1.38dB). The data is therefore not inverted.

First, I created a separate folder for the calibration data. As I only use one measuring microphone, there are no subfolders here. I have stored the manufacturer’s calibration file here under a distinctive name.

After starting Acourate, this directory is selected as the working directory and the sampling frequency is set (here: sample rate 96000). The file can then be imported via

File -> Import Magnitude (Mic Calibration or Target Curve)

Once you have selected the corresponding file, a query for the “Pulse length selection” appears next. I of course selected 262144 at this point (see above). You are then asked whether you want a “minimum phase result”. This query is answered with “yes”. The data is then read in and displayed in Active Curve 1.

Acourate: Amplitude of my Earthworks M50

My curve has a minimum at 0.8dB and a maximum at 2.2dB. The average curve is 1.4dB. The deviations are not really dramatic and if necessary you could also measure without correction. But of course the result is more accurate with it.

In my case, I now have to calculate the inverse from the data. By calling

FD-Function -> Magnitude Inversion

you will get the following window

Acourate: Inverse Signal Computation

Here you select “minphase” and “Curve2”. The inverse is then calculated with “Calculate Inversion” and displayed in Active Curve 2.

Acourate: Amplitude & inverse amplitude of my M50

Finally, the inverse must be saved. This curve is used to linearize the measurement curve for all subsequent measurements. You must ensure that the Active Curve 2 window is active. With the menu item

File -> Save Mono WAV

the inverse is then saved. You must first decide on the format of this file (“desired resolution”). On a high-end system, the choice is naturally “64: double float (default)”. Finally, you can assign an individual name for the calibration file. In my case, the file is called “M50Invers96-262k.wav”. I can therefore take all the relevant information from the name.

If you have already received inverted data from the manufacturer, the inversion step is not necessary. After reading in the data, the curve is then saved with Active Curve 1 activated as described above.

Generation of the Crossover

09/04/2024

With a setup like mine, no measurements of the overall system can be carried out without a crossover running on the Acourate Convolver. Of course, the routing of the audio signals must have been performed successfully beforehand.

I have a separate folder with a number of subfolders for the crossover files. All possible experiments with the crossover are stored there. Again, I try to choose concise names. There is also a separate description for each calculation in my DokuWiki.

First, the folder for the crossover is defined as the working folder. The crossover is then created in Acourate with

Generate -> Crossover

All relevant parameters are specified in the window that opens.

Acourate: Creation of a Crossover

The parameters for my crossover have already been added. I use a 3-way crossover with crossover frequencies of 125Hz and 7.5kHz. I never use the delays at this point, a value of 0 is specified for all of them. I use UB jPol11 FIR filters with an order of 2 as the filter type. As described above, I let the crossover calculate with the maximum possible number of taps (262144). The crossover is created with linear phase (linphase). The big advantage of FIR filters over IIR filters. The “double precision” file format is already preselected. The files are generated with “Calculate XO” and saved in the current directory.

In my case, a total of 6 files were created:

  • XO1L96.dbl, XO1R96.dbl – to 125Hz
  • XO2L96.dbl, XO2R96.dbl – from 125Hz to 7,5kHz
  • XO3L96.dbl, XO3R96.dbl – as of 7,5kHz

Acourate designates the crossover files as XO*.dbl. The numbering starts with the bass. L and R naturally refer to the left and right channels. At this point in time, the respective files of the two channels are identical. The number 96 provides information about the underlying sampling frequency.

Acourate: Left Channel of my 3-way Crossover

The picture above shows the frequency responses of the 3 ways for the left channel (top) and how they add up perfectly to a Dirac pulse (bottom). The crossover points in the crossover frequencies are at -6dB, exactly as they should be.

Finally, the generated files must be converted for the convolver. To do this, call

Room -> Create CPV for AcourateConvolver

Select the first entry in the selection window that opens. This is usually XO1L*.dbl, everything else then runs automatically. In addition to the *.dbl files, the corresponding *.cpv files can then also be found in the directory.


Special calculation for the RQM system:

In my RQM system, two 57 Quad ESLs run in parallel per channel. In terms of hardware, each Quad is controlled individually. So that I can also use individual crossover files for each Quad, I create one with 2×4 XO files from the 3-way crossover.

I rename the XO3* files to XO4* and copy the XO2* files to XO3*. From Acourate ‘s point of view, this creates a 4-way crossover. However, at this point the XO2* and XO3* files are identical. My directory now contains the following files:

  • XO1L96.dbl, XO1R96.dbl – to 125Hz / RiPol Subwoofer
  • XO2L96.dbl, XO2R96.dbl – from 125Hz to 7,5kHz / upper Quads
  • XO3L96.dbl, XO3R96.dbl – from 125Hz to 7,5kHz / lower Quads
  • XO4L96.dbl, XO4R96.dbl – as of 7,5kHz / Mundorfs

Note: The fact that there are 2 identical frequency ranges per channel does not interfere with Acourate’ s final calculation of the correction files (see Macro 4).


Configuration of the AcourateConvolver

09/04/2024

In the AcourateConvolver you can select 9 configurations, each with 3 filter banks. The corresponding convolution files (*.cpv) are stored in directories on the computer. However, I deviate from the location that is set up during the installation of AcourateConvolver and store all my data in a directory called

c:\conf

For me, this is the easiest way. But there is also no reason not to use the AcourateConvolver standard.

In this directory there are subdirectories with the names “1” to “9”. They refer to the total of 9 possible configurations. For each subdirectory, there are further directories with the names “1” to “3”, which are assigned to the filter banks. This is created during installation and I have adopted it in my directory. However, you can also create your own structure without any problems.

I always use configuration 9 for measuring and have labeled it accordingly in the AcourateConvolver. In the directory

c:\conf\9\1

I now save the crossover files created above.

AcourateConvolver

The photo above shows the connection matrix as it is used in my system for measuring. The measurement signal from Acourate enters the convolver via Dante input channels 15 and 16. The audio channels for the speakers are routed to Dante outputs 1 to 7.

Here you can also see how to integrate a mono subwoofer. The signals from both bass channels (XO1*) are routed to output 1, but each with a level reduced by -6dB.

From this point on, the system is able to play reasonable sounds!

Position of the Measuring Microphone

09/04/2024

The measuring microphone

  1. should be reproducibly in the same position
  2. should be positioned exactly in the middle between the two loudspeakers

for all measurements. The best thing to do is to devise a system for always placing the microphone in the same position.

My listening room has a wooden ceiling. With the help of my friend Heiner, I measured my listening position precisely with a cross-line laser and attached a hook to the ceiling at this position. I hang a plumb line on this hook with a mark at the correct height. This allows me to position the microphone pretty much exactly at the right spot in the room.

Then use Acourate and the “Microphone Alignment” function.

LogSweep -> Microphone Alignment

This allows the microphone to be brought into the center position with millimeter precision. The accuracy increases with the measuring frequency.

Acourate: Microphone Alignment

If you have positioned the microphone exactly in the middle, a green 0 appears in the window. The procedure is self-explanatory. With my type of alignment (see above), I only have to move the microphone a few millimeters to the left or right.

Setting the Levels during Measurement

09/04/2024

The levels must be adjusted for a reasonable measurement. It shouldn’t be too “quiet”, but you shouldn’t overdrive either. For playback I use the volume setting on the preamplifier and for recording I use the gain factor of the microphone input on the Lynx converter.

The human ear has the greatest balance between frequencies at a sound pressure level between 80dB and 90dB. Mitch Barnett recommends an average measurement level of 83dB in his book. I have had good experiences with this and have calibrated my system to it when reproducing the measurement signals from Acourate. I use the inexpensive PeakTech 5055 sound level meter for this and set it to “C-weight / slow” for the measurement.

Since my system has very strong level fluctuations without optimization, I only carry out the measurement from 950Hz to 1050Hz with a duration of 60s. The sound level meter is held at the measuring position of the measuring microphone. I then set the volume control on my preamplifier so that I achieve approximately this level. There are also fluctuations in the narrow frequency range, I have to average “optically”.

Acourate: LogSweep Measurement

I measure with a level of 0dB in Acourate and -20dB at my preamplifier.

With the playback level found, I then run a measurement over the entire frequency range and use it to set the level of the microphone preamp. In Acourate, the maximum measured input level is displayed on a scroll bar. This should not exceed -6dB. A dB up or down is not so important, but I make sure that I stay below this limit. It may be necessary to carry out this measurement twice.

Bild LogSweep Pegel

My microphone preamp is set to a level of 36dB for the Earthworks M50.

If nothing changes in the system configuration and the levels can be set reproducibly, this measurement only needs to be carried out once. Then always use the determined configuration.

Setting the Speaker Level

09/04/2024

In a multi-way system, the speakers are connected to different power amplifiers. If they are not the same brand, it is very likely that the amplification factors will differ. In addition, the loudspeakers are also inherently different in volume.

It makes sense to match the levels of the speakers in the analog part of the system. In my system, this is particularly easy because I can apply a correction to each channel individually in the preamplifier. I make sure that my target curve is inserted as optimally as possible (see below). If you don’t take this step, Acourate has to take care of it. However, this can be at the expense of the digital “headroom” and there is a high probability of losing resolution.

I leave my Quads uncorrected, as they provide me with the basic level. However, I adjust the RiPol and the Mundorfs to the level of the Quads. One advantage of my solution in the VV7 is that I can not only attenuate but also amplify the individual levels. This means that the speakers can be corrected in both “directions”.

To determine the levels, start a measurement over the entire frequency range.

LogSweep -> LogSweep Recorder

This measurement does not have to be so precise. You can limit yourself to shorter measurement times. The result is then smoothed with macro 1. The output of the ICCC after the measurement can simply be acknowledged.

Room -> Macro 1

The parameters can be left at the default values.

Acourate: Room Macro 1

The following frequency response results for my system with the same output level at the preamplifier for all speakers.

Acourate: Uncorrected Levels of the Speakers in the RQM System

I took the picture above in macro 2 and also inserted my target curve (blue). This is the best way to see what I am writing about here. I will explain this further below. It is important at this point that the target curve is as high up as possible and that the actual signal does not fall below it at all.

I now made a volume correction of +5dB in the bass. The Mundorfs can remain at 0dB. After smoothing with macro 1 and calling up macro 2, I get the following results:

Acourate: Corrected Levels

After this setting, it may be necessary to adjust the measurement level again. However, this is not the case for me, as I only measured around 1kHz and did not change the level of the Quads.

Time Alignment

09/04/2024

One of the great advantages of a digital crossover is the ability to delay signals. This is used to correct the delay times of the individual speakers in a multi-way system so that they arrive at the listening position at the same time (time alignment). Acourate offers several options for determining the necessary delay times.

Acourate Wiki: Automated Compensation of time delay differences

The procedure described here shifts the individual files of the crossover to each other in a defined manner. The tweeter (XO4*) is taken as a reference and left in its original state. The woofer (XO1*) is shifted by -6000 samples, the upper Quads (XO2*) by -2000 samples and the lower Quads (XO3*) by -4000 samples.

A negative value for the rotation shifts the signal forward in time, meaning that it is played back earlier. In the evaluation, the largest impulse comes from the tweeter and the smallest from the subwoofer. It is therefore necessary to move the subwoofer as far forward as possible in order to be able to clearly determine the impulse. At a sampling frequency of 96kHz, there should be 2000 samples between the individual drivers in order to be able to separate the individual impulses from each other in time.

Copy the crossover files created above (XO*.dbl) into a new directory. This is selected as the active working directory in Acourate. All curves that are still displayed (Active Curve *) should be deleted.

TD Functions -> Rotation

To do this, load the crossover files into curves 1 to 4. As the crossover files for the left and right channels are identical, it is sufficient to load only the files for one channel. The corresponding curves are then shifted and saved as left and right files. The currently active curve is always moved using the “Signal Rotation” window.

Acourate: Rotate the Left Bass Channel

The newly created crossover files (*.dbl) must now be converted into *.cpv files.

Room -> Create CPV for AcourateConvolver

These are then transferred to the AcourateConvolver. I always use filter bank 2 in my measurement configuration for this. The files are therefore placed in the directory

c:\conf\9\2

Now select “Config 9” (Measure) and “Filterbank 2” in the AcourateConvolver. The matrix must then be configured and the setting saved. The Convolver is then started with this configuration.

Now it is time to carry out a first measurement in Acourate. The levels are set for this and the measurement microphone is in position and exactly centered (see above). With

LogSweep -> LogSweep Recorder

a measurement is started.

Acourate: LogSweep for Delay Time Measurement

After the measurement, the output for the Interchannel Cross Correlation (ICCC) appears. At this point, you can simply press “ok” and close the window. We are currently only interested in the time analysis of the measurement. For this reason, you can deactivate the two other measurement value outputs at the top of the Acourate screen apart from “Time”.

Acourate: Runtime Measurement

The largest impulse is the tweeter, the two smaller ones in front of it are the midrange (upper and lower Quads) and barely recognizable, the small waves in front of it are the bass. If we had perfect timing between the individual loudspeakers, the impulses of the midrange would be exactly 2000 and 4000 samples before those of the treble and the bass would be 6000 samples before them. The deviations from this are the times we are looking for.

I carried out the measurement with 262144 taps (Pulse Length). This results in a lead-in of 24000 samples (see LogSweep above). Acourate displays the largest pulse precisely at this point.

    \[ t = \frac{24000}{96000\mbox{Hz}} = 0.25\mbox{s} \]

Acourate: Runtime Measurement, Time zoomed

There is a clock icon below the time window at the center left. This opens the “Time Alignment Assistant”. However, there is a small peculiarity of my Acourate: you can only really open the Assistant once you have zoomed the signals in the Time window.

Acourate: Time Alignment Assistant

In “Test Delays for Time Alignment”, you enter the shifts made above – in this case 0, 2000, 4000 and 6000 samples. By clicking on “Left Peak” and “Right Peak”, the position (in samples) of the largest impulse in the “Left” and “Right” windows is adopted. As the complete signal is currently displayed, 24000 must appear on both sides.

The assistant is then exited with “Exit” and the measurement is zoomed so that only the pulse 2000 samples before the tweeter pulse can be seen. This corresponds to about 21ms, so the center of the displayed x-axis should be about 0.229s. There should not be a larger impulse at the edges of the display!

Acourate: Runtime Pulse at -2000 Samples

Now it’s back to the “Time Alignment Assistant”. Clicking on “Left Peak” and “Right Peak” again takes over the position of the currently largest displayed pulse. In my case it is 22013 in both channels. The deviation of 22000 samples is the desired time shift.

We now do the same for the two pulses around 0.208s (4000 samples).

We continue with the bass impulse. Here, too, the area must first be zoomed accordingly. However, the bass impulse is very small and therefore difficult to recognize. But we know that it must be around 0.187s, 6000 samples before the high frequency pulse. In order to be able to recognize the pulse reasonably well, I have set the y-axis from “Auto” to ±0.05.

Acourate: Runtime Bass Puls

Now go to the Assistant one last time. The impulse is transferred to the left and right windows as usual. Then it’s time for the evaluation, which Acourate thankfully takes care of. Finally, click on “Compute Delays” to obtain the results:

Acourate: Evaluation of Runtime Measurement

We can see that the bass needs to be delayed by 1.70ms. The upper Quads are not delayed. The lower Quads are only delayed slightly by 0.01ms. The tweeters, on the other hand, must be delayed by 0.15ms compared to the upper Quads. These values are entered in the transfer matrix of the AcourateConvolver (Config 9 / Filterbank 1).

AcourateConvolver with entered Delay Times

The values are consistent, the mono subwoofer is in the middle and therefore closest to my listening position. The tweeters are also somewhat closer to the listening position. Consequently, these channels have to be delayed.

However, I had problems interpreting the values, so I took paper and pencil and did the math.


Calculation of the time delays from the determined values.

The pulse of the upper Quads starts at 22013 samples, but should start at 22000 samples. The pulse of the lower Quads starts at 20014 samples, but should start at 20000 samples. All four Quads therefore start too late. The low frequency impulse starts at 17851 samples, but should start at 18000 samples. The bass signal therefore comes too early.

First, the shifts in the signals are subtracted from the results – manually (TD Functions → Rotation) and by Acourate (24000):

    \begin{eqnarray*} S_{HT} & = & 24000 - 24000 = 0\\ S_{QO} & = & 22013 - (24000 - 2000) = 13\\ S_{QU} & = & 20014 - (24000 - 4000) = 14\\ S_{TT} & = & 17851 - (24000 - 6000) = -149 \end{eqnarray*}

Positive values therefore mean a delayed and negative values mean a premature reaction.

To correct the timing of the RQM system, the low frequency signal must be delayed by 149 samples and the signals from the Quads must be transmitted 13 or 14 samples earlier. However, it is not possible to play a signal earlier, as the system would have to be able to look into the future. Nevertheless, digital signals can be delayed very easily.

The solution is to additionally delay all speakers by the largest positive value of the samples determined above, in this case 14:

    \begin{eqnarray*} S_{HT} & = & 0 - 14 = -14\\ S_{QO} & = & 13 - 14 = -1\\ S_{QU} & = & 14 - 14 = 0\\ S_{TT} & = & -149 - 14 = -163 \end{eqnarray*}

Now all time shifts are ≤0 samples. The signals therefore remain the same (0 samples) or must be delayed (<0 samples). This result can also be seen at the top of the “Time Alignment Assistant” window.


The biggest problem with this method is the very low bass impulse. In my case, detecting the maximum was still relatively easy. There are other speaker setups where this is impossible. Then you can use the method described in the Acourate Wiki (link – see above).

From this point onwards, we have a perfectly timed multi-way system!

Measuring the Speakers in the Room

10/04/2024

We are now ready to measure the speakers in the room. To do this, a new directory is created and set as the active working directory in Acourate. All curves in Acourate are deleted. The microphone is in its measurement position, the levels on the preamplifier and microphone amplifier are set.

To be on the safe side, first check once again that the microphone really is exactly in the centre.

LogSweep -> Microphone Alignment

This is done quickly and ensures safety. If the microphone is not in the exact position, the measurement results are not really useful.

On the AcourateConvolver, the time-corrected crossover is running with Config 9 (Measure) / Filterbank 1 with the delay times entered.

LogSweep -> LogSweep Recorder

You can remain in the room during the measurement, as you are also there while listening to the music. However, you should stand to one side. The triangle left loudspeaker – right loudspeaker – measuring microphone must be kept free.

Even in normal use, there is nothing between me and my speakers. According to Mitch Barnett, if you have a table or something similar standing there, for example, it makes sense to move it to the side. It obviously produces better results, even if the table is then put back in the same position. It’s definitely worth a try.

Acourate: LogSweep Measurement

The measurement for one channel runs for 90s in my case. That’s quite a long time, but it increases the resolution. I measure from 10Hz to 35kHz to get to the frequency limits of my speakers. For Lead-In / Pulse Length 24000 / 262144 is selected. The measurement is therefore carried out with the largest possible number of taps.

After the measurement, the window with the Interchannel Cross Correlation (ICCC) results appears. The values should be as high as possible, but should not be overestimated at this stage.

Acourate: Result of the Measurement

These measured values are now used to optimise the loudspeaker / room system. The measurements can be found in 2 files (Puls96L.dbl & Puls96R.dbl) in the current working directory. Acourate contains macros for further processing, which are processed below. These macros are extremely helpful and quickly lead to impressive results.

Room Macro 1 / Smoothing of the Amplitude Response

10/04/2024

The pulse responses of the measurement must be processed first. They contain a lot of information that is not required for creating the correction filters. Using this macro, the frequency response is smoothed and only the first incoming signals are included in the further calculation by using a time window (FDW – Frequency Dependent Windowing). By calling

Room -> Macro1

the following input mask opens.

Acourate: Room Macro 1

The file specified under “Room Pulse” points to the measurement file of the left channel when called. There is usually nothing to select here.

With the “Psychoacoustic Response” selection menu, you can choose between “Psychoacoustic” and “Sliding 1/12-octave analysis”. It is recommended to leave the default setting. I have never tried anything else at this point.

For “High Frequency Treatment”, a frequency 1 or 2kHz below the maximum measurement frequency used should be entered. From this frequency, the signal is then simply continued linearly during smoothing. The idea behind this is that the use of the filter technique during the measurement results in a sharp signal drop at the maximum measurement frequency. This is transformed by the inversion (see below) into a sharp rise, a behaviour that we cannot use. This signal behaviour is prevented by this function. I enter 33kHz at this point.

Selecting “Frequency Dependent Windowing” has a greater influence on the subsequent result. The two numbers are used to enter the length of the time window for averaging. The first value applies to 10Hz and the second to the highest cut-off frequency. Acourate then adjusts the windowing between these two values evenly over the frequency curve.

At the beginning of my experience with Acourate, I always entered 15/8 at this point on the recommendation of my friend Heiner. This makes the averaging less accurate towards higher frequencies. In the meantime, however, I leave it at the default values and use 15/15.

The last selection menu is “FDW Interpolation”, a newer function in Acourate. I can’t report any experience with it at the moment. I always leave it on “logarithmic”.

Once all the parameters have been entered as required, press the “Run Macro1” button. Acourate calculates the smoothing and then outputs the result.

Acourate: Smoothed Amplitude Response

You can do more with the result than with the actual pulse response above. At this point you can see the uncorrected frequency response of the speakers in the room very clearly.

Room Macro 2 / Target Curve

10/04/2024

This macro takes you to the crucial step of determining your own target curve. This curve is used to define the desired target frequency response of the system. There are many ways to determine this curve and you will want to try out a few things at first, at least that was the case for me. There is no such thing as an ideal target curve. It depends on the room, the speakers and your personal taste.

The companies Harman International and Brüel & Kjær have carried out research into an optimum target curve. You can quickly find the curves online if you search for them.

The recommendation for an initial curve is to start with a linear frequency response up to 1kHz (inflection point) and then drop the curve to -6dB at 20kHz.

This sounds very strange to a beginner, we audiophiles want to transmit our signals as uninfluenced as possible. My recommendation is to simply try it out, i.e. to select a target curve that simply runs linearly from the bass to the treble. That’s what I did, of course! After listening to a few notes of music with the resulting correction files, I quickly went back to the recommended curves. Believe me, nobody wants to listen to music like that.

My target curve is linear up to 1kHz and then drops to -3dB at 20kHz. With highly directional loudspeakers it makes sense to attenuate the high frequencies less. There is also a bass boost (low shelf) of +1dB from 150Hz downwards. In addition, there is a low-pass filter at 30kHz. On the screenshot below you can see the course of my curve. I’ve been listening to it unchanged for more than a year now.

On the recommendation of Dr. Ulrich Brüggemann, you should not create a subsonic filter at this point. This is only done in Macro 4 (see below).

Acourate: My Target Curve

With the calling of

Room -> Macro2

it takes you to the Target Designer. Here you can create your own target curve using the graphical markers. A description of the functions and operation can be found in the Acourate Wiki.

I myself use the “Target.tgt” file. It is a text file that can be edited with any normal editor. If the text file exists from a previous optimisation, it can be loaded using the “*.tgt” button. It is generated by the Target Designer. As my target curve is defined, I only need to determine the base level of the curve in relation to the current measurements.

In the next section I show the relevant excerpts from my file. The upper values up to the “…” describe the recommended starting curve (see above) but with a -3dB cut at 20kHz. Below that you can see the low-pass filter and the low shelf. I am currently only adjusting the value for “0basicgain”.

[TargetDesign]
Targetsamplerate=96000
0basicf0=10
0basicgain=4
1basicf0=1000
1basicgain=0
2basicf0=20000
2basicgain=-3
...
0lowpassf0=30000
0lowpassgain=-3
0lowpassactive=1
...
0lowshelff0=150
0lowshelfgain=1
0lowshelfactive=1

The “IIR Manager” button has recently been added to Macro 2. In the window that opens, you can easily make the entries that I described in the previous paragraph. The diversions via a text editor is no longer necessary.

Acourate: Target Designer

The picture above shows the position of my target curve (blue) in relation to the smoothed measurement results. The curve is shifted as high as possible without getting too many measured values below it. Only the measured values above the target curve are corrected. I accept a slight undercut at one point or another in favour of the digital headroom.

Once you are satisfied with the result, create the Target.dbl curve required for the calculations by pressing the “Save Target” button.

Acourate: Target Curve

The target curve is displayed in Active Curve 3 after the calculations in the Target Designer.

Room Macro 3 / Inverting

14/04/2024

Before calculating the actual correction files, the smoothed measured values must be mirrored on the generated target curve. This is done by calling

Room -> Macro3

Basically, there is nothing to enter in the window that opens. The inverse curves are generated by pressing the “Run Macro3” button. The window closes automatically.

Acourate: Inverting

The smoothed measurement curves mirrored on the target curve are shown in Active Curve 4 and 5.

Acourate: Inverted Smoothed Measurement Curves

The frequency response of the inverses now also shows the effects of the “High Frequency Treatment” parameter from Macro1. From 33kHz, the original curves are no longer mirrored on the target curve; the signal is continued linearly. Otherwise there would be a steep rise in the inverse in the upper frequency range, the original curves drop sharply here.

Room Macro 4 / Generation of Correction Files

14/04/2024

Before you start calculating the correction files, you must ensure that the crossover files created above (XO*.dbl) are in the current working directory. This completes all the preparations. With

Room -> Macro4

opens the window for creating the correction files.

Acourate: Macro 4 / Filter Generation

The output “Crossover Detection: 4-way system” at the top right of the window indicates that the crossover files have been recognized. The information naturally refers to my RQM system.

Acourate: Macro 4 / Filter Generation

When entering the “Excessphase Window”, you should start with the default values for the first time. I have been using the values 6/6/6/6 for some time now. These parameters are similar to those in macro 1, but here you enter values for each channel individually. The first number is again for the lowest frequency, the second for the highest cut-off frequency.

I also select the “Subsonic” filter and enter a cut-off frequency of 25Hz. I calculate the correction files with “Double length”. I leave all other parameters at their default values.

The correction curves are calculated with “Run Macro4” and then convolved with the crossover files. After the calculation, you will have the following files in the working directory:

  • Cor1L96.dbl, Cor1R96.dbl – to 125Hz / RiPol Subwoofer
  • Cor2L96.dbl, Cor2R96.dbl – from 125Hz to 7.5kHz / upper Quads
  • Cor3L96.dbl, Cor3R96.dbl – from 125Hz to 7.5kHz / lower Quads
  • Cor4L96.dbl, Cor4R96.dbl – from 7.5kHz / Mundorfs

We have now created the first correction files for the loudspeaker system and could transfer them to the AcourateConvolver after the corresponding conversion. However, you should first take a look at the result.

Room Macro 5 / Test Convolution

14/04/2024

On the AudioVero homepage in the Infocenter under Instructions and Tutorials you can find the document:

Pre-ringing compensation (supplement)

It explains exactly what I will briefly describe below.

By calling

Room -> Macro5

a test calculation is carried out. The measured signals are calculated with the correction filters created. Without having to measure the corrected system, the behavior of the speakers with correction is obtained in this way. If you then check the system out of pure curiosity, you will be amazed at how congruent the two results are.

Acourate: Result of the Calculations from Macro 5

In the bottom window (Time / Step), you can see the oscillation before the actual step responses. You can try to reduce these with smaller values in the “Excessphase Window” (Macro 4) or even eliminate them completely, but you will pay for this with a lower phase correction. Nevertheless, this may be the right approach for your own system.

For me, on the other hand, the compensation of the pre-ringing has proven to be the right approach.

In the middle window (Phase / Group Delay), only the two input signals vecinL and vecinR are activated. You can recognize a peak (bell curve) at approx. 80Hz for both signals. The respective number of peaks in the right and left channels are counted, in my case it is one each. The very large peak at the right edge >30kHz is not taken into account.

This result (1/1) is used to return to macro 4.

Room Macro 4 / Second Call

14/04/2024

In the window of macro 4, the values just determined for the left and right channels are entered at “Pre-ringing comp”. At this point it is a 1 in each case.

Acourate: Macro 4 / Filter Generation

In addition, I now select all frequencies relevant for my converter under Filter samplerate. For my Lynx Aurora(n) these are 44…192kHz. I also enter the desired format of the correction files under Add. output format. For use with the AcourateConvolver, these are AcourateConvolver CPV files. The correction files can then be created with Run Macro4.

The cpv files generated in this way should now be transferred to the Convolver PC.

The result of the compensation can be viewed by calling macro 5 again. I will spare myself the presentation of the result at this point. I can report, however, that the ringing has disappeared in my constellation.

Once you have reached this point, you can run your multi-way system with room correction. At this point, you should stop and live with the result for a while.

Room Macro 6 / Inter Channel Phase Alignment

30/04/2024

To describe this feature of Acourate (from Ver. 2.0.0) I would like to use a small excerpt from the documentation:

In room correction, each stereo channel is usually measured and amplitude and phase corrected separately. It has been shown that an additional improvement is possible if both channels are then considered together and optimized with regard to mutual interactions. This applies in particular to the modal frequency range up to 350Hz.

The cause is:

Asymmetry

Acourate V2 now offers an additional option to improve the listening result with suitable filters. These filters only influence the phase response over the frequency band, but not the amplitude frequency response. This means that the amplifiers do not have to provide more or less power. The indirect sound component also remains unchanged.

This optimization is carried out after the first call of macro 4.

Once the correction filters have been calculated, the next step is to create symmetry between the two channels. Corrections are only made to the phase of the signals. In Acourate, this calculation is called Inter Channel Phase Alignment (ICPA) and is calculated with Macro 6. A short excerpt of the description by Dr. Ulrich Brüggemann can be found here. In addition, every user of version 2 has the document “ICPA – The optimization of unbalanced stereo setups” as a pdf file on the computer with Acourate.

Macro 4 and Macro 6 are used alternately for optimization, starting with Macro 4 without the additional frequency calculations and *.cpv generation (see: Room Macro 4 / Generation of Correction Files). You can see in the picture above that “ICPA” is grayed out the first time it is called. Acourate has not yet calculated the phase compensation filters.

After the first execution of macro 4, macro 6 can be called. For the RQM system you get

Acourate: First Call of Macro 6 of the RQM System

The peaks below Q=10 (orange line) are compensated in their own channel. For the RQM system, these are the two peaks at approx. 81Hz. All peaks above Q=10, but below Q=60 (the purple line), are reproduced in the other channel. Here it is the peaks at 148Hz and 152Hz. All peaks greater than Q=60 remain uncorrected.

I have gotten into the habit of compensating for a peak and then running Macro 4 again. After calling up macro 6 again, you can then see directly how well the peak has been compensated or reproduced. Then I move on to the next peak …

To determine this, it is best to first zoom in on the peak to be processed and then place the marker on the peak. Do not forget to select the correct channel under “Source”. Use “1. Get Marked Frequency” to transfer the values to “f0 [Hz]” and “Q”. These values can then be changed using the arrow buttons. Click on “2. Demo Edited Values” to display the modified curve. If you are satisfied with the result, click on “3. Simulate + Optimize”. You can then see how the setting affects the phase. If you are satisfied with the correction, click on “4. Save Result” to save it. The setting appears in one of the two upper windows. If the results are marked with “/ macro4”, they have already been calculated with this macro. Macro 6 is exited by clicking on “Exit”, but the corrections determined up to that point are not lost.

Acourate: Macro 6 with Corrected Peaks

The picture above was taken after determining all 4 peaks relevant for the RQM system. The compensation at 81Hz works perfectly, the reproductions at approx. 150Hz quite reasonably.

Finally, macro 4 is called again. This time, however, the additional frequencies and the *.cpv files are generated (see: Room Macro 4 / Second Call).

Acourate sets the checkmark in front of “ICPA” if it finds corresponding results in the current working directory. This means that the ICPA results are included in the correction files. If you do not want this, you can also remove the tick in front of “ICPA”.

Measurement of the Reverberation Time

28/04/2024

As I wrote in the introduction, the first measurement in my room led to the development of the active absorber. This measurement showed that my room has too long a reverberation time below approx. 70Hz. This means that reflections in the room are absorbed too slowly. In a domestic listening room, these problems only occur in the bass range below the Schröder frequency (approx. 300Hz). The absorber removes excess energy from the room in a defined way.

If you have a LogSweep measurement available (see Measuring the Speakers in the Room), you can determine the reverberation time of the room directly from this. By selecting

TD-Functions -> RT60: Reverberation Time

you can access the evaluation. At the top right, you must first enter the standard for which the evaluation is to be calculated. For audio playback, this is “DIN 18041 Music”. Below this, enter the size of your room. My room is classically rectangular, so I have no problems with the input. Ultimately, however, it all comes down to the room volume and so you can also enter values that don’t quite correspond to reality but lead to the correct volume. I have already practiced this successfully with various non-rectangular rooms.

Acourate: Measurement of the Reverberation Time

The measurement above shows the reverberation time in my listening room with the absorber switched off. The shaded lines show the range in which the reverberation time should be for the standard and the volume entered. I don’t find downward deviations disturbing, as they make the reproduction even drier. Deviations upwards are clearly perceptible as booming.

As you can see, there is a problem below approx. 70Hz. It may not look very serious, but the trained ear will immediately hear the blurred and imprecise bass information. Once you have become familiar with a correct reverberation time, there is no way you can live with this result!

I use this measurement to optimize the settings of the active absorber for my room. Over the years, we have developed a set procedure for this, but fine-tuning involves varying the parameters and then measuring the effect. It’s a little time-consuming, but the result justifies the time invested.

Acourate: Measurement of the Reverberation Time

The measurement above shows the situation with active absorber and optimized parameters.

This is how it should be!

Unfortunately, it is impossible to describe verbally what the curve above really means. You have to hear it and then understand what you are hearing.

To make it very clear once again at this point:
The reverberation time is purely a function of the room! It cannot be improved by Acourate or similar tools. The most effective way to reduce excessive reverberation time is to use an absorber. This does not always have to be an active (electronic) solution. If you like working with wood and would like to work on this topic, you should take a look online under the keyword Helmholtz Resonator.

Interchannel Cross Correlation

29/04/2024

After each measurement or when calling

TD-Functions -> ICCC: Interchannel Cross Correlation

the values for ICCC are displayed.

Acourate: ICCC before Optimization

For the sake of simplicity, I have borrowed the following text passages from the Acourate Wiki.

In this evaluation, the signals of the left and right channels are compared with each other within different time windows. This allows conclusions to be drawn about the quality of the stereo image. These are influenced by the speakers themselves (pair matching) as well as by the acoustics of the room. Both the positioning of the speakers and acoustic measures can be optimized by comparing the ICCC.

ICCC10:
The incoming sound in the first 10ms should preferably reach a value above 80% for good stereo imaging. Speakers with a high degree of directivity achieve high values here due to their design.

ICCC20:
The incoming sound in the first 20ms consists of direct sound and the first incoming diffuse sound. For stereo imaging, early reflections in the first 20ms should be avoided. If these arrive differently from the left and right channels, the ICCC value is reduced. If these are recognized and eliminated by suitable acoustic measures, the ICCC values increase.

ICCC80:
The sound in the first 80ms contains much more spatial information than the previous two values.

ICCClate:
Compares the reverberation produced by the two channels.

It should also be noted that the channels for ICCClate should not be correlated and so the value should be as small as possible. The ICCC overall cross correlation is in the range of 65…75% for most good audio systems.

At the moment, I haven’t carried out any other structural room acoustics improvements in the room. It is practically impossible to rearrange the furniture or speakers in the room. So I have to live with the circumstances. However, I have been planning to use diffusors on the wall behind the loudspeakers for a long time …

Acourate: ICCC after Optimization

Above you can see my result after optimization with Acourate. The first three values have improved slightly. There has been a drastic change for the better with ICCClate. The ICCC overall cross correlation improved from 66.8% to 67.4%. So there is still plenty to do!

However, you should not be overly influenced by the figures. They show you whether there is room for improvement in the structure of your own system (keywords: channel equality, initial reflections). Ultimately, however, everyone decides for themselves whether they are satisfied with the playback quality achieved.