new automation state model, sort of working, but not really
[ardour.git] / libs / ardour / utils.cc
index 78e5572a3ddb20aa994a3fe6de687d488f9ab672..d8642486d9e9fb9d15a3c238103dae38b4507c82 100644 (file)
@@ -253,7 +253,7 @@ path_expand (string path)
 #endif
 }
 
-#ifdef HAVE_COREAUDIO
+#if defined(HAVE_COREAUDIO) || defined(HAVE_AUDIOUNITS)
 string 
 CFStringRefToStdString(CFStringRef stringRef)
 {
@@ -271,3 +271,130 @@ CFStringRefToStdString(CFStringRef stringRef)
        return result;
 }
 #endif // HAVE_COREAUDIO
+
+void
+compute_equal_power_fades (nframes_t nframes, float* in, float* out)
+{
+       double step;
+
+       step = 1.0/nframes;
+
+       in[0] = 0.0f;
+       
+       for (nframes_t i = 1; i < nframes - 1; ++i) {
+               in[i] = in[i-1] + step;
+       }
+       
+       in[nframes-1] = 1.0;
+
+       const float pan_law_attenuation = -3.0f;
+       const float scale = 2.0f - 4.0f * powf (10.0f,pan_law_attenuation/20.0f);
+
+       for (unsigned long n = 0; n < nframes; ++n) {
+               float inVal = in[n];
+               float outVal = 1 - inVal;
+               out[n] = outVal * (scale * outVal + 1.0f - scale);
+               in[n] = inVal * (scale * inVal + 1.0f - scale);
+       }
+}
+
+EditMode
+string_to_edit_mode (string str)
+{
+       if (str == _("Splice Edit")) {
+               return Splice;
+       } else if (str == _("Slide Edit")) {
+               return Slide;
+       }
+       fatal << string_compose (_("programming error: unknown edit mode string \"%1\""), str) << endmsg;
+       /*NOTREACHED*/
+       return Slide;
+}
+
+const char*
+edit_mode_to_string (EditMode mode)
+{
+       switch (mode) {
+       case Slide:
+               return _("Slide Edit");
+
+       default:
+       case Splice:
+               return _("Splice Edit");
+       }
+}
+
+SlaveSource
+string_to_slave_source (string str)
+{
+       if (str == _("Internal")) {
+               return None;
+       }
+       
+       if (str == _("MTC")) {
+               return MTC;
+       }
+
+       if (str == _("JACK")) {
+               return JACK;
+       }
+
+       fatal << string_compose (_("programming error: unknown slave source string \"%1\""), str) << endmsg;
+       /*NOTREACHED*/
+       return None;
+}
+
+const char*
+slave_source_to_string (SlaveSource src)
+{
+       switch (src) {
+       case JACK:
+               return _("JACK");
+
+       case MTC:
+               return _("MTC");
+               
+       default:
+       case None:
+               return _("Internal");
+               
+       }
+}
+
+float
+meter_falloff_to_float (MeterFalloff falloff)
+{
+       switch (falloff) {
+       case MeterFalloffOff:
+               return 0.0f;
+       case MeterFalloffSlowest:
+               return 1.0f;
+       case MeterFalloffSlow:
+               return 2.0f;
+       case MeterFalloffMedium:
+               return 3.0f;
+       case MeterFalloffFast:
+               return 4.0f;
+       case MeterFalloffFaster:
+               return 5.0f;
+       case MeterFalloffFastest:
+       default:
+               return 6.0f;
+       }
+}
+
+float
+meter_hold_to_float (MeterHold hold)
+{
+       switch (hold) {
+       case MeterHoldOff:
+               return 0.0f;
+       case MeterHoldShort:
+               return 40.0f;
+       case MeterHoldMedium:
+               return 100.0f;
+       case MeterHoldLong:
+       default:
+               return 200.0f;
+       }
+}