diff --git a/libs/ardour/ardour/lufs_meter.h b/libs/ardour/ardour/lufs_meter.h index b37abced19..8062c91f99 100644 --- a/libs/ardour/ardour/lufs_meter.h +++ b/libs/ardour/ardour/lufs_meter.h @@ -39,6 +39,7 @@ public: void reset (); float integrated_loudness () const; + float momentary () const; float max_momentary () const; float dbtp () const; @@ -74,6 +75,8 @@ private: uint32_t _pow_idx; float _thresh_rel; + float _momentary_l; + float _maxloudn_M; float _integrated; float _dbtp; diff --git a/libs/ardour/ardour/surround_return.h b/libs/ardour/ardour/surround_return.h index 31672f1af1..473a297e49 100644 --- a/libs/ardour/ardour/surround_return.h +++ b/libs/ardour/ardour/surround_return.h @@ -76,6 +76,8 @@ public: /* a value <= -200 indicates that no data is available */ float integrated_loudness () const; + float max_momentary () const; + float momentary () const; float max_dbtp () const; samplecnt_t signal_latency () const; diff --git a/libs/ardour/lufs_meter.cc b/libs/ardour/lufs_meter.cc index 2fa4bb036e..4b19f5387e 100644 --- a/libs/ardour/lufs_meter.cc +++ b/libs/ardour/lufs_meter.cc @@ -173,6 +173,8 @@ LUFSMeter::run (float const** data, uint32_t n_samples) const float sum_m = sumfrag (4); // 400ms const float loudness_m = -0.691f + 10.f * log10f (sum_m); + _momentary_l = loudness_m; + _maxloudn_M = std::max (_maxloudn_M, loudness_m); /* observe 400ms window every 100ms */ @@ -256,6 +258,12 @@ LUFSMeter::integrated_loudness () const return _integrated; } +float +LUFSMeter::momentary () const +{ + return _momentary_l; +} + float LUFSMeter::max_momentary () const { diff --git a/libs/ardour/surround_return.cc b/libs/ardour/surround_return.cc index a41c175934..1378a1f443 100644 --- a/libs/ardour/surround_return.cc +++ b/libs/ardour/surround_return.cc @@ -395,6 +395,18 @@ SurroundReturn::finalize_export () _export_start = _export_end = 0; } +float +SurroundReturn::momentary () const +{ + return _lufs_meter.momentary (); +} + +float +SurroundReturn::max_momentary () const +{ + return _lufs_meter.max_momentary (); +} + float SurroundReturn::integrated_loudness () const {