implement meter-lineup and VU standard preferences
This commit is contained in:
parent
1e7beb5a31
commit
2faf401fea
|
@ -85,6 +85,34 @@ LevelMeter::set_meter (PeakMeter* meter)
|
|||
}
|
||||
}
|
||||
|
||||
static float meter_lineup(float offset) {
|
||||
switch (Config->get_meter_line_up_level()) {
|
||||
case MeteringLineUp24:
|
||||
return offset + 6.0;
|
||||
case MeteringLineUp20:
|
||||
return offset + 2.0;
|
||||
case MeteringLineUp18:
|
||||
return offset;
|
||||
case MeteringLineUp15:
|
||||
return offset - 3.0;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return offset;
|
||||
}
|
||||
|
||||
static float vu_standard() {
|
||||
// note - default meter config is +2dB (france)
|
||||
switch (Config->get_meter_vu_standard()) {
|
||||
case MeteringVUfrench: // +2dB
|
||||
return 0;
|
||||
case MeteringVUamerican: // 0dB
|
||||
return -2;
|
||||
case MeteringVUstandard: // -4dB
|
||||
return -6;
|
||||
}
|
||||
}
|
||||
|
||||
float
|
||||
LevelMeter::update_meters ()
|
||||
{
|
||||
|
@ -115,18 +143,18 @@ LevelMeter::update_meters ()
|
|||
if (meter_type == MeterPeak) {
|
||||
(*i).meter->set (log_meter (peak));
|
||||
} else if (meter_type == MeterIEC1NOR) {
|
||||
(*i).meter->set (meter_deflect_nordic (peak));
|
||||
(*i).meter->set (meter_deflect_nordic (peak + meter_lineup(0)));
|
||||
} else if (meter_type == MeterIEC1DIN) {
|
||||
(*i).meter->set (meter_deflect_din (peak));
|
||||
(*i).meter->set (meter_deflect_din (peak + meter_lineup(3.0)));
|
||||
} else if (meter_type == MeterIEC2BBC || meter_type == MeterIEC2EBU) {
|
||||
(*i).meter->set (meter_deflect_ppm (peak));
|
||||
(*i).meter->set (meter_deflect_ppm (peak + meter_lineup(0)));
|
||||
} else if (meter_type == MeterVU) {
|
||||
(*i).meter->set (meter_deflect_vu (peak));
|
||||
(*i).meter->set (meter_deflect_vu (peak + vu_standard() + meter_lineup(0)));
|
||||
} else if (meter_type == MeterK14) {
|
||||
(*i).meter->set (meter_deflect_k (peak, 14), meter_deflect_k(_meter->meter_level(n, MeterPeak), 14));
|
||||
} else if (meter_type == MeterK20) {
|
||||
(*i).meter->set (meter_deflect_k (peak, 20), meter_deflect_k(_meter->meter_level(n, MeterPeak), 20));
|
||||
} else {
|
||||
} else { // RMS
|
||||
(*i).meter->set (log_meter (peak), log_meter(_meter->meter_level(n, MeterPeak)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1920,20 +1920,34 @@ RCOptionEditor::RCOptionEditor ()
|
|||
|
||||
ComboOption<MeterLineUp>* mlu = new ComboOption<MeterLineUp> (
|
||||
"meter-line-up-level",
|
||||
_("Meter line-up level"),
|
||||
_("Meter line-up level; 0dBu"),
|
||||
sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_line_up_level),
|
||||
sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_line_up_level)
|
||||
);
|
||||
|
||||
mlu->add (MeteringLineUp24, _("-24dB"));
|
||||
mlu->add (MeteringLineUp20, _("-20dB (SMPTE)"));
|
||||
mlu->add (MeteringLineUp18, _("-18dB (EBU)"));
|
||||
mlu->add (MeteringLineUp15, _("-15dB"));
|
||||
mlu->add (MeteringLineUp24, _("-24dBFS"));
|
||||
mlu->add (MeteringLineUp20, _("-20dBFS (SMPTE)"));
|
||||
mlu->add (MeteringLineUp18, _("-18dBFS (EBU, BBC)"));
|
||||
mlu->add (MeteringLineUp15, _("-15dBFS (DIN)"));
|
||||
|
||||
Gtkmm2ext::UI::instance()->set_tip (mlu->tip_widget(), _("Configure meter-ticks and color-knee point."));
|
||||
Gtkmm2ext::UI::instance()->set_tip (mlu->tip_widget(), _("Configure meter-ticks and color-knee point for dBFS scale DPM, set reference/offset level for IEC PPM."));
|
||||
|
||||
add_option (S_("Preferences|GUI"), mlu);
|
||||
|
||||
|
||||
ComboOption<VUMeterStandard>* mvu = new ComboOption<VUMeterStandard> (
|
||||
"meter-vu-standard",
|
||||
_("VU Meter standard"),
|
||||
sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_vu_standard),
|
||||
sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_vu_standard)
|
||||
);
|
||||
|
||||
mvu->add (MeteringVUfrench, _("+2dB (France)"));
|
||||
mvu->add (MeteringVUamerican, _(" 0dB (North America, Australia)"));
|
||||
mvu->add (MeteringVUstandard, _("-4dB (standard)"));
|
||||
|
||||
add_option (S_("Preferences|GUI"), mvu);
|
||||
|
||||
Gtk::Adjustment *mpk = manage (new Gtk::Adjustment(0, -10, 0, .1, .1));
|
||||
HSliderOption *mpks = new HSliderOption("meter-peak",
|
||||
_("Peak threshold [dBFS]"),
|
||||
|
|
|
@ -149,6 +149,7 @@ CONFIG_VARIABLE (bool, super_rapid_clock_update, "super-rapid-clock-update", fal
|
|||
|
||||
CONFIG_VARIABLE (float, meter_hold, "meter-hold", 100.0f)
|
||||
CONFIG_VARIABLE (float, meter_falloff, "meter-falloff", 32.0f)
|
||||
CONFIG_VARIABLE (VUMeterStandard, meter_vu_standard, "meter-vu-standard", MeteringVUfrench)
|
||||
CONFIG_VARIABLE (MeterLineUp, meter_line_up_level, "meter-line-up-level", MeteringLineUp18)
|
||||
CONFIG_VARIABLE (float, meter_peak, "meter-peak", 0.0f)
|
||||
|
||||
|
|
|
@ -383,6 +383,12 @@ namespace ARDOUR {
|
|||
MeteringRoute ///< meter what is going through the route
|
||||
};
|
||||
|
||||
enum VUMeterStandard {
|
||||
MeteringVUfrench, // + 2
|
||||
MeteringVUamerican, // +-0
|
||||
MeteringVUstandard // -4
|
||||
};
|
||||
|
||||
enum MeterLineUp {
|
||||
MeteringLineUp24,
|
||||
MeteringLineUp20,
|
||||
|
@ -590,6 +596,7 @@ std::istream& operator>>(std::istream& o, ARDOUR::HeaderFormat& sf);
|
|||
std::istream& operator>>(std::istream& o, ARDOUR::AutoConnectOption& sf);
|
||||
std::istream& operator>>(std::istream& o, ARDOUR::EditMode& sf);
|
||||
std::istream& operator>>(std::istream& o, ARDOUR::MonitorModel& sf);
|
||||
std::istream& operator>>(std::istream& o, ARDOUR::VUMeterStandard& sf);
|
||||
std::istream& operator>>(std::istream& o, ARDOUR::MeterLineUp& sf);
|
||||
std::istream& operator>>(std::istream& o, ARDOUR::PFLPosition& sf);
|
||||
std::istream& operator>>(std::istream& o, ARDOUR::AFLPosition& sf);
|
||||
|
@ -612,6 +619,7 @@ std::ostream& operator<<(std::ostream& o, const ARDOUR::HeaderFormat& sf);
|
|||
std::ostream& operator<<(std::ostream& o, const ARDOUR::AutoConnectOption& sf);
|
||||
std::ostream& operator<<(std::ostream& o, const ARDOUR::EditMode& sf);
|
||||
std::ostream& operator<<(std::ostream& o, const ARDOUR::MonitorModel& sf);
|
||||
std::ostream& operator<<(std::ostream& o, const ARDOUR::VUMeterStandard& sf);
|
||||
std::ostream& operator<<(std::ostream& o, const ARDOUR::MeterLineUp& sf);
|
||||
std::ostream& operator<<(std::ostream& o, const ARDOUR::PFLPosition& sf);
|
||||
std::ostream& operator<<(std::ostream& o, const ARDOUR::AFLPosition& sf);
|
||||
|
|
|
@ -62,6 +62,7 @@ setup_enum_writer ()
|
|||
ColorMode _ColorMode;
|
||||
MeterFalloff _MeterFalloff;
|
||||
MeterHold _MeterHold;
|
||||
VUMeterStandard _VUMeterStandard;
|
||||
MeterLineUp _MeterLineUp;
|
||||
EditMode _EditMode;
|
||||
RegionPoint _RegionPoint;
|
||||
|
@ -222,6 +223,11 @@ setup_enum_writer ()
|
|||
REGISTER_ENUM (MeterHoldLong);
|
||||
REGISTER (_MeterHold);
|
||||
|
||||
REGISTER_ENUM (MeteringVUfrench);
|
||||
REGISTER_ENUM (MeteringVUamerican);
|
||||
REGISTER_ENUM (MeteringVUstandard);
|
||||
REGISTER (_VUMeterStandard);
|
||||
|
||||
REGISTER_ENUM (MeteringLineUp24);
|
||||
REGISTER_ENUM (MeteringLineUp20);
|
||||
REGISTER_ENUM (MeteringLineUp18);
|
||||
|
@ -675,6 +681,20 @@ std::ostream& operator<<(std::ostream& o, const MonitorModel& var)
|
|||
return o << s;
|
||||
}
|
||||
|
||||
std::istream& operator>>(std::istream& o, VUMeterStandard& var)
|
||||
{
|
||||
std::string s;
|
||||
o >> s;
|
||||
var = (VUMeterStandard) string_2_enum (s, var);
|
||||
return o;
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& o, const VUMeterStandard& var)
|
||||
{
|
||||
std::string s = enum_2_string (var);
|
||||
return o << s;
|
||||
}
|
||||
|
||||
std::istream& operator>>(std::istream& o, MeterLineUp& var)
|
||||
{
|
||||
std::string s;
|
||||
|
|
Loading…
Reference in New Issue