diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-08 02:26:17 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-10 15:27:14 +0200 |
commit | 7f47c9c5ec7590d64f91641311c79f20f170f493 (patch) | |
tree | 5a57b20abc1bbb072434343674b3d8e9179e69a9 | |
parent | 12780e4c8c144d1b80e3aa0d2de7dadf0155bea4 (diff) |
fix RMS+Peak meter for MIDI-tracks
-rw-r--r-- | gtk2_ardour/level_meter.cc | 7 | ||||
-rw-r--r-- | 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<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(); } |