highlight meter-background of a port that has peaked (experiment)

This commit is contained in:
Robin Gareus 2013-07-06 16:32:36 +02:00
parent 03a510c3d7
commit 413b996a2c
2 changed files with 13 additions and 7 deletions

View File

@ -100,19 +100,21 @@ LevelMeter::update_meters ()
for (n = 0, i = meters.begin(); i != meters.end(); ++i, ++n) { for (n = 0, i = meters.begin(); i != meters.end(); ++i, ++n) {
if ((*i).packed) { if ((*i).packed) {
mpeak = _meter->max_peak_power(n);
if (mpeak > (*i).max_peak) {
(*i).max_peak = mpeak;
(*i).meter->set_highlight(mpeak > Config->get_meter_peak());
}
if (mpeak > max_peak) {
max_peak = mpeak;
}
peak = _meter->peak_power (n); peak = _meter->peak_power (n);
if (n < nmidi) { if (n < nmidi) {
(*i).meter->set (peak); (*i).meter->set (peak);
} else { } else {
(*i).meter->set (log_meter (peak)); (*i).meter->set (log_meter (peak));
} }
mpeak = _meter->max_peak_power(n);
if (mpeak > max_peak) {
max_peak = mpeak;
}
if (mpeak > max_peak) {
max_peak = mpeak;
}
} }
} }
return max_peak; return max_peak;
@ -293,6 +295,8 @@ void LevelMeter::clear_meters ()
{ {
for (vector<MeterInfo>::iterator i = meters.begin(); i < meters.end(); i++) { for (vector<MeterInfo>::iterator i = meters.begin(); i < meters.end(); i++) {
(*i).meter->clear(); (*i).meter->clear();
(*i).max_peak = minus_infinity();
(*i).meter->set_highlight(false);
} }
max_peak = minus_infinity(); max_peak = minus_infinity();
} }

View File

@ -80,12 +80,14 @@ class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr
gint16 width; gint16 width;
int length; int length;
bool packed; bool packed;
float max_peak;
MeterInfo() { MeterInfo() {
meter = 0; meter = 0;
width = 0; width = 0;
length = 0; length = 0;
packed = false; packed = false;
max_peak = -INFINITY;
} }
}; };