provide mechanism for "drop all slaves" for VCA master
[ardour.git] / libs / ardour / parameter_descriptor.cc
index 9a6f5506dc81c7aef3a760b2d52e023963b00bb4..e28dbecd3586afec3875d71c4da92db4e29ee176 100644 (file)
@@ -24,6 +24,8 @@
 #include "ardour/types.h"
 #include "ardour/utils.h"
 
+#include "i18n.h"
+
 namespace ARDOUR {
 
 ParameterDescriptor::ParameterDescriptor(const Evoral::Parameter& parameter)
@@ -43,11 +45,21 @@ ParameterDescriptor::ParameterDescriptor(const Evoral::Parameter& parameter)
        , max_unbound(0)
        , enumeration(false)
 {
+       ScalePoints sp;
+
        switch((AutomationType)parameter.type()) {
        case GainAutomation:
                upper  = Config->get_max_gain();
                normal = 1.0f;
                break;
+       case BusSendLevel:
+               upper = Config->get_max_gain ();
+               normal = 1.0f;
+               break;
+       case BusSendEnable:
+               normal = 1.0f;
+               toggled = true;
+               break;
        case TrimAutomation:
                upper  = 10; // +20dB
                lower  = .1; // -20dB
@@ -63,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;
@@ -92,6 +105,21 @@ ParameterDescriptor::ParameterDescriptor(const Evoral::Parameter& parameter)
                normal = 8192.0;
                upper  = 16383.0;
                break;
+       case PhaseAutomation:
+               toggled = true;
+               break;
+       case MonitoringAutomation:
+               enumeration = true;
+               integer_step = true;
+               lower = MonitorAuto;
+               upper = MonitorDisk; /* XXX bump when we add MonitorCue */
+               break;
+       case SoloIsolateAutomation:
+               toggled = true;
+               break;
+       case SoloSafeAutomation:
+               toggled = true;
+               break;
        default:
                break;
        }
@@ -103,6 +131,7 @@ ParameterDescriptor::ParameterDescriptor()
        : Evoral::ParameterDescriptor()
        , key((uint32_t)-1)
        , datatype(Variant::NOTHING)
+       , type(NullAutomation)
        , unit(NONE)
        , step(0)
        , smallstep(0)
@@ -150,8 +179,8 @@ ParameterDescriptor::update_steps()
                        largestep = largestep / logf(30.0f);
                } else if (integer_step) {
                        smallstep = 1.0;
-                       step      = std::max(1.0, rint(step));
-                       largestep = std::max(1.0, rint(largestep));
+                       step      = std::max(1.f, rintf (step));
+                       largestep = std::max(1.f, rintf (largestep));
                }
        }
 }