From ceaf237fe7697293d4744e15bf74282a45933fc6 Mon Sep 17 00:00:00 2001 From: Thomas Lange Date: Mon, 6 Jan 2025 22:30:10 +0100 Subject: [PATCH] vumeter[-qt]: Do some cleanup work --- configure.ac | 1 + meson.build | 1 + meson_options.txt | 2 +- src/meson.build | 5 +++- src/vumeter-qt/vumeter_qt_widget.cc | 44 ++++------------------------- src/vumeter/vumeter.cc | 4 +-- 6 files changed, 14 insertions(+), 43 deletions(-) diff --git a/configure.ac b/configure.ac index 796a1bceb..2a0d85b92 100644 --- a/configure.ac +++ b/configure.ac @@ -873,6 +873,7 @@ if test "x$USE_GTK" = "xyes" ; then echo " Search Tool: yes" echo " Spectrum Analyzer (2D): yes" echo " Status Icon: yes" + echo " VU Meter: yes" echo " X11 Global Hotkeys: $have_hotkey" echo " X11 On-Screen Display (aosd): $have_aosd" echo diff --git a/meson.build b/meson.build index baf10630b..063a12686 100644 --- a/meson.build +++ b/meson.build @@ -331,6 +331,7 @@ if meson.version().version_compare('>= 0.53') 'Search Tool': true, 'Spectrum Analyzer (2D)': true, 'Status Icon': true, + 'VU Meter': get_option('vumeter'), 'X11 Global Hotkeys': get_variable('have_hotkey', false), 'X11 On-Screen Display (aosd)': get_variable('have_aosd', false), }, section: 'GTK Support') diff --git a/meson_options.txt b/meson_options.txt index fbef006bb..578bdba62 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -123,7 +123,7 @@ option('speedpitch', type: 'boolean', value: true, option('gl-spectrum', type: 'boolean', value: true, description: 'Whether the OpenGL spectrum visualization plugin is enabled') option('vumeter', type: 'boolean', value: true, - description: 'Whether the VUMeter visualization plugin is enabled') + description: 'Whether the VU Meter visualization plugin is enabled') # interface plugins diff --git a/src/meson.build b/src/meson.build index 6220e2210..2c4423372 100644 --- a/src/meson.build +++ b/src/meson.build @@ -147,7 +147,6 @@ if conf.has('USE_GTK') subdir('search-tool') subdir('skins') subdir('statusicon') - subdir('vumeter') if get_option('aosd') subdir('aosd') @@ -160,6 +159,10 @@ if conf.has('USE_GTK') if get_option('hotkey') subdir('hotkey') endif + + if get_option('vumeter') + subdir('vumeter') + endif endif diff --git a/src/vumeter-qt/vumeter_qt_widget.cc b/src/vumeter-qt/vumeter_qt_widget.cc index c55e5cb70..e4a09735d 100644 --- a/src/vumeter-qt/vumeter_qt_widget.cc +++ b/src/vumeter-qt/vumeter_qt_widget.cc @@ -36,40 +36,24 @@ float VUMeterQtWidget::get_db_on_range(float db) float VUMeterQtWidget::get_db_factor(float db) { - float factor = 0.0f; + float factor; if (db < -db_range) - { factor = 0.0f; - } else if (db < -60.0f) - { factor = (db + db_range) * 2.5f/(db_range-60); - } else if (db < -50.0f) - { factor = (db + 60.0f) * 0.5f + 2.5f; - } else if (db < -40.0f) - { factor = (db + 50.0f) * 0.75f + 7.5f; - } else if (db < -30.0f) - { factor = (db + 40.0f) * 1.5f + 15.0f; - } else if (db < -20.0f) - { factor = (db + 30.0f) * 2.0f + 30.0f; - } else if (db < 0.0f) - { factor = (db + 20.0f) * 2.5f + 50.0f; - } else - { factor = 100.0f; - } return factor / 100.0f; } @@ -86,7 +70,7 @@ float VUMeterQtWidget::get_y_from_db(float db) void VUMeterQtWidget::render_multi_pcm (const float * pcm, int channels) { - nchannels = aud::clamp(channels, 0, max_channels); + nchannels = aud::clamp(channels, 1, max_channels); float * peaks = new float[nchannels]; for (int channel = 0; channel < nchannels; channel++) @@ -105,9 +89,7 @@ void VUMeterQtWidget::render_multi_pcm (const float * pcm, int channels) for (int i = 0; i < nchannels; i++) { float n = peaks[i]; - - float db = 20 * log10f(n); - db = get_db_on_range(db); + float db = get_db_on_range(20 * log10f(n)); if (db > channels_db_level[i]) { @@ -195,20 +177,12 @@ void VUMeterQtWidget::draw_vu_legend(QPainter & p) p.setPen(pen); for (int i = 0; i >= -60; i--) { + draw_vu_legend_line(p, i); + if (i > -30) - { - draw_vu_legend_line(p, i); draw_vu_legend_line(p, i - 0.5, 0.5); - } - else if (i > -40) - { - draw_vu_legend_line(p, i); - } - else if (i >= -60) - { - draw_vu_legend_line(p, i); + else if (i <= -40) i -= 1; - } } draw_vu_legend_line(p, -db_range); } @@ -310,17 +284,11 @@ void VUMeterQtWidget::draw_visualizer(QPainter & p) QString VUMeterQtWidget::format_db(const float val) { if (val > -10) - { return QString::number(val, 'f', 1); - } else if (val > -db_range) - { return QString::number(val, 'f', 0); - } else - { return QString("-inf"); - } } float VUMeterQtWidget::get_bar_width(int channels) diff --git a/src/vumeter/vumeter.cc b/src/vumeter/vumeter.cc index 4df5e9292..e27746323 100644 --- a/src/vumeter/vumeter.cc +++ b/src/vumeter/vumeter.cc @@ -300,9 +300,7 @@ static void draw_legend (cairo_t * cr) if (i > -30) draw_vu_legend_line (cr, i - 0.5, 0.5); - else if (i > -40) {} - // no-op - else if (i >= -60) + else if (i <= -40) i -= 1; }