Jump to content

Help me test a free and open source audio calibration software!

VoidX

Hey everyone, I'm looking for feedback about my pet project of 6 years now, which is an audio calibration tool (and some other audio experiments, but those don't matter now). I'm interested in anything you care about, not just features and quality, but the simple things like the layout and friendliness of the UI, or ease of use. Anywhere you see a path of improvement, I'll take it. Even if you don't try it, just want to give some tips of what would be a nice addition, it's also warmly welcome.

 

My goal with this is to make the PC a viable alternative to AVRs, where every time I measured the results (with REW), it was far from the standards, even if their own graphs showed something close to flat. That problem is solved here by using thousands of correction points. The DCI standard (used in all actual commercial cinemas) is closely followed, which fixes non-dynamic boomy bass caused by bad crossovers. There are a few target curves to choose from, or the ability to import one (an editor is coming). I'm interested in your results if you try the feature that fixes the case where only the center speaker has unnatural sound or the one which makes your ported subwoofer sound like a sealed one. The first few testers really liked the results, and I'm stoked to hear how it turns out outside my country.

 

You might be looking for a catch. Actually, there's a few:

  • You will need a calibrated measurement microphone (UMIK-1, XTZ Pro, etc.) for optimal performance. Voice chat, phone, even studio mics won't work well or at all.
  • If you ask for a feature, it will be public domain, as the project is open source. There are some people who see this as a setback.
  • Only layouts up to 7.1 are supported currently. 5.1.2 is hard to do, but doable nonetheless. This will improve in the future.
  • You have to use a PC for playback, this many filters are not possible on any AVR or processor.

 

If you're on board, here's what you'll need:

 

For devs, here's the source code, as I promised.

 

Thank you for your time and comments!

Link to comment
Share on other sites

Link to post
Share on other sites

It's a shame you haven't received much commentary on this yet.  I'll be reviewing it more in-depth this week if possible, but if it automates most of the measurement process that alone will be a major help for those looking into semi-automated solutions.

 

Questions:

 

To confirm on the EQ standard portion, does it allow boost and boost limiting? 

 

Does it have a tolerance target in relation to the target band similar to REW? 

 

What are the maximum amount of filters and type(s) it utilizes?

 

What is the general latency delay/maximum allowed based on filter expectations?

 

When addressing treble frequencies does it favor low or high Q - how does it handle potential artifacts in these regions?

 

Does this allow easy export of information on filters used?

 

How are you figuring DCI will fix bass issues in relation to crossover specifically?

 

When figuring gain for DCI are you using in-band gain for LFE, if so what is the range and test signal used?

 

Just curiosity:

 

DCI doesn't have much use in HT calibration, why did you decide to implement/use it?

Link to comment
Share on other sites

Link to post
Share on other sites

Thank you @Shike, I'll try to answer all your questions:

 

On 12/14/2021 at 11:11 PM, Shike said:

To confirm on the EQ standard portion, does it allow boost and boost limiting? 

Yes, boosting is allowed to a maximum of 6 dB. This is currently only modifiable in the source code, see the maxGain variables in this file. However, the channel gains keep all results below 0 dB FS, so initially there is no boosting.

 

On 12/14/2021 at 11:11 PM, Shike said:

Does it have a tolerance target in relation to the target band similar to REW? 

If you're asking about the flatness target, it's always trying to be the best possible value.

 

On 12/14/2021 at 11:11 PM, Shike said:

What are the maximum amount of filters and type(s) it utilizes?

It depends on your settings:

  • For Equalizer APO exports (which will be applied as a 32768 samples long FIR filter), the number of correction points (not filters in this case) depends on the smoothing.
    • Low: 32 for each main channel, 40 for each LFE channel
    • Var and high: 128 for each main channel, 160 for each LFE channel (only the curve smoothing differs)
    • Auto: up to 400 for any channel, each local peak and valley is corrected
  • Convolution exports can be set from 32768 to 1048576 samples. It could use this many correction points.
  • Regular PEQ modes:
    • 12 for Equalizer APO
    • 10 for MultEQ-X
    • The available maximum for specific devices like MiniDSP or StormAudio.

 

On 12/14/2021 at 11:11 PM, Shike said:

What is the general latency delay/maximum allowed based on filter expectations?

FIR filters are either minimum phase (default, has no latency) or linear phase (filter length / 2 samples of latency). IIRs are regular PEQs, 0-2 samples of latency per filter.

 

On 12/14/2021 at 11:11 PM, Shike said:

When addressing treble frequencies does it favor low or high Q - how does it handle potential artifacts in these regions?

PEQ generation is brute-forced (that's why it can last up to a minute to calculate them), and favors whatever will cause the least distortion. Every tried possibility is simulated, the results usually have low Q values.

 

On 12/14/2021 at 11:11 PM, Shike said:

Does this allow easy export of information on filters used?

Yes, a single folder/file selection for all platforms except MultEQ-X.

 

Bonus round:

On 12/14/2021 at 11:11 PM, Shike said:

DCI doesn't have much use in HT calibration, why did you decide to implement/use it?

DCI is partly used in HT. The LFE channel is usually 10 dB louder than everything else, but the issues are explained for the next question. HT calibrators usually target equal volumes for all channels (this has some ties to 5.1 downmixing), but most studios don't. Exports are sometimes 1:1, and the -3 dB level of the commercial cinema is not pre-applied, which results in louder surrounds than needed. There is no perfect solution here for this reason, but the DCI setting is the default, because if you can choose between sometimes hearing too loud surrounds or sometimes hearing too quiet surrounds, most would choose the latter, which is the result of DCI.

 

On 12/14/2021 at 11:11 PM, Shike said:

How are you figuring DCI will fix bass issues in relation to crossover specifically?

Most AVRs and processors don't respect that the LFE channel has to be 10 dB above main channels. For this reason, it will be the same level as crossovered low frequencies, which results in overamplified main bass and/or very low LFE level. If applied on a PC as player, this software can fix this in any case.

 

On 12/14/2021 at 11:11 PM, Shike said:

When figuring gain for DCI are you using in-band gain for LFE, if so what is the range and test signal used?

The test signal is the same for all channels, a 20 Hz to 20 kHz exponential sweep. This makes sure that the resulting target level is accurately where it should be. Gains are always simple preamplifications.

Edited by VoidX
Link to comment
Share on other sites

Link to post
Share on other sites

19 hours ago, VoidX said:

Thank you @Shike, I'll try to answer all your questions:

 

Bonus round:

DCI is partly used in HT. The LFE channel is usually 10 dB louder than everything else, but the issues are explained for the next question. HT calibrators usually target equal volumes for all channels (this has some ties to 5.1 downmixing), but most studios don't. Exports are sometimes 1:1, and the -3 dB level of the commercial cinema is not pre-applied, which results in louder surrounds than needed. There is no perfect solution here for this reason, but the DCI setting is the default, because if you can choose between sometimes hearing too loud surrounds or sometimes hearing too quiet surrounds, most would choose the latter, which is the result of DCI.

 

Most AVRs and processors don't respect that the LFE channel has to be 10 dB above main channels. For this reason, it will be the same level as crossovered low frequencies, which results in overamplified main bass and/or very low LFE level. If applied on a PC as player, this software can fix this in any case.

 

The test signal is the same for all channels, a 20 Hz to 20 kHz exponential sweep. This makes sure that the resulting target level is accurately where it should be. Gains are always simple preamplifications.

 

I'm not sure commercial cinema standards should be applied to HT.  The requirements and psychoacoustic requirements are different.  This is also why they have different reference levels based on room volume for example.  As such I'm not sure the -3dB should be utilized by default.

 

A 20hz - 20khz sweep does not seem appropriate for setting the level/gain unless the software is using a specific subset from that data.  Bass managed systems in small rooms should be set with band-limited pink noise.  This means the sub will typically be +4dB above channel speakers in practice (+10dB "in band").

 

From what I remember the pink noise should be band limited from 500hz-2Khz for standard channels and 20-80Hz for LFE for calibration when setting reference levels.

 

Finally to confirm when you say it's set with preamplification, it's not able to introduce digital clipping and will lower all levels appropriately right?

 

Also, since you're looking for feedback/testers have you considered posting to AVS and maybe the hometheater subreddit on Reddit?  I think you might get more input posting there as well.

 

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, Shike said:

I'm not sure commercial cinema standards should be applied to HT.  The requirements and psychoacoustic requirements are different.  This is also why they have different reference levels based on room volume for example.  As such I'm not sure the -3dB should be utilized by default.

The different reference levels only apply to the screen main channels, but the -3 dB surrounds and +10 dB LFE channels are given relatively to that. This is the Dolby 5.1 and 7.1 standard (including their home calibration tones), but there are cases when these are different. IMAX levels are the same for all speakers, while Dolby Atmos actually has -6 dB for legacy content surrounds. Games are a different case, some are mixed in DCI (Mirror's Edge: Catalyst, Overwatch), some aren't (basically anything made with Unity). I can't think of a good solution, only which one breaks more when the content is using a different standard.

 

4 hours ago, Shike said:

A 20hz - 20khz sweep does not seem appropriate for setting the level/gain unless the software is using a specific subset from that data.  Bass managed systems in small rooms should be set with band-limited pink noise.  This means the sub will typically be +4dB above channel speakers in practice (+10dB "in band").

Both can be used if done right, and both are used in practice (Audyssey Pro is using noise and sweeps, Dirac and Dolby are using only sweeps). Windowed and repeated sweeps might produce bad results, but Cavern turns off windowing by default and clearly marks it as an advanced feature that should not be used without reason. This will not discard the room's effect, and the correct levels are displayed. There is also at least half a second to 21 seconds available in the recording process for low frequency falloff.

 

5 hours ago, Shike said:

From what I remember the pink noise should be band limited from 500hz-2Khz for standard channels and 20-80Hz for LFE for calibration when setting reference levels.

Dolby only band limits the LFE channel (LPF @ 200 Hz if I remember correctly), but this measurement is not used in practice for a long time, the error margin of +/-3 dB is too high. The sweep is perfectly repeatable in low-noise conditions, the pink noise is not.

 

5 hours ago, Shike said:

Finally to confirm when you say it's set with preamplification, it's not able to introduce digital clipping and will lower all levels appropriately right?

Yes. After everything is calculated, even crossovers or special features, the highest boost is calculated, and subtracted from all gains, making 0 dB the highest peak. This usually lowers the system's volume a lot if channel level differences are high, so a default feature of automatically raising 0 to 3 dB (depending on the filters) is available. This can be turned off, and the actual digital peak can be set, from 0 dB FS to 12 dB FS in 3 dB steps (this was also a feature that was asked for). The auto setting calculates a gain that is highly unlikely to cause digital clipping, but the 0 dB setting makes sure it won't happen.

 

5 hours ago, Shike said:

Also, since you're looking for feedback/testers have you considered posting to AVS and maybe the hometheater subreddit on Reddit?  I think you might get more input posting there as well.

Thank you, I forgot AVS. I asked the moderators on Reddit, they called this self promotion, so I can't ask for feedback there.

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, VoidX said:

+10 dB LFE channels are given relatively to that. 

Let me confirm, how are you calculating the +10dB?  I want to make sure that it only puts out the ~+4dB sine wave over mains (which is 10dB in band when done right).  I've seen people get this wrong before and just want to be sure.

 

Quote

I asked the moderators on Reddit, they called this self promotion, so I can't ask for feedback there.

That's pretty ridiculous, Reddit jannies gonna janny.

 

Link to comment
Share on other sites

Link to post
Share on other sites

On 12/17/2021 at 7:03 AM, Shike said:

Let me confirm, how are you calculating the +10dB?  I want to make sure that it only puts out the ~+4dB sine wave over mains (which is 10dB in band when done right).  I've seen people get this wrong before and just want to be sure.

Gains based on spectra (which my program calculates) and not loudness are always in band.

Link to comment
Share on other sites

Link to post
Share on other sites

So did some testing and here are my thoughts.

 

The bad news:

  • The UI needs work, the 3D rendering seems to detract from the EQ section.
  • Based on the above, part of me believes spinning the EQ section out of it or making a "lite" version might be beneficial
  • Folder/File management is tedious requiring manual navigation rather than an explorer like window that allows easy folder navigation.

The good news:

  • Extremely accurate EQ based on my quick testing, well within margin of error compared to my by hand EQ that took well into an hour+ by comparison using REW - this could be done in 5 minutes easily.  For the test I used a custom curve of -1dB/octave slope as I think it's the best fit in general over various ones I've tried.

The "indifferent":

  • I'd like the ability to run some channels "hot", specifically the center channel.  I found that a +3dB boost on center over the years has improved intelligibility with minimal negative impact.

Other than that the heart of the EQ seems to be freaking on-point.  Fantastic work!

Link to comment
Share on other sites

Link to post
Share on other sites

Thank you for your detailed feedback, I have acted as promised, and uploaded a new version. The entire changelog can be found on this page.

 

On 12/24/2021 at 7:41 AM, Shike said:

Folder/File management is tedious requiring manual navigation rather than an explorer like window that allows easy folder navigation.

For single file import/export, something close to the default Windows dialog was added. It's the Mono clone, as direct windows calls are unsupported from Unity. For multifile exports (like room simulation), the old UI is staying, as the Mono dialog can't be tamed to select the last used folder by default.

 

On 12/24/2021 at 7:41 AM, Shike said:

I'd like the ability to run some channels "hot", specifically the center channel.  I found that a +3dB boost on center over the years has improved intelligibility with minimal negative impact.

The "used standard" block was changed to "gain standard", and next to DCI and Cavern, a new option called Custom was added. When you select this, sliders will appear on the left, where you can offset individual channels between -6 and 6 dB. As many other users have also expressed that DCI shouldn't be the default, it is now Cavern (same level mains).

 

On 12/24/2021 at 7:41 AM, Shike said:

Based on the above, part of me believes spinning the EQ section out of it or making a "lite" version might be beneficial

This is an ongoing task, but it's really hard to do as the codebase is many tens of thousands of lines, and I started working on it since I started programming, thus a complete rewrite and component separation is underway.

 

On 12/24/2021 at 7:41 AM, Shike said:

The UI needs work, the 3D rendering seems to detract from the EQ section.

What do you have in mind?

 

Thank you again, and happy holidays!

Link to comment
Share on other sites

Link to post
Share on other sites

I haven't had a chance to try the new version yet, but plan on doing so tonight if I have time.

On 12/25/2021 at 4:55 PM, VoidX said:

What do you have in mind?

If it was spun-off from cavern maybe just a 2D section that lights up what speakers are used.  Effectively I'd say reduce the resource overhead as much as possible while maintaining some reasonable indicator.  The goal would be that measurements shouldn't take up many more resources than other measurement apps (not the actual processing) so something inline with REW or DIRACs measurement process is what I'd envision if that makes sense.  This to me seems reasonable as not everyone will be doing correction on their PC as you have additional device exports.

 

Link to comment
Share on other sites

Link to post
Share on other sites

Okay, had time to test.

 

First noticed that at times it seems to get stuck in an error claiming a channel is to loud.  I can adjust it and then it will repeat it's still too loud be roughly the same amount - repeatedly.  Did not run into this before.  I've had to dismiss it occasionally - looking at the numbers the channel levels do not seem to be nearly as off as it's making it out to be and likely won't raise level significantly if at all.

 

Everything else seems on-point though.

 

Question:

 

What does convolution length impact?  Is there a good reason to use lower or larger values from default?  Will using either impact performance/quality?

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, Shike said:

I can adjust it and then it will repeat it's still too loud be roughly the same amount - repeatedly.

Could you please send me a recorded response before and after adjustment?

 

2 hours ago, Shike said:

What does convolution length impact?  Is there a good reason to use lower or larger values from default?  Will using either impact performance/quality?

It can increase precision, especially for lower frequencies. Crossovers are more accurate (don't produce any dip) on higher convolution lengths. On PC, there is practically no limit on how high you can go, but embedded DSPs limit the convolution length by hardware. This setting will also affect if timing is included in the filter or not. Large filters have no problems with this, while small ones could be distorted, thus the delay will be exported separately.

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, VoidX said:

Could you please send me a recorded response before and after adjustment?

Is there a specific format or method of export you would like?

Link to comment
Share on other sites

Link to post
Share on other sites

On 1/2/2022 at 10:20 PM, Shike said:

Is there a specific format or method of export you would like?

Use "Export recorded response", it can be loaded like it was a fresh measurement, including the warning text.

Link to comment
Share on other sites

Link to post
Share on other sites

On 1/3/2022 at 7:02 PM, VoidX said:

Use "Export recorded response", it can be loaded like it was a fresh measurement, including the warning text.

I'm wondering if it has something to do with my not using a center channel in my nearfield ambio setup.  Here's the response with the warning in it.

 

EDIT:

 

Home Theater with same issue - all speakers driven.  Left side it says is too loud in warning and to reduce it specifically to maintain volume.

Link to comment
Share on other sites

Link to post
Share on other sites

Not related to the warnings but some additional thoughts:

 

I did some physical listening and testing, and as I feared the subwoofer appears hot in my setup.  I think the problem stems from the fact that I use a room curve of roughly 1dB/octave sloped.  Dolby states that the RTA should be 10dB higher in-band when the speakers are ideally flat, but that rarely actually happens in consumer environments (if it did it often sounds wrong/bright, see general dislike of Audyssey flat and solutions like DIRAC avoiding it).  I'm reverting back to the ATSC recommendation of bandwidth limited pink noise for the screen channels to get the proper level to key off of.  This resulted in a -6dB level which is just barely within the application scope of custom levels.

 

Is there a way to maybe dump the sliders for level or maybe allow entry fields for greater values?  While it doesn't impact me depending on the natural slope of speakers in someone's room they may have a more aggressive slope which will be even worse.  Just as an example the LFE was +15-16dB hotter than 1Khz for me which really started screwing with balance/intelligibility.

 

As an aside I also have another question:

 

I see you uploaded a youtube video a while back noting a Cavern Pro.  Will this be a commercial product, rolled into the current EQ software, or just a separately developed app?  I think this app definitely has significant promise based on the results I was getting saving lots of time/pain and would definitely consider supporting it in the future.

Link to comment
Share on other sites

Link to post
Share on other sites

  • 4 weeks later...
On 1/5/2022 at 9:36 AM, Shike said:

I'm wondering if it has something to do with my not using a center channel in my nearfield ambio setup.  Here's the response with the warning in it.

 

EDIT:

 

Home Theater with same issue - all speakers driven.  Left side it says is too loud in warning and to reduce it specifically to maintain volume.

Sorry, I was overwhelmed by uni and work for weeks. Just as I wanted to follow up on this, the files are deleted. Could you please upload them again or send them via email using the newest version (which has drastically smaller file sizes)?

 

On 1/6/2022 at 4:28 AM, Shike said:

Is there a way to maybe dump the sliders for level or maybe allow entry fields for greater values?

Would +/-15 dB be fine with the sliders? That's a good compromise between UX and usability, or I could add a toggle between sliders and inputs.

 

On 1/6/2022 at 4:28 AM, Shike said:

I see you uploaded a youtube video a while back noting a Cavern Pro.  Will this be a commercial product, rolled into the current EQ software, or just a separately developed app?  I think this app definitely has significant promise based on the results I was getting saving lots of time/pain and would definitely consider supporting it in the future.

There will be a commercial hardware processor, Cavern Pro will be its software. It will include time-domain fixes like artificially increased damping factor and per-driver time alignment.

Link to comment
Share on other sites

Link to post
Share on other sites

On 1/29/2022 at 11:27 AM, VoidX said:

Sorry, I was overwhelmed by uni and work for weeks. Just as I wanted to follow up on this, the files are deleted. Could you please upload them again or send them via email using the newest version (which has drastically smaller file sizes)?

 

These were created with 1.6 pre-release if I'm not mistaken.

 

Home Theater Left CH error

PC Right CH error (note: this is a 4.1 configuration - no center)

Quote

Would +/-15 dB be fine with the sliders? That's a good compromise between UX and usability, or I could add a toggle between sliders and inputs.

I think a toggle would probably be best, I know that with sliders they can get finicky if the value spread is to far apart making fine adjustments a pain if space is limited in the UX.  The ability to directly input allows a little extra control and makes it less dependent on screen scaling in long term too.

 

Quote

There will be a commercial hardware processor, Cavern Pro will be its software. It will include time-domain fixes like artificially increased damping factor and per-driver time alignment.

Interesting, it sounds like a potential competitor to DIRAC if things go well.  Looking forward to seeing more news on it in the future 👍

 

 

Ultimately I'm glad to hear you're still working on this, do you have any other discussion spots for the software like threads/discord as well?

Link to comment
Share on other sites

Link to post
Share on other sites

On 2/3/2022 at 4:15 PM, Shike said:

Home Theater Left CH error

PC Right CH error (note: this is a 4.1 configuration - no center)

I've checked the files, and for the JBL, the recommendation worked perfectly: taking 3 dB from the front left disabled the warning. For the NHT, the left, right, and LFE were all too loud. I'll make a warning for multiple speakers, it'll tell you the correct settings to mitigate it. Don't forget that this warning can be dismissed and won't affect system performance if you just set the volume high.

 

On 2/3/2022 at 4:15 PM, Shike said:

I think a toggle would probably be best, I know that with sliders they can get finicky if the value spread is to far apart making fine adjustments a pain if space is limited in the UX.  The ability to directly input allows a little extra control and makes it less dependent on screen scaling in long term too.

Okay, I'll do the toggle.

 

On 2/3/2022 at 4:15 PM, Shike said:

Ultimately I'm glad to hear you're still working on this, do you have any other discussion spots for the software like threads/discord as well?

No, I don't have active topics about this anywhere else, only in Hungarian.

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, VoidX said:

I've checked the files, and for the JBL, the recommendation worked perfectly: taking 3 dB from the front left disabled the warning. For the NHT, the left, right, and LFE were all too loud. I'll make a warning for multiple speakers, it'll tell you the correct settings to mitigate it. Don't forget that this warning can be dismissed and won't affect system performance if you just set the volume high.

 

Maybe I misunderstood the warning.  I lowered the volume directly at the AVR for the channel and remeasured and the error would repeat.  Was this to adjust internal settings?

 

Quote

No, I don't have active topics about this anywhere else, only in Hungarian.

I'd definitely suggest spinning something up in the near future for community engagement.  That's just my two cents though - a Discord or even official Twitter might be a good way to get info out about updates/features/releases.

Link to comment
Share on other sites

Link to post
Share on other sites

  • 2 weeks later...

The update is out, sliders can now be changed to boundless input fields.

 

On 2/6/2022 at 5:07 AM, Shike said:

Maybe I misunderstood the warning.  I lowered the volume directly at the AVR for the channel and remeasured and the error would repeat.  Was this to adjust internal settings?

That is what you should do. The reason for this is the maximum digital output level, which is 0 dB. If you add a filter with a 3 dB gain, you have to lower all gains by 3 dB to prevent compression which happens when reaching the threshold. Cavern is a bit smarter, and takes the natural spectral distribution into account, which can get about 50% higher levels than bruteforcing the gains. The AVR's levels come after the digital transmission, and is kinda analog (within reason), so if you start the export with channel levels better suited for the results, it will increase the maximum system volume. Your first file needed only one gain change, but the other took 4, which means 5 measurements to get the best result. I changed the warning a bit, now it can check the other end, if a channel's gain needs to be increased. This means a maximum of channel count / 2 remeasurements required for the same result.

 

There is however a bug: if you enable the crossover, the warning will always come up. This is because given close to equal gains, the crossover's addition is subtracted from all channels before the check, and this will require a complete rewrite of the signal flow to fix. Channels count as "too loud" if they have to be changed by more than -9 dB, and crossover can easily change all channels to -10 or below.

 

On 2/6/2022 at 5:07 AM, Shike said:

I'd definitely suggest spinning something up in the near future for community engagement.  That's just my two cents though - a Discord or even official Twitter might be a good way to get info out about updates/features/releases.

Sadly I barely even had time to implement these last changes. I would create official channels, but I'm leaning more to simply adding an update check in the application.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×