From 92246b3e7e2d914a0549bbc7f90dd07ff3fd103a Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Tue, 23 Aug 2016 22:20:59 +0200 Subject: [PATCH] Make reference level of VUMeter and LRAMeter adjustable. --- lrameter.cpp | 6 +++--- lrameter.h | 7 ++++++- vumeter.cpp | 2 +- vumeter.h | 7 ++++++- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lrameter.cpp b/lrameter.cpp index 7b0f691..ab3c5c2 100644 --- a/lrameter.cpp +++ b/lrameter.cpp @@ -33,9 +33,9 @@ void LRAMeter::paintEvent(QPaintEvent *event) range_high_lufs = this->range_high_lufs; } - float level_lu = level_lufs + 23.0f; - float range_low_lu = range_low_lufs + 23.0f; - float range_high_lu = range_high_lufs + 23.0f; + float level_lu = level_lufs - ref_level_lufs; + float range_low_lu = range_low_lufs - ref_level_lufs; + float range_high_lu = range_high_lufs - ref_level_lufs; int range_low_pos = lrint(lufs_to_pos(range_low_lu, height())); int range_high_pos = lrint(lufs_to_pos(range_high_lu, height())); diff --git a/lrameter.h b/lrameter.h index e2e63ad..0b887f9 100644 --- a/lrameter.h +++ b/lrameter.h @@ -41,6 +41,11 @@ public: recalculate_pixmaps(); } + void set_ref_level(float ref_level_lufs) + { + this->ref_level_lufs = ref_level_lufs; + } + private: void resizeEvent(QResizeEvent *event) override; void paintEvent(QPaintEvent *event) override; @@ -50,7 +55,7 @@ private: float level_lufs = -HUGE_VAL; float range_low_lufs = -HUGE_VAL; float range_high_lufs = -HUGE_VAL; - float min_level = -18.0f, max_level = 9.0f; + float min_level = -18.0f, max_level = 9.0f, ref_level_lufs = -23.0f; QPixmap on_pixmap, off_pixmap; }; diff --git a/vumeter.cpp b/vumeter.cpp index c08e9dc..c7f8df4 100644 --- a/vumeter.cpp +++ b/vumeter.cpp @@ -25,7 +25,7 @@ void VUMeter::paintEvent(QPaintEvent *event) level_lufs = this->level_lufs; } - float level_lu = level_lufs + 23.0f; + float level_lu = level_lufs - ref_level_lufs; int on_pos = lrint(lufs_to_pos(level_lu, height())); QRect off_rect(0, 0, width(), on_pos); QRect on_rect(0, on_pos, width(), height() - on_pos); diff --git a/vumeter.h b/vumeter.h index 33f8df1..341f60f 100644 --- a/vumeter.h +++ b/vumeter.h @@ -39,6 +39,11 @@ public: recalculate_pixmaps(); } + void set_ref_level(float ref_level_lufs) + { + this->ref_level_lufs = ref_level_lufs; + } + private: void resizeEvent(QResizeEvent *event) override; void paintEvent(QPaintEvent *event) override; @@ -46,7 +51,7 @@ private: std::mutex level_mutex; float level_lufs = -HUGE_VAL; - float min_level = -18.0f, max_level = 9.0f; + float min_level = -18.0f, max_level = 9.0f, ref_level_lufs = -23.0f; QPixmap on_pixmap, off_pixmap; }; -- 2.39.2