diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index d6d06946cb..55a352136d 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -24,6 +24,7 @@ #include "ardour/session_route.h" #include "ardour/dB.h" #include "ardour/utils.h" +#include "ardour/rc_configuration.h" #include #include @@ -72,6 +73,9 @@ GainMeter::GainMeter (Session* s, const std::string& layout_script_file) , gain_display_entry (get_entry ("gain_display_entry")) , gain_display_button (get_waves_button ("gain_display_button")) , peak_display_button (get_waves_button ("peak_display_button")) + , _peak_level_1_color (Gdk::Color(xml_property (*xml_tree ()->root (), "peak_level_1_color", "#ff0000"))) + , _peak_level_2_color (Gdk::Color(xml_property (*xml_tree ()->root (), "peak_level_2_color", "#ffff00"))) + , _peak_level_3_color (Gdk::Color(xml_property (*xml_tree ()->root (), "peak_level_3_color", "#262626"))) , level_meter_home (get_box ("level_meter_home")) , level_meter (_session) , _data_type (DataType::AUDIO) @@ -339,7 +343,8 @@ GainMeter::reset_peak_display () level_meter.clear_meters(); max_peak = -INFINITY; peak_display_button.set_text (_("-inf")); - peak_display_button.set_active_state(Gtkmm2ext::Off); + peak_display_button.modify_bg(Gtk::STATE_NORMAL, _peak_level_3_color); + peak_display_button.modify_bg(Gtk::STATE_ACTIVE, _peak_level_3_color); } void @@ -916,6 +921,12 @@ GainMeter::_astyle_string (AutoStyle style, bool shrt) } } +namespace { + float round_to_tenths (float value) { + return (float)((int)(value*10))/10; + } +} + void GainMeter::update_meters() { @@ -926,15 +937,26 @@ GainMeter::update_meters() max_peak = mpeak; if (mpeak <= Config->get_numeric_peak_min_treshold()) { peak_display_button.set_text (_("-inf")); + peak_display_button.modify_bg(Gtk::STATE_NORMAL, _peak_level_3_color); + peak_display_button.modify_bg(Gtk::STATE_ACTIVE, _peak_level_3_color); } else { + mpeak = round_to_tenths (mpeak); + snprintf (buf, sizeof(buf), "%.1f", mpeak); peak_display_button.set_text (buf); + Gdk::Color color; + if (mpeak <= Config->get_meter_peak_2()) { + color = _peak_level_3_color; + } else if (mpeak < Config->get_meter_peak()) { + color = _peak_level_2_color; + } else { + color = _peak_level_1_color; + } + + peak_display_button.modify_bg(Gtk::STATE_NORMAL, color); + peak_display_button.modify_bg(Gtk::STATE_ACTIVE, color); } } - if (mpeak >= Config->get_meter_peak()) { - //peak_display_button.set_name ("MixerStripPeakDisplayPeak"); - peak_display_button.set_active_state(Gtkmm2ext::ExplicitActive); - } } void GainMeter::color_handler(bool /*dpi*/) diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index 7af3da0165..e3d0171bfe 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -123,6 +123,9 @@ class GainMeter : virtual public sigc::trackable, ARDOUR::SessionHandlePtr, publ Gtk::Entry& gain_display_entry; WavesButton& gain_display_button; WavesButton& peak_display_button; + Gdk::Color _peak_level_1_color; + Gdk::Color _peak_level_2_color; + Gdk::Color _peak_level_3_color; Gtk::Box& level_meter_home; LevelMeterHBox level_meter; diff --git a/gtk2_ardour/ui/inspector_gain_meter.xml b/gtk2_ardour/ui/inspector_gain_meter.xml index 2ea91a8d6b..a19972be7e 100644 --- a/gtk2_ardour/ui/inspector_gain_meter.xml +++ b/gtk2_ardour/ui/inspector_gain_meter.xml @@ -1,6 +1,9 @@ + thinmeterwidth="6" + peak_level_1_color="#FE0E0E" + peak_level_2_color="#FEFE0E" + peak_level_3_color="#262626"> diff --git a/gtk2_ardour/ui/meter_strip_gain_meter.xml b/gtk2_ardour/ui/meter_strip_gain_meter.xml index 273fc6c5fa..c0d90f80a8 100644 --- a/gtk2_ardour/ui/meter_strip_gain_meter.xml +++ b/gtk2_ardour/ui/meter_strip_gain_meter.xml @@ -1,6 +1,9 @@ + thinmeterwidth="5" + peak_level_1_color="#FE0E0E" + peak_level_2_color="#FEFE0E" + peak_level_3_color="#262626"> @@ -11,7 +14,7 @@ winfont="Arial Bold 9" macfont="Helvetica Bold 9" bgnormal="#262626" - bgactive="#FE0E0E" + bgactive="#262626" fgnormal="#afafaf" fgactive="#afafaf" bghover="#C47474"/> diff --git a/gtk2_ardour/ui/mixer_gain_meter.xml b/gtk2_ardour/ui/mixer_gain_meter.xml index c5802d5749..f39843ae63 100644 --- a/gtk2_ardour/ui/mixer_gain_meter.xml +++ b/gtk2_ardour/ui/mixer_gain_meter.xml @@ -1,6 +1,9 @@ + thinmeterwidth="6" + peak_level_1_color="#FE0E0E" + peak_level_2_color="#FEFE0E" + peak_level_3_color="#262626"> + thinmeterwidth="3" + peak_level_1_color="#FE0E0E" + peak_level_2_color="#FEFE0E" + peak_level_3_color="#262626"> diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 25ecd51537..d35bdf4f8c 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -171,6 +171,7 @@ CONFIG_VARIABLE (VUMeterStandard, meter_vu_standard, "meter-vu-standard", Meteri CONFIG_VARIABLE (MeterLineUp, meter_line_up_level, "meter-line-up-level", MeteringLineUp18) CONFIG_VARIABLE (MeterLineUp, meter_line_up_din, "meter-line-up-din", MeteringLineUp15) CONFIG_VARIABLE (float, meter_peak, "meter-peak", 0.0f) +CONFIG_VARIABLE (float, meter_peak_2, "meter_peak_2", -6.0f) CONFIG_VARIABLE (float, numeric_peak_min_treshold, "numeric-peak-min-treshold", -144.4f) CONFIG_VARIABLE (bool, meter_style_led, "meter-style-led", true) CONFIG_VARIABLE (bool, show_editor_meter, "show-editor-meter", true)