Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add the ability to apply a fractional octave smoothing to the charts #108

Closed
3ll3d00d opened this issue Oct 14, 2018 · 14 comments
Closed

Add the ability to apply a fractional octave smoothing to the charts #108

3ll3d00d opened this issue Oct 14, 2018 · 14 comments
Labels
enhancement New feature or request

Comments

@3ll3d00d
Copy link
Owner

only really useful for full range signals

@aron7awol
Copy link

I'd like to revisit the idea of trying to identify and adjust for mixes that are quieter/louder than average. Some sort of smoothing like this would be really helpful for that.

Side question: You aren't using dialnorm in any way in BEQ Designer, are you? As part of this volume normalization process, I am thinking about how dialnorm comes into play. If most AVRs use dialnorm to adjust the volume, and that results in a difference in playback volume, maybe we could optionally check that flag in BEQ Designer and account for the effect it will have down the line? Any thoughts on this?

@3ll3d00d
Copy link
Owner Author

3ll3d00d commented Nov 13, 2018

hard to find a definitive answer on this

not sure whether it is applied by default by libavcodec based on the stream metadata but can be overridden with some arbitrary value via a (not obviously documented) command line switch

or whether it only applies this if you set some other target_level parameter (which is also undocumented)

I have a feeling this is libavcodec functionality that may not have command line switches in ffmpeg so would need manual testing to work out what it does

@3ll3d00d
Copy link
Owner Author

3ll3d00d commented Nov 13, 2018

It isn't obvious to me how dialnorm is relevant to this use case though. As far as I know it is just an overall volume level adjustment so it doesn't affect the intrachannel balance, i.e. it just turns it down a few dB based on the value in the metadata.

@aron7awol
Copy link

I agree with you. I actually went back and editing my post above removing that second paragraph but then decided to leave it to at least get your thoughts.

Is there an easier built-in method of smoothing in the charting library that you could quickly and easily enable? I was just trying to compare the high ends of the graphs and they are really difficult to compare visually without any smoothing, and really, any method of smoothing would be extremely helpful.

@3ll3d00d
Copy link
Owner Author

There is nothing built in as such, would require some implementation of a smoothing/averaging algorithm

@aron7awol
Copy link

Gotcha, I only thought there might be because you mentioned previously you had done some smoothing of the graph vs. the jagged line of SpecLab.

@aron7awol
Copy link

Actually, increasing the analysis resolution smooths the curve. Is it easy to add some additional options higher than 4Hz to that?

@3ll3d00d
Copy link
Owner Author

I wouldn't trust that to give the information you address looking for so not going to add that.

This is where you want either a constant q transform (basically a wavelet approach, underlying lib supports this but I don't know how to use it) or a fractional octave smoothing (which create fractional octave sized bins to group the fft bins by and which I do know how to implement but haven't got round to)

You could possibly export the chart as frd and feed into rew or similar as a quick hack

@aron7awol
Copy link

My thinking was that I was trying to sort of compare the average level of the peak graphs of two different mixes, and that by making the buckets bigger I would be averaging with the surrounding buckets to some extent.

Thinking about this more, if we played some repeating complex sounds and told someone to turn it up as loud as they could without it being uncomfortable, what would be the limiting factors? Certainly frequency would be an important component, as our ears can handle lower frequencies better, and I would think the peak levels would be more important than the average levels. Thus, perhaps looking at the peaks of the peak graph would be more important than looking at the average of the peak graph?

@3ll3d00d
Copy link
Owner Author

Peaks at low frequencies certainly dictate how loud you can take it, at high frequencies I think it gets a bit more complicated as some sounds are much more wearing than others. The capability of the speakers are a big factor in this as well.

Ultimately I think this just comes down to using one of the existing standard loudness metrics, I would guess ebu r128 is the way forward.

@3ll3d00d
Copy link
Owner Author

@aron7awol this is in 0.5.3 however pls bear in mind #175 so I would concentrate on the shape not the absolute level

@aron7awol
Copy link

Is it possible to use fractional octave smoothing on files that are resampled to 8kHz?

@3ll3d00d
Copy link
Owner Author

3ll3d00d commented Jan 3, 2019

It is possible for sure, just needs some work to either make it selectable by the user or change the minimum sample rate at which it is applied

@aron7awol
Copy link

Gotcha, I was just trying to get it to happen and couldn't figure out a way to, so I just wanted to double-check that I wasn't doing something wrong :) It works fine on full range, it's just that full range is so painfully slow (as you know) compared to 8kHz which is a nice happy medium.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants