From 7f47c9c5ec7590d64f91641311c79f20f170f493 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 8 Jul 2013 02:26:17 +0200 Subject: [PATCH] fix RMS+Peak meter for MIDI-tracks --- gtk2_ardour/level_meter.cc | 7 +++---- libs/ardour/meter.cc | 4 ++-- 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::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(); }