]> git.sesse.net Git - nageru/commitdiff
Make reference level of VUMeter and LRAMeter adjustable.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Tue, 23 Aug 2016 20:20:59 +0000 (22:20 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 19 Oct 2016 22:55:44 +0000 (00:55 +0200)
lrameter.cpp
lrameter.h
vumeter.cpp
vumeter.h

index 7b0f69189640096e477f1ead62cb783375cd8042..ab3c5c2b925dee19e3045a940eb61e500e6a8075 100644 (file)
@@ -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()));
 
index e2e63ad813cb418b0143783ce33ddc2b1287f748..0b887f96aa1c466edae222a55a63c1036bd392e3 100644 (file)
@@ -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;
 };
index c08e9dcd3f02ead70b39fd7165657b31c8fa1f63..c7f8df467ab3681900205d35fdedbfe115846fbc 100644 (file)
@@ -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);
index 33f8df149d339ce6cfe77b0fe89c0e53c2e469a8..341f60fb3d8c4a49716f3a6c388fdccb27e58961 100644 (file)
--- 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;
 };