summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-08 02:26:17 +0200
committerRobin Gareus <robin@gareus.org>2013-07-10 15:27:14 +0200
commit7f47c9c5ec7590d64f91641311c79f20f170f493 (patch)
tree5a57b20abc1bbb072434343674b3d8e9179e69a9
parent12780e4c8c144d1b80e3aa0d2de7dadf0155bea4 (diff)
fix RMS+Peak meter for MIDI-tracks
-rw-r--r--gtk2_ardour/level_meter.cc7
-rw-r--r--libs/ardour/meter.cc4
2 files changed, 5 insertions, 6 deletions
diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc
index 1a5edc8472..6a120fdb80 100644
--- a/gtk2_ardour/level_meter.cc
+++ b/gtk2_ardour/level_meter.cc
@@ -90,7 +90,6 @@ LevelMeter::update_meters ()
{
vector<MeterInfo>::iterator i;
uint32_t n;
- float peak, mpeak;
if (!_meter) {
return 0.0f;
@@ -100,7 +99,7 @@ LevelMeter::update_meters ()
for (n = 0, i = meters.begin(); i != meters.end(); ++i, ++n) {
if ((*i).packed) {
- mpeak = _meter->meter_level(n, MeterMaxPeak);
+ const float mpeak = _meter->meter_level(n, MeterMaxPeak);
if (mpeak > (*i).max_peak) {
(*i).max_peak = mpeak;
(*i).meter->set_highlight(mpeak > Config->get_meter_peak());
@@ -109,10 +108,10 @@ LevelMeter::update_meters ()
max_peak = mpeak;
}
- peak = _meter->meter_level (n, meter_type);
if (n < nmidi) {
- (*i).meter->set (peak);
+ (*i).meter->set (_meter->meter_level (n, MeterPeak));
} else {
+ const float peak = _meter->meter_level (n, meter_type);
if (meter_type == MeterPeak) {
(*i).meter->set (log_meter (peak));
} else {
diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc
index 9871b582c0..41500c7cb0 100644
--- a/libs/ardour/meter.cc
+++ b/libs/ardour/meter.cc
@@ -282,8 +282,8 @@ PeakMeter::meter_level(uint32_t n, MeterType type) {
case MeterKrms:
{
const uint32_t n_midi = current_meters.n_midi();
- if ((n - n_midi) < _kmeter.size()) {
- return fast_coefficient_to_dB(_kmeter[n]->read());
+ if ((n - n_midi) < _kmeter.size() && (n - n_midi) >= 0) {
+ return fast_coefficient_to_dB (_kmeter[n-n_midi]->read());
}
return minus_infinity();
}