Example #1
0
        // Use like this:
        // Zebra2Preset.EnvelopeTimeBase timebase = Zebra2Preset.EnvelopeTimeBase.TIMEBASE_1_4;
        // double envValue = 0.0;
        // Zebra2Preset.MillisecondsToEnvTypeAndValue(msValue, out timebase, out envValue);
        public static void MillisecondsToEnvTypeAndValue(float msValue, out EnvelopeTimeBase timeBase, out double envValue)
        {
            // round to nearest 5
            int timeInMs = MathUtils.RoundToNearestInteger( (int) msValue, 5);

            if (timeInMs <= 8000) {
                // use 8sX
                timeBase = Zebra2Preset.EnvelopeTimeBase.TIMEBASE_8sX;
                envValue = MillisecondsToEnvValue(timeInMs, timeBase);
            } else if (timeInMs > 8000 && timeInMs <= 16000) {
                timeBase = Zebra2Preset.EnvelopeTimeBase.TIMEBASE_16sX;
                envValue = MillisecondsToEnvValue(timeInMs, timeBase);
            } else {
                // Zebra2 cannot use more than 16 seconds
                timeBase = Zebra2Preset.EnvelopeTimeBase.TIMEBASE_8sX;
                envValue = 0;
            }
        }
Example #2
0
 public static double EnvTypeAndValueToMilliseconds(EnvelopeTimeBase timeBase, double envValue)
 {
     // Forumla: =1000*((B3/50)^3)
     double ms = 0;
     switch (timeBase) {
         case EnvelopeTimeBase.TIMEBASE_8sX:
             ms = 1000 * ( Math.Pow(envValue / 50, 3) );
             break;
         case EnvelopeTimeBase.TIMEBASE_16sX:
             ms = 2000 * ( Math.Pow(envValue / 50, 3) );
             break;
         case EnvelopeTimeBase.TIMEBASE_10s:
             ms = envValue * 100;
             break;
     }
     return ms;
 }