• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Audyssey Manual Calibration “OCA’s REW + Audyssey Awesomeness”

hello. I have two subs managed by minidsp and one output from the 4800. Before I couldn't get a correct delay and yet the script left it aside and it sounds fantastic. I could use the umik, Oca has a video on how to do it, but believe me with the Denon mic the sound is very good.
 
Excuse my beginner questions
Can i use the .ady file of measurements from the MultiEQ app on my android phone?
How long does it take to generate filters?
 
Excuse my beginner questions
Can i use the .ady file of measurements from the MultiEQ app on my android phone?
How long does it take to generate filters?
Yep that's exactly what you use. I send from phone to google drive to get it on to my computer. The whole process will take less than 5 mins.
 
OCA created an even more automated approach explained in this video
.

@OCA, what I noticed is that you don't allow any boost anymore up to 200Hz. In a previous video you were using a max of 5dB if I remember correctly. Why is that?

While I do agree with your insight that the room should not be corrected above a certain frequency, I think the speaker response should be corrected. As my speakers are on spinorama.org, I entered the EQs found there in REW and multiplied them with the antiHF curve. E.g. for my bookshelf speaker I use as a surround the resulting curve is:
View attachment 358949
I changed the generateFilters() function to wait to allow me to load the set of filters in REW, and after the steps that were already there, I did a merge from the spinorama filter to the one generated by the code. It sounds good to me, but what do you think of this idea?

JavaScript:
  async function generateFilters() {
    console.info(`Crafting custom room correction filters...`);
    delay *= 2;
    const measurements = await fetch_mREW();
    let indexTC = dChannels + 1;
    await postNext('Minimum phase version', indexTC, {
      "include cal": false,
      "append lf tail": false,
      "append hf tail": false,
      "frequency warping": false,
      "replicate data": false
    });
    await postDelete(indexTC);
    await fetch_mREW(indexTC,'PUT', {title: "Dr Toole target curve"});
    await new Promise(resolve => setTimeout(resolve, delay * 1.15));

    const result1 = await swal.fire({
      confirmButtonColor: "#6fa3e7",
      text: "Import the speaker targets",
      input: 'text',
      showCancelButton: true
    });

    for (let i = 1; i <= dChannels; i++)
    {
      await postNext('Minimum phase version', i, {
        "include cal": false,
        "append lf tail": false,
        "append hf tail": false,
        "frequency warping": false,
        "replicate data": false
      });
      ii = 2* dChannels + i * 2;
     
      await postNext('Arithmetic', [ii, indexTC], {
        function: "A / B",
        regularisation: "0",
        lowerLimit: "0",
        upperLimit: "0"});
      await postNext('Arithmetic', [ii + 1, ii + 1], {
        function: "1 / A",
        maxGain: "0",
        lowerLimit: "0",
        upperLimit: "200",
        autoTarget: "0",
        excludeNotches: false});
      await postNext('Arithmetic', [dChannels + 1 + i, ii + 2], {
        function: "Merge B to A",
        mergeFrequency: "300",
        mergeBlend: true});
      await postNext('Minimum phase version', ii + 3, {
        "include cal": false,
        "append lf tail": false,
        "append hf tail": false,
        "frequency warping": false,
        "replicate data": false
      });
      await postNext('Arithmetic', [i, ii + 4], {function: "A * B"});
      const finTitle = measurements[i].title.replace("o","final");
      await fetch_mREW(ii + 5, 'PUT', {title: finTitle});
      const filtTitle = measurements[i].title.replace("o","");
      await fetch_mREW(ii + 4, 'PUT', {title: filtTitle});
      console.log(`Optimal filter generation for speaker ${filtTitle} is completed.`);


      await postDelete(ii);
      await new Promise(resolve => setTimeout(resolve, delay * 1.15));
      await postDelete(ii);
      await new Promise(resolve => setTimeout(resolve, delay * 1.15));
      await postDelete(ii);
      await new Promise(resolve => setTimeout(resolve, delay * 1.15));
      await postDelete(ii);
      await new Promise(resolve => setTimeout(resolve, delay * 1.15));


    }

    for (let xxx = 0; xxx < dChannels; xxx++) {
      await postDelete(dChannels + 2);
      await new Promise(resolve => setTimeout(resolve, delay * 1.15));
    }

    console.log(`Done!`);
    console.info(`************************************************************************************************************************`);
  }
Waouh, great! thanks @OCA !! I will try this and compare to the former methodology you proposed for Atmos system for Mac users!!

On your video, when you are showing the results, I have noticed that the filters you are presenting are till 300Hz. I am not sure I have understood: you do not modify anything above 300Hz or you are doing correction but not using filters?
 
Waouh, great! thanks @OCA !! I will try this and compare to the former methodology you proposed for Atmos system for Mac users!!

On your video, when you are showing the results, I have noticed that the filters you are presenting are till 300Hz. I am not sure I have understood: you do not modify anything above 300Hz or you are doing correction but not using filters?
Actually not even 300Hz, filters end at 200Hz but takes an additional 100Hz to send everything intact to Audyssey, you will wonder why until you hear the One ;)
 
I watched some of the video (mostly looking for answers and couldn't find).
Some questions:

1. How is this better aligning to target curve limiting filters frequency, compared to just using plain Audyssey measurements and limiting EQ frequency in the app?

2. How is the speaker time alignment better than the plain Audyssey time alignment (assuming compensation for the speed of sound bug is applied). Does the subwoofer get a significantly different relative delay using this method compared to default plain Audyssey?

3. How do you maintain dynamic EQ volume-dependent bass boost without having the volume-dependent surround boost?

4. What do you do with the low frequency rolloff of the speaker and minimum EQ freuqnecy? Those are normally automatically determined and only changeable with MultEQ-X and not the 20$ app, but if you edit the file you can probably change them? Supposedly one may want to apply the same frequency as the crossover frequency rather than the actual natural rolloff of the speaker, to get a 12db/oct hpf from the curve to add up with the 12db/oct hpf from the speaker crossover filter, to match the 24db/oct lpf from the subwoofer crossover filter.

Thanks!

Also, I think a text version of the video and also a more detailed written introduction into what this does and why it should be used would be very nice to have. When trying to perform the process step by step it would be much easier to follow the written steps instead of pausing/unpausing a video and only using the video on parts you don't understand or remember from previously watching the video.
 
Last edited:
I watched some of the video (mostly looking for answers and couldn't find).
Some questions:

1. How is this better aligning to target curve limiting filters frequency, compared to just using plain Audyssey measurements and limiting EQ frequency in the app?

2. How is the speaker time alignment better than the plain Audyssey time alignment (assuming compensation for the speed of sound bug is applied). Does the subwoofer get a significantly different relative delay using this method compared to default plain Audyssey?

3. How do you maintain dynamic EQ volume-dependent bass boost without having the volume-dependent surround boost?

Thanks!

Also, I think a text version of the video and also a more detailed written introduction into what this does and why it should be used would be very nice to have. When trying to perform the process step by step it would be much easier to follow the written steps instead of pausing/unpausing a video and only using the video on parts you don't understand or remember from previously watching the video.
Are you referring to Audyssey One video or one of the earlier Audyssey optimization tutorials? There's no method explanation in Audyssey One, it's a fully automatic script (the name "One" comes from just one-click) that takes about 5 minutes to apply and start listening.

As per your questions, the filters are generated with a completely different method in 5 stages. Speakers are aligned with impulse cross correlation rather than "align IR starts" method of Audyssey. Dynamic EQ needs to be off with One as Audyssey measurements it uses are taken with it disabled.
 
Last edited:
I was refering to the video in the 1st post.


What is the main practical difference in filter generation methods? Doesn't Audyssey also perform some kind of inversion? Are there no limitations to the filters tgat can be applies in this method (using the curve points) compared to a regular calibration?

What is the difference between both time alignment methods and why is cross-correlation better? What can I measure that will demonstrate it being the better way?

Normally you would eq the speakers to sound flat in room, and then apply DEQ to compensate for listening at a lower volume level than that for which the movie is recorded. But apparently Audyssey wrongly thought it also requires a surround boost on top od the EQ. Audyssey said tgey consider patching into X the ability to disable tge surround boost, but did they ever get to it? The fact it is possible might indicate some option for it could be hiding in the ady file?

Abd what about #4 (crossover slope optimization)?
 
1711934800411.png
Got is far, not sure what this means?
 
I was refering to the video in the 1st post.


What is the main practical difference in filter generation methods? Doesn't Audyssey also perform some kind of inversion? Are there no limitations to the filters tgat can be applies in this method (using the curve points) compared to a regular calibration?

What is the difference between both time alignment methods and why is cross-correlation better? What can I measure that will demonstrate it being the better way?

Normally you would eq the speakers to sound flat in room, and then apply DEQ to compensate for listening at a lower volume level than that for which the movie is recorded. But apparently Audyssey wrongly thought it also requires a surround boost on top od the EQ. Audyssey said tgey consider patching into X the ability to disable tge surround boost, but did they ever get to it? The fact it is possible might indicate some option for it could be hiding in the ady file?

Abd what about #4 (crossover slope optimization)?
It seems the vast number of enthusiasts using the script – including the dedicated Facebook groups – are finding it delivers an exceptional improvement in sound quality. Perhaps the best way to get answers to your questions is to give it a try and compare your own results with Audyssey. If you have further questions after testing, the community is a great resource for support and discussions.
 
View attachment 360513Got is far, not sure what this means?
Looks like you have run the script twice without removing the results of the first run from REW. You can find all kinds of solutions to problems in the video comments. There are also walkthrough videos on Audyssey One.

 
Last edited:
Actually not even 300Hz, filters end at 200Hz but takes an additional 100Hz to send everything intact to Audyssey, you will wonder why until you hear the One ;)
@OCA so I tried it yesterday: the time saving is insane!! I confirm: it is 5 minutes compared to 5 hours for the Mac users for Atmos (I have a 7.2.4 system running on a Denon 8500H, so the filter creation for each channel (0-200, then 200-500, then 500-20000) takes hours...)

I watched 2 movies (one in native Dolby Atmos, the other in Dolby Surround with Auto 3D decoding) and listen my usual music (stereo & dolby atmos), I liked more the Subs integration with the speakers with Audyssey One. But as the target curve are differents (Harman versus Dr Toole), I am comparing apple and carrots... to do a proper comparison, I would need to use the old method with the new target curve you proposed in this method... and I feel a little lazy about spending several hours in front of my computer just to confirm you are right about the comparison of the methodology ;) But i will in the future, or I will wait you have new ideas to compare with the old one...

But to be honest, I have kept downloaded in the Denon the Audyssey One version... :cool:

I have attached the graph Target Curve versus corrected Fronts, Center and Sub for old method and new one if you want to take a look.

Thanks again for the time you are spending for us!!
 

Attachments

  • Audissey One FL FR C Sub.jpg
    Audissey One FL FR C Sub.jpg
    362.6 KB · Views: 131
  • 17 Mars FL FR C Sub.jpg
    17 Mars FL FR C Sub.jpg
    418.7 KB · Views: 133
It seems the vast number of enthusiasts using the script – including the dedicated Facebook groups – are finding it delivers an exceptional improvement in sound quality. Perhaps the best way to get answers to your questions is to give it a try and compare your own results with Audyssey. If you have further questions after testing, the community is a great resource for support and discussions.
Regardless of the listening test result, I'm interested in the technical differences and the reasoning behind them, which I don't necessarily know how to test.
Sure it may sound great, but I still want to understand how it works and why.
I also wonder how you handle the subwoofer crossover slopes as that wasn't mentioned anywhere.
Thanks.
 
Regardless of the listening test result, I'm interested in the technical differences and the reasoning behind them, which I don't necessarily know how to test.
Sure it may sound great, but I still want to understand how it works and why.
I also wonder how you handle the subwoofer crossover slopes as that wasn't mentioned anywhere.
Thanks.
An advantage with One is that it's open source and you can see the full code in any text editor including Notepad with just a click. Crossover calculation is done by a function between the lines 820-858.

Do you know why subwoofer lpf (crossover) slopes are 24dB/oct while speaker slopes are 12dB/oct in nearly all hardware DSPs?
 
Looks like you have run the script twice without removing the results of the first run from REW. You can find all kinds of solutions to problems in the video comments. There are also walkthrough videos on Audyssey One.


Thanks. Started again from scratch and still end up with the following
error: speaker has no bass response according to your measurement file. Please check! - program execution has stopped
 
Having again tweaked my room acoustics a bit, it was time to run new Audyssey settings. Having learnt about Audyssey One, I properly set on testing this one out as well. As a REW n00b, I was able to follow your instructions without too much confusion, and promptly uploaded the A1 ady file as preset 2, with original Audyssey MultEQ app measurements at preset 1.

I have to say this plays really neat, thank you for your effort! Next, I need to further acclimatize myself to this one, in particual as I've always allowed Audyssey to have effect on full range. As part of said acclimatization, I did set DynamicEQ ON as I often play with lower volumes. Something I will need to further experiment with. I have the A1 preset at RLO +10dB so it tampers DynamicEQ down a tad, while I have the original Audyssey at RLO +0dB. Volume seems now similar when switching presets for an easier comparison.

Again, I am liking this a lot, thank you again.
 
  • Like
Reactions: OCA
An advantage with One is that it's open source and you can see the full code in any text editor including Notepad with just a click. Crossover calculation is done by a function between the lines 820-858.

Do you know why subwoofer lpf (crossover) slopes are 24dB/oct while speaker slopes are 12dB/oct in nearly all hardware DSPs?
They seem to rely on additional 12db/oct coming from the natural rolloff of the speaker itself. At least to my understanding.

However, if we cross at 80Hz and the speaker extends lower than 80Hz, it will not have that slope. I was wondering if it would improve the results to set the 12db/oct rolloff of the EQ curve to the same frequency as the crossover, to get a total of the expected 24db/oct, to be symmetrical with the subwoofer. I was wondering if your system can (manually or automatically) control that, as the 20$ editor app doesn't allow changing it, while the MultEQ-X does allow it, so that setting might be in the file somewhere (after all it is automatically determined during calibration so must be saved somewhere in the file).

Of course being an open source is a great advantage, but I still wonder if the method is supposed to sound better, then what is the explanation behind it. Why generating filters with your code is supposed to sound better, not just what it does differently. Plus we don't have the Audyseey code, so figuring out what it does and why your code is better - is complicated for someone who doesn't know the motivation behind your code.
 
Both the app and X send the exact same data and parameters to the AVR at the end of the day because Audyssey has no longer control over the firmware in the units since they sold the license long time ago to SU. No one can change the 12db/oct Butterworth (not Linkwitz to my surprize) high pass filter applied at the XO frequency in these units. Of course, which XO frequency will yield the best response can be calculated accordingly and with X one needs to carry everything over to REW to check this and really know what he's doing while with One this will be done on the go automatically. Your answer was correct btw.
 
Thanks. Started again from scratch and still end up with the following
error: speaker has no bass response according to your measurement file. Please check! - program execution has stopped
Are you using open baffle speakers by any chance? The error means for at least one of the speakers, there was no point below 250Hz where frequency response of the speaker could reach the target level. I have seen this only once with an open baffle speaker and had to customize the code for it. For normal speakers, my best guess is that a speaker's response wasn't measured correctly during the original calibration because of some glitch.
 
Are you using open baffle speakers by any chance? The error means for at least one of the speakers, there was no point below 250Hz where frequency response of the speaker could reach the target level. I have seen this only once with an open baffle speaker and had to customize the code for it. For normal speakers, my best guess is that a speaker's response wasn't measured correctly during the original calibration because of some glitch.

No open baffle. But i do have upfiring atmos with pretty poor bass

Screenshot_20240401_213044_MultEQ.jpg
 
Back
Top Bottom