summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-07 19:31:09 +0200
committerRobin Gareus <robin@gareus.org>2013-07-10 15:27:13 +0200
commit09243a326a430854f81fd3ff3a8c54109e31fd1a (patch)
tree3b701496dabe6d526e0f5d2e45b232bbbedb675c
parent5de0aee2874133dd428640d2e78ae231f3fdd0a8 (diff)
use digital max-peak with RMS meter
-rw-r--r--gtk2_ardour/level_meter.cc2
-rw-r--r--libs/gtkmm2ext/fastmeter.cc13
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/fastmeter.h2
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; }