diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-07 19:31:09 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-10 15:27:13 +0200 |
commit | 09243a326a430854f81fd3ff3a8c54109e31fd1a (patch) | |
tree | 3b701496dabe6d526e0f5d2e45b232bbbedb675c | |
parent | 5de0aee2874133dd428640d2e78ae231f3fdd0a8 (diff) |
use digital max-peak with RMS meter
-rw-r--r-- | gtk2_ardour/level_meter.cc | 2 | ||||
-rw-r--r-- | libs/gtkmm2ext/fastmeter.cc | 13 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/fastmeter.h | 2 |
3 files changed, 11 insertions, 6 deletions
diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc index 3d91b75878..0035785b61 100644 --- a/gtk2_ardour/level_meter.cc +++ b/gtk2_ardour/level_meter.cc @@ -113,7 +113,7 @@ LevelMeter::update_meters () if (n < nmidi) { (*i).meter->set (peak); } else { - (*i).meter->set (log_meter (peak)); + (*i).meter->set (log_meter (peak), log_meter(_meter->meter_level(n, MeterPeak))); } } } diff --git a/libs/gtkmm2ext/fastmeter.cc b/libs/gtkmm2ext/fastmeter.cc index 3dd88e6929..4dbb4cd590 100644 --- a/libs/gtkmm2ext/fastmeter.cc +++ b/libs/gtkmm2ext/fastmeter.cc @@ -431,21 +431,26 @@ FastMeter::vertical_expose (GdkEventExpose* ev) } void -FastMeter::set (float lvl) +FastMeter::set (float lvl, float peak) { float old_level = current_level; float old_peak = current_peak; + float peak_lvl = peak; + + if (peak_lvl == -1) { + peak_lvl = lvl; + } current_level = lvl; - if (lvl > current_peak) { - current_peak = lvl; + if (peak_lvl >= current_peak) { + current_peak = peak_lvl; hold_state = hold_cnt; } if (hold_state > 0) { if (--hold_state == 0) { - current_peak = lvl; + current_peak = peak_lvl; } } diff --git a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h index 026289c9d3..e16112d557 100644 --- a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h +++ b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h @@ -51,7 +51,7 @@ class FastMeter : public Gtk::DrawingArea { ); virtual ~FastMeter (); - void set (float level); + void set (float level, float peak = -1); void clear (); float get_level() { return current_level; } |