lsp-plugins
lsp-plugins copied to clipboard
Add support of EBU R.128 standard to the limiter.
Original issue here: https://github.com/lsp-plugins/lsp-plugins-limiter/issues/2
There are several ways of determining "True" peak amplitude in broadcasting. And today's most popular standard is EBU-R. (there is even a library with MIT license which already implements the code: https://github.com/jiixyj/libebur128).
From the point of the UI, i think it could be 2 controls - checkbox for toggling between normal and TruePeak modes, and in case TruePeak mode enabled - the window size for measurement.
You can also take some inspiration from Thomas Mundt plugins although for LUveler it is the ITU-R BS.1770 specification.
https://loudmax.blogspot.com/ https://luveler.blogspot.com/
EasyEffects has already implemented this library in its Autogain plugin, maybe you can take a look at it.
I hope you find it helpful.
I'm familiar with BS.1770 specification and already implemented the K-weighting filter (including also A, B, C and D). But there are another tasks to do at this moment.
the reason why i mentioned this exact (ebu r 128) standard, is because as far as i know modern streaming services (like spotify or youtube) are using its measurement for track gain normalization - so it's crucial knowing the values during the mastering
(For limiting, is it not sufficient to just enable oversampling to get True Peak limiting?)
I'm familiar with BS.1770 specification and already implemented the K-weighting filter (including also A, B, C and D).
FWIW, i think i said that elsewhere already, but it would be really really cool (but not required) to
- be able to K-Filter the sidechain before the RMS and/or have a global toggle to operate on Loudness Units instead of dB's One can do K-Filtering manually by passing sidechain through equalizer first, but that is somewhat cumbersome
- perhaps, support slightly longer reactivity window (EBUR128 momentary is 400ms)
- Fix the maximal lookahead window, it should not be smaller than the maximal reactivity window. Consider e.g. gating -- it perhaps makes sense for the gate to have prescience, and the current 20ms lookahead seems like not sufficient. One can pass the sidechain through delay plugin, but that is ugly
(I think that is on-topic here?)
@LebedevRI i think the main point is not which of the standards is better, but which is actually used in the target broadcasting
@LebedevRI i think the main point is not which of the standards is better, but which is actually used in the target broadcasting
Err, i did not say any of that. By sufficient
, i simply mentioned
that it is what ebur128_check_true_peak()
does.
Neither in jiixyj/libebur128
nor in ITU-R BS.1770-4
do i see anything about a window.
I guess the idea would be the same as for sidechain reactivity for compressor?
That was my question, please do not misintepret it as FUD/etc.
sorry, i misinterpreted you were suggesting the optimal window size value
it's only 2 samples, and the rest is oversampling - so, i guess, oversampling value should be sync-ed with the global resampling set on the limiter
and that thing regarding M/S/I and 20 ms - it's related to loudness measurement of ebu, but not TruePeak measurement (it's also important to know those when posting stuff to broadcasting, but it's not up to limiter, but to the measurement tool)