/// <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; }
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); }
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); }
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); }
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; }