summaryrefslogtreecommitdiff
path: root/gtk2_ardour/meter_patterns.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-25 13:06:58 +0200
committerRobin Gareus <robin@gareus.org>2013-07-25 13:06:58 +0200
commit90ea64d1fc9e64347aca9df8c64ff0aeb674410d (patch)
tree9b4d284d4c99b47096a3bc779190fed9954119a4 /gtk2_ardour/meter_patterns.cc
parent5ad4b3cd7aed0b6f1a9b058efcb2038462de3df8 (diff)
set midi-metric ticks depending on meter-type
Diffstat (limited to 'gtk2_ardour/meter_patterns.cc')
-rw-r--r--gtk2_ardour/meter_patterns.cc58
1 files changed, 45 insertions, 13 deletions
diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc
index ccca931f11..c86fb88291 100644
--- a/gtk2_ardour/meter_patterns.cc
+++ b/gtk2_ardour/meter_patterns.cc
@@ -505,6 +505,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
bool tickleft, tickright;
bool background;
+ int overlay_midi = 1;
gint width, height;
win->get_size (width, height);
@@ -564,30 +565,31 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
height = min(max_pattern_metric_size, height);
uint32_t peakcolor = ARDOUR_UI::config()->color_by_name ("meterbridge peaklabel");
- Gdk::Color c;
+ Gdk::Color c; // default text color
for (vector<DataType>::const_iterator i = types.begin(); i != types.end(); ++i) {
+ if (types.size() > 1 && (*i) == DataType::MIDI && overlay_midi == 0) {
+ continue;
+ }
+
if (types.size() > 1 && (*i) == DataType::MIDI) {
/* we're overlaying more than 1 set of marks, so use different colours */
c = w.get_style()->get_fg (Gtk::STATE_ACTIVE);
} else if (background) {
set_fg_color(w, type, &c);
- cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p());
} else {
c = w.get_style()->get_fg (Gtk::STATE_NORMAL);
}
- cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p());
-
- // label-pos in dBFS, label-text
- std::map<float,string> points;
+ std::map<float,string> points; // map: label-pos in dBFS, label-text
switch (*i) {
case DataType::AUDIO:
layout->set_attributes (audio_font_attributes);
switch (type) {
case MeterK14:
+ overlay_midi = 0;
points.insert (std::pair<float,string>(-54.0f, "-40"));
points.insert (std::pair<float,string>(-44.0f, "-30"));
points.insert (std::pair<float,string>(-34.0f, "-20"));
@@ -601,6 +603,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
points.insert (std::pair<float,string>( 0.0f, "+14"));
break;
case MeterK20:
+ overlay_midi = 0;
points.insert (std::pair<float,string>(-60.0f, "-40"));
points.insert (std::pair<float,string>(-50.0f, "-30"));
points.insert (std::pair<float,string>(-40.0f, "-20"));
@@ -638,6 +641,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
break;
case MeterIEC2EBU:
+ overlay_midi = 3;
points.insert (std::pair<float,string>(-30.0f, "-12"));
points.insert (std::pair<float,string>(-26.0f, "-8"));
points.insert (std::pair<float,string>(-22.0f, "-4"));
@@ -648,6 +652,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
break;
case MeterIEC2BBC:
+ overlay_midi = 3;
points.insert (std::pair<float,string>(-30.0f, " 1 "));
points.insert (std::pair<float,string>(-26.0f, " 2 "));
points.insert (std::pair<float,string>(-22.0f, " 3 "));
@@ -658,6 +663,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
break;
case MeterIEC1NOR:
+ overlay_midi = 0;
//points.insert (std::pair<float,string>(-60.0f, "-42"));
points.insert (std::pair<float,string>(-54.0f, "-36"));
points.insert (std::pair<float,string>(-48.0f, "-30"));
@@ -678,6 +684,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
break;
case MeterIEC1DIN:
+ overlay_midi = 2;
//points.insert (std::pair<float,string>( -3.0f, "200%"));
points.insert (std::pair<float,string>( -4.0f, "+5")); // "100%"
points.insert (std::pair<float,string>( -9.0f, "0"));
@@ -693,6 +700,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
break;
case MeterVU:
+ overlay_midi = 0;
points.insert (std::pair<float,string>(-17.0f, "+3"));
points.insert (std::pair<float,string>(-18.0f, "+2"));
points.insert (std::pair<float,string>(-19.0f, "+1"));
@@ -709,8 +717,8 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
break;
case DataType::MIDI:
layout->set_attributes (midi_font_attributes);
- points.insert (std::pair<float,string>( 0, "0"));
if (types.size() == 1) {
+ points.insert (std::pair<float,string>( 0, "0"));
points.insert (std::pair<float,string>( 16, "16"));
points.insert (std::pair<float,string>( 32, "32"));
points.insert (std::pair<float,string>( 48, "48"));
@@ -720,12 +728,36 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
points.insert (std::pair<float,string>(100, "100"));
points.insert (std::pair<float,string>(112, "112"));
} else {
- /* labels that don't overlay with dB */
- points.insert (std::pair<float,string>( 24, "24"));
- points.insert (std::pair<float,string>( 48, "48"));
- points.insert (std::pair<float,string>( 72, "74"));
+ switch (overlay_midi) {
+ case 1:
+ /* labels that don't overlay with dBFS */
+ points.insert (std::pair<float,string>( 0, "0"));
+ points.insert (std::pair<float,string>( 24, "24"));
+ points.insert (std::pair<float,string>( 48, "48"));
+ points.insert (std::pair<float,string>( 72, "72"));
+ points.insert (std::pair<float,string>(127, "127"));
+ break;
+ case 2:
+ /* labels that don't overlay with DIN */
+ points.insert (std::pair<float,string>( 0, "0"));
+ points.insert (std::pair<float,string>( 16, "16"));
+ points.insert (std::pair<float,string>( 40, "40"));
+ points.insert (std::pair<float,string>( 64, "64"));
+ points.insert (std::pair<float,string>(112, "112"));
+ points.insert (std::pair<float,string>(127, "127"));
+ break;
+ case 3:
+ /* labels that don't overlay with BBC nor EBU*/
+ points.insert (std::pair<float,string>( 0, "0"));
+ points.insert (std::pair<float,string>( 16, "16"));
+ points.insert (std::pair<float,string>( 56, "56"));
+ points.insert (std::pair<float,string>( 72, "72"));
+ points.insert (std::pair<float,string>(112, "112"));
+ points.insert (std::pair<float,string>(127, "127"));
+ default:
+ break;
+ }
}
- points.insert (std::pair<float,string>(127, "127"));
break;
}
@@ -800,7 +832,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types)
}
// add legend
- if (types.size() == 1) {
+ if (types.size() == 1 || overlay_midi == 0) {
int tw, th;
layout->set_attributes (unit_font_attributes);
switch (types.at(0)) {