Be more tolerant to missing values or errors in io_config()
[ardour.git] / libs / ardour / parameter_descriptor.cc
index 9fb6b89a0c5548c0ae7aca654d7aab3c7db14a71..bf0c9b7af153fc18c79c90371a1135100e7c7a3f 100644 (file)
@@ -24,7 +24,7 @@
 #include "ardour/types.h"
 #include "ardour/utils.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 namespace ARDOUR {
 
@@ -75,6 +75,7 @@ ParameterDescriptor::ParameterDescriptor(const Evoral::Parameter& parameter)
                normal = 0.0f;
                break;
        case RecEnableAutomation:
+       case RecSafeAutomation:
                lower  = 0.0;
                upper  = 1.0;
                toggled = true;
@@ -157,6 +158,9 @@ ParameterDescriptor::update_steps()
                step      = slider_position_to_gain(largestep / 10.0);
                smallstep = step;
        } else {
+               /* note that LV2Plugin::get_parameter_descriptor ()
+                * overrides this is lv2:rangeStep is set for a port.
+                */
                const float delta = upper - lower;
 
                /* 30 happens to be the total number of steps for a fader with default
@@ -184,4 +188,34 @@ ParameterDescriptor::update_steps()
        }
 }
 
+std::string
+ParameterDescriptor::midi_note_name (const uint8_t b)
+{
+       char buf[8];
+       if (b > 127) {
+               snprintf(buf, sizeof(buf), "%d", b);
+               return buf;
+       }
+
+       static const char* notes[] = {
+               S_("Note|C"),
+               S_("Note|C#"),
+               S_("Note|D"),
+               S_("Note|D#"),
+               S_("Note|E"),
+               S_("Note|F"),
+               S_("Note|F#"),
+               S_("Note|G"),
+               S_("Note|G#"),
+               S_("Note|A"),
+               S_("Note|A#"),
+               S_("Note|B")
+       };
+
+       /* MIDI note 0 is in octave -1 (in scientific pitch notation) */
+       const int octave = b / 12 - 1;
+       snprintf (buf, sizeof (buf), "%s%d", notes[b % 12], octave);
+       return buf;
+}
+
 } // namespace ARDOUR