fix RMS+Peak meter for MIDI-tracks

This commit is contained in:
Robin Gareus 2013-07-08 02:26:17 +02:00
parent 12780e4c8c
commit 7f47c9c5ec
2 changed files with 5 additions and 6 deletions

View File

@ -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 {

View File

@ -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();
}