Positive reference level for loudness
Could we have reference levels above 0dB?
The issue at the moment, is it only works if the system is able to reach reference level, but if we had positive reference level inputs we can have it start to apply the filters part way through.
For example, 10dB reference would treat max output level as if it were applying 65dB, or another way of seeing it, applying filters it would have at -10dB if the reference was 0dB. Does that make sense?
There'd be a lowering of max volume of course, since the filters are applied through high shelf and low shelf gains. It might be worth looking at how Equaliser APO implements it. It works super well (except they use the old Fletcher-Munson curves rather than the new ISO standard).
https://en.m.wikipedia.org/wiki/Equal-loudness_contour#:~:text=An%20equal%2Dloudness%20contour%20is,reference%20to%20equal%2Dloudness%20contours.
Do you think it would be possible to implement your Loudness correction in a similar way? It's certainly smoother in the way the filters change with volume.
Thank you
When would you need a reference level above 0dB? There is no technical issue with allowing it, just want to understand the use case.
As for implementing the correction using the Fletcher-Munson curves (or the ISO ones) I have looked into it and decided against it. Modelling the curves in a way that they can be interpolated to an arbitrary loudness level turned out to be quite complicated. In my opinion, the simple solution with shelving filters works very well, and the added benefit of the "proper" curves is too small to justify all the extra work.
When would you need a reference level above 0dB? There is no technical issue with allowing it, just want to understand the use case.
As for implementing the correction using the Fletcher-Munson curves (or the ISO ones) I have looked into it and decided against it. Modelling the curves in a way that they can be interpolated to an arbitrary loudness level turned out to be quite complicated. In my opinion, the simple solution with shelving filters works very well, and the added benefit of the "proper" curves is too small to justify all the extra work.
As I tried explaining above, it's for if your system cannot reach reference level. So compensation is applied partially even at full volume
Hmm that seems like a weirdly designed system! Isn't it better to set things up so that it sound ok at the listening levels normally used, and applying loudness correction only below that? BTW if you shift the reference level for the loudness filter by adding a Gain filter. If you add say a +20dB Gain filter in the pipeline, you can reduce the volume level by the same amount. This workaround should achieve what you are looking for.
Hmm that seems like a weirdly designed system! Isn't it better to set things up so that it sound ok at the listening levels normally used, and applying loudness correction only below that? BTW if you shift the reference level for the loudness filter by adding a Gain filter. If you add say a +20dB Gain filter in the pipeline, you can reduce the volume level by the same amount. This workaround should achieve what you are looking for.
Alright, that's fair enough. I was mostly asking so it would be one less step in active speaker design using your DSP, but if it's too much hassle, that's totally fair. Thank you
I'm asking to understand what it's needed for, and if it's possible to maybe achieve the same result in another way. It's very easy to change the limit to allow positive values, just to update here: https://github.com/HEnquist/camilladsp/blob/ffb3679e7e2d8ec63b62e4c99a333d06a57d58c2/src/loudness.rs#L244
I'm asking to understand what it's needed for, and if it's possible to maybe achieve the same result in another way. It's very easy to change the limit to allow positive values, just to update here: https://github.com/HEnquist/camilladsp/blob/ffb3679e7e2d8ec63b62e4c99a333d06a57d58c2/src/loudness.rs#L244
Essentially, I want to show people how to use CamillaDSP to design active loudspeakers, for this, the simplest method is to have an ideal response loudspeaker (flat anechoic, through EQ or otherwise), then have loudness correction applied to it so it sounds right. Now if said speaker couldn't reach the needed sensitivity level because it's a portable type speaker or ultra budget build, it would be much easier to just say, ok, it goes up to 70dB at max when given a pink noise signal, so we'd need a reference level that's 5dB above what it's capable of. It's just an easier process of adding a given level of loudness manually and applying the rest with a loudness correction filter like this. It does have its uses, which is why any other loudness corrections I've seen allow for this kind of setting.
Alright, now I got what you want to do! I'll raise the limit for the reference level to +50dB, ok? It's a very small change to camilladsp. But it also affects the GUI via the config validation part of the plotting library, so it will have to wait for version 1.1.0.
Alright, now I got what you want to do! I'll raise the limit for the reference level to +50dB, ok? It's a very small change to camilladsp. But it also affects the GUI via the config validation part of the plotting library, so it will have to wait for version 1.1.0.
I'll be looking forward to the update. I really appreciate the change, this DSP program really is a game changer! I can't wait to make a video to show the DIY audio community about it!
I'll be quite busy with other stuff for a while, I don't expect to be able to finish v1.1.0 until probably late summer. You can use the Gain filter workaround until then! Let's say you want the reference level at +10 dB. Then put the reference level at 0dB, add a +10dB Gain filter. This shifts the scale so that a volume setting of -10 dB really means 0dB of gain, while still applying the loudness correction you want.