summaryrefslogtreecommitdiff
path: root/gtk2_ardour/level_meter.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-04-25 06:46:56 +0200
committerRobin Gareus <robin@gareus.org>2015-04-25 06:46:56 +0200
commit517211681ef288b6c31c5f6c3a66eef52772926b (patch)
treef79f9e51fb7a028a093bbcf7f64556ec9762d465 /gtk2_ardour/level_meter.cc
parent75087f5c62dd8d8796b23d875234e764c3ce687f (diff)
0dBFS peak meter GUI
Diffstat (limited to 'gtk2_ardour/level_meter.cc')
-rw-r--r--gtk2_ardour/level_meter.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc
index 62556c801a..7bb61a7cbc 100644
--- a/gtk2_ardour/level_meter.cc
+++ b/gtk2_ardour/level_meter.cc
@@ -150,6 +150,8 @@ LevelMeterBase::update_meters ()
const float peak = _meter->meter_level (n, meter_type);
if (meter_type == MeterPeak) {
(*i).meter->set (log_meter (peak));
+ } else if (meter_type == MeterPeak0dB) {
+ (*i).meter->set (log_meter0dB (peak));
} else if (meter_type == MeterIEC1NOR) {
(*i).meter->set (meter_deflect_nordic (peak + meter_lineup(0)));
} else if (meter_type == MeterIEC1DIN) {
@@ -374,6 +376,25 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width)
c[0] = c[2] = c[3] = c[4] = c[5] = c[1];
c[7] = c[8] = c[9] = c[6];
break;
+ case MeterPeak0dB:
+ stp[1] = 115.0 * log_meter0dB(-10);
+ stp[2] = 115.0 * log_meter0dB(-3);
+ stp[3] = 115.0 * log_meter0dB(0);
+ switch (ARDOUR_UI::config()->get_meter_line_up_level()) {
+ case MeteringLineUp24:
+ stp[0] = 115.0 * log_meter0dB(-24);
+ break;
+ case MeteringLineUp20:
+ stp[0] = 115.0 * log_meter0dB(-20);
+ break;
+ default:
+ case MeteringLineUp18:
+ stp[0] = 115.0 * log_meter0dB(-18);
+ break;
+ case MeteringLineUp15:
+ stp[0] = 115.0 * log_meter0dB(-15);
+ }
+ break;
default: // PEAK, RMS
stp[1] = 77.5; // 115 * log_meter(-10)
stp[2] = 92.5; // 115 * log_meter(-3)