Example #1
0
 /// <summary>
 /// Constructor for adding a route and adding the ToPinId
 /// </summary>
 /// <param name="fromPinId"></param>
 /// <param name="toPinId"></param>
 /// <param name="state"></param>
 /// <param name="polarity"></param>
 /// <param name="name"></param>
 public Pin(int fromPinId, int toPinId, int parentNodeId, StateEnum state = StateEnum.OFF, PolarityEnum polarity = PolarityEnum.POS, string name = "")
 {
     PinId = fromPinId;
     Name  = string.IsNullOrEmpty(name)
         ? $"{GetType().Name}{nameof(Pin)}{PinId}"
         : $"{name}{PinId}";
     State        = state;
     Polarity     = polarity;
     ParentNodeId = parentNodeId;
 }
Example #2
0
        public Pin(int parentNodeId, StateEnum state = StateEnum.OFF, PolarityEnum polarity = PolarityEnum.POS, string name = "")
        {
            PinId = UniqueIdGenerator.GeneratePinId();
            Name  = string.IsNullOrEmpty(name)
                ? $"{GetType().Name}{nameof(Pin)}{PinId}"
                : $"{name}{PinId}";
            State    = state;
            Polarity = polarity;

            ParentNodeId = parentNodeId;
        }
        public ModulatorType(BinaryReader reader)
        {
            ushort raw = reader.ReadUInt16();

            if ((raw & 0x0200) == 0x0200)
                polarity = PolarityEnum.Bipolar;
            else
                polarity = PolarityEnum.Unipolar;
            if ((raw & 0x0100) == 0x0100)
                direction = DirectionEnum.MaxToMin;
            else
                direction = DirectionEnum.MinToMax;
            midiContinuousController = ((raw & 0x0080) == 0x0080);
            sourceType = (SourceTypeEnum)((raw & (0xFC00)) >> 10);
            controllerSource = (ushort)(raw & 0x007F);
        }
Example #4
0
        public ModulatorType(BinaryReader reader)
        {
            ushort raw = reader.ReadUInt16();

            if ((raw & 0x0200) == 0x0200)
            {
                polarity = PolarityEnum.Bipolar;
            }
            else
            {
                polarity = PolarityEnum.Unipolar;
            }
            if ((raw & 0x0100) == 0x0100)
            {
                direction = DirectionEnum.MaxToMin;
            }
            else
            {
                direction = DirectionEnum.MinToMax;
            }
            midiContinuousController = ((raw & 0x0080) == 0x0080);
            sourceType       = (SourceTypeEnum)((raw & (0xFC00)) >> 10);
            controllerSource = (ushort)(raw & 0x007F);
        }
Example #5
0
        private static double CalculateModulator(SourceTypeEnum s, TransformEnum t, DirectionEnum d, PolarityEnum p, int value, int min, int max)
        {
            double output = 0;
            int    i;

            value = value - min;
            max   = max - min;
            if (d == DirectionEnum.MaxToMin)
            {
                value = max - value;
            }
            switch (s)
            {
            case SourceTypeEnum.Linear:
                output = value / max;
                break;

            case SourceTypeEnum.Concave:
                i      = 127 - value;
                output = -(20.0 / 96.0) * Math.Log10((i * i) / (double)(max * max));
                break;

            case SourceTypeEnum.Convex:
                i      = value;
                output = 1 + (20.0 / 96.0) * Math.Log10((i * i) / (double)(max * max));
                break;

            case SourceTypeEnum.Switch:
                if (value <= (max / 2))
                {
                    output = 0;
                }
                else
                {
                    output = 1;
                }
                break;
            }
            if (p == PolarityEnum.Bipolar)
            {
                output = (output * 2) - 1;
            }
            if (t == TransformEnum.AbsoluteValue)
            {
                output = Math.Abs(output);
            }
            return(output);
        }
Example #6
0
 private static double CalculateModulator(SourceTypeEnum s, TransformEnum t, DirectionEnum d, PolarityEnum p, int value, int min, int max)
 {
     double output = 0;
     int i;
     value = value - min;
     max = max - min;
     if (d == DirectionEnum.MaxToMin)
         value = max - value;
     switch (s)
     {
         case SourceTypeEnum.Linear:
             output = value / max;
             break;
         case SourceTypeEnum.Concave:
             i = 127 - value;
             output = -(20.0 / 96.0) * Math.Log10((i * i) / (double)(max * max));
             break;
         case SourceTypeEnum.Convex:
             i = value;
             output = 1 + (20.0 / 96.0) * Math.Log10((i * i) / (double)(max * max));
             break;
         case SourceTypeEnum.Switch:
             if (value <= (max / 2))
                 output = 0;
             else
                 output = 1;
             break;
     }
     if (p == PolarityEnum.Bipolar)
         output = (output * 2) - 1;
     if (t == TransformEnum.AbsoluteValue)
         output = Math.Abs(output);
     return output;
 }