public static void CreateRampWithEvent(this UShortInputSig sig, ushort finalRampValue, uint timeToRampIn10msIntervals, RampChangeHandler changeHandler) { ushort currentValue = sig.UShortValue; if (currentValue == finalRampValue) { return; } if (changeHandler != null) { uint timems = timeToRampIn10msIntervals * 10; var sigChangeInterval = Math.Max(50, timems / (finalRampValue >= currentValue ? (finalRampValue - currentValue) : (currentValue - finalRampValue))); var uro = new UserRampObject { sig = sig, rampChangeHandler = changeHandler }; uro.timerSigChange = new CTimer(RampTimerCallback, uro, sigChangeInterval, sigChangeInterval); } sig.CreateRamp(finalRampValue, timeToRampIn10msIntervals); }
public SubpageReferenceList(BasicTriListWithSmartObject triList, uint smartObjectId, uint boolIncrement, uint ushortIncrement, uint stringIncrement) { SmartObject obj; // Fail cleanly if not defined if (triList.SmartObjects == null || triList.SmartObjects.Count == 0) { Debug.Console(0, "TriList {0:X2} Smart objects have not been loaded", triList.ID, smartObjectId); return; } if (triList.SmartObjects.TryGetValue(smartObjectId, out obj)) { SRL = triList.SmartObjects[smartObjectId]; ScrollToItemSig = SRL.UShortInput["Scroll To Item"]; SetNumberOfItemsSig = SRL.UShortInput["Set Number of Items"]; BoolIncrement = boolIncrement; UShortIncrement = ushortIncrement; StringIncrement = stringIncrement; // Count the enable lines to see what max items is MaxDefinedItems = (ushort)SRL.BooleanInput .Where(s => s.Name.Contains("Enable")).Count(); Debug.Console(2, "SRL {0} contains max {1} items", SRL.ID, MaxDefinedItems); SRL.SigChange -= new SmartObjectSigChangeEventHandler(SRL_SigChange); SRL.SigChange += new SmartObjectSigChangeEventHandler(SRL_SigChange); } else { Debug.Console(0, "ERROR: TriList 0x{0:X2} Cannot load smart object {1}. Verify correct SGD file is loaded", triList.ID, smartObjectId); } }
/// <summary> /// Control level /// </summary> /// <param name="analogFeedbackJoin">Analog feedback join to level</param> /// <param name="analogTouchJoin">Analog touch join from level</param> /// <param name="channel">The mixer channel for the soundweb to follow</param> /// <param name="gainMin">Value from -280617 to 100000</param> /// <param name="gainMax">Value from -280617 to 100000</param> /// <remarks>-100000 to 100000 = -10dB to +10dB, values below -100000 are log scaled down to -80dB /// -160204 is -20dB /// </remarks> public SoundWebChannelUILevel(UShortInputSig analogFeedbackJoin, UShortOutputSig analogTouchJoin, SoundWebChannel channel, int gainMin, int gainMax) : base(analogFeedbackJoin, analogTouchJoin) { this.Channel = channel; if (gainMin >= -280617 && gainMin <= 100000) { this.GainMinValue = gainMin; } else { this.GainMinValue = -280617; } if (gainMax >= -280617 && gainMax <= 100000) { this.GainMaxValue = gainMax; } else { this.GainMaxValue = 100000; } this.Channel.ChangeEvent += new SoundWebChannelEventHandler(Channel_ChangeEvent); this.Channel.Owner.Device.Socket.SocketConnectionEvent += new UXLib.Sockets.SimpleClientSocketConnectionEventHandler(Socket_SocketConnectionEvent); if (this.Channel.Owner.Device.Socket.Connected) { Channel.Subscribe(SoundWebChannelParamType.Gain); } }
/// <summary> /// Creates a base class for subpage reference list items /// </summary> /// <param name="list">The subpage list</param> /// <param name="index">The index of the item</param> internal UIDynamicButtonListItem(UIDynamicButtonList list, uint index) : base(list.SmartObject) { try { _list = list; _index = index; VisibleJoin = list.SmartObject.BooleanInput[string.Format("Item {0} Visible", index)]; EnableJoin = list.SmartObject.BooleanInput[string.Format("Item {0} Enabled", index)]; var boolInputSig = list.SmartObject.BooleanInput[string.Format("Item {0} Selected", index)]; var boolOutputSig = list.SmartObject.BooleanOutput[string.Format("Item {0} Pressed", index)]; _iconAnalogSig = list.SmartObject.UShortInput[string.Format("Set Item {0} Icon Analog", index)]; _iconSerialSig = list.SmartObject.StringInput[string.Format("Set Item {0} Icon Serial", index)]; var nameStringSig = list.SmartObject.StringInput[string.Format("Set Item {0} Text", index)]; _button = new UIButton(list.SmartObject, boolOutputSig.Name, boolInputSig.Name, nameStringSig.Name); } catch (Exception e) { CloudLog.Exception(e); } }
public UIColorChip(SmartObject smartObject, string redSigName, string greenSigName, string blueSigName) : base(smartObject) { _redJoin = smartObject.UShortInput[redSigName]; _greenJoin = smartObject.UShortInput[greenSigName]; _blueJoin = smartObject.UShortInput[blueSigName]; }
public UIColorChip(BasicTriList device, uint redJoin, uint greenJoin, uint blueJoin) : base(device) { _redJoin = device.UShortInput[redJoin]; _greenJoin = device.UShortInput[greenJoin]; _blueJoin = device.UShortInput[blueJoin]; }
public static void SetValue(this UShortInputSig sig, ushort value, bool repropagate) { if (!repropagate && sig.UShortValue == value) { return; } sig.UShortValue = value; }
public UshortSigIncrementer(UShortInputSig sig, ushort changeAmount, int minValue, int maxValue, uint repeatDelay, uint repeatTime) { TheSig = sig; ChangeAmount = changeAmount; MaxValue = maxValue; MinValue = minValue; if (MinValue < 0 || MaxValue < 0) { SignedMode = true; } RepeatDelay = repeatDelay; RepeatTime = repeatTime; if (SignedMode && (MinValue < -32768 || MaxValue > 32767)) { Debug.Console(1, "UshortSigIncrementer has signed values that exceed range of -32768, 32767"); } }
/// <summary> /// Ramp an analog value down at a rate determined by the total time from up to down /// </summary> /// <param name="sig">Analog sig to ramp down</param> /// <param name="changeCallback">Callback delegate to use to update the value when it changes</param> /// <param name="totalSeconds">Total time it should take to ramp down from 100 to 0%</param> public static void RampDown(this UShortInputSig sig, UShortInputSigRampingCallback changeCallback, double totalSeconds) { var ms = totalSeconds * 1000; var relativeTime = sig.UShortValue / ms; sig.CreateRamp(ushort.MinValue, (uint)(relativeTime / 10)); var t = new Thread(specific => { var s = (UShortInputSig)specific; while (s.IsRamping) { Thread.Sleep(10); changeCallback(s); } changeCallback(s); return(null); }, changeCallback) { Name = string.Format("{0} RampDown Process", sig), }; }
/// <summary> /// Create a level that is touch settable /// </summary> /// <param name="analogFeedbackJoin">The analog input signal join</param> /// <param name="analogTouchJoin">The analog 'touch' output signal join</param> /// <param name="enableDigitalJoin">The digital enable join</param> /// <param name="visibleDigitalJoin">The digital visible join</param> public UILevel(UShortInputSig analogFeedbackJoin, UShortOutputSig analogTouchJoin, BoolInputSig enableDigitalJoin, BoolInputSig visibleDigitalJoin) : this(analogFeedbackJoin, analogTouchJoin) { this.EnableDigitalJoin = enableDigitalJoin; this.VisibleDigitalJoin = visibleDigitalJoin; }
void UpdateSig(UShortInputSig sig) { sig.UShortValue = UShortValue; }
/// <summary> /// Create a level which can have feedback only /// </summary> /// <param name="analogFeedbackJoin">The analog input signal join</param> public UILevel(UShortInputSig analogFeedbackJoin) { this.LevelMinimumValue = ushort.MinValue; this.LevelMaximumValue = ushort.MaxValue; this.AnalogFeedbackJoin = analogFeedbackJoin; }
/// <summary> /// Create a level that is touch settable /// </summary> /// <param name="analogFeedbackJoin">The analog input signal join</param> /// <param name="analogTouchJoin">The analog 'touch' output signal join</param> public UILevel(UShortInputSig analogFeedbackJoin, UShortOutputSig analogTouchJoin) : this(analogFeedbackJoin) { this.AnalogTouchJoin = analogTouchJoin; this.PressDigitalJoin = this.Device.BooleanOutput[analogTouchJoin.Number]; }
public void SetAnalogModeJoin(UShortInputSig analogModeJoin) { this.AnalogModeJoin = analogModeJoin; }
public DmpsAudioOutput(Card.Dmps3OutputBase output, eDmpsLevelType type) { Output = output; Type = type; switch (type) { case eDmpsLevelType.Master: { Level = output.MasterVolume; MuteFeedback = new BoolFeedback(new Func <bool> (() => Output.MasterMuteOnFeedBack.BoolValue)); VolumeLevelFeedback = new IntFeedback(new Func <int>(() => Output.MasterVolumeFeedBack.UShortValue)); MuteOnAction = new Action(Output.MasterMuteOn); MuteOffAction = new Action(Output.MasterMuteOff); VolumeUpAction = new Action <bool>((b) => Output.MasterVolumeUp.BoolValue = b); VolumeDownAction = new Action <bool>((b) => Output.MasterVolumeDown.BoolValue = b); break; } case eDmpsLevelType.MicsMaster: { Level = output.MicMasterLevel; MuteFeedback = new BoolFeedback(new Func <bool>(() => Output.MicMasterMuteOnFeedBack.BoolValue)); VolumeLevelFeedback = new IntFeedback(new Func <int>(() => Output.MicMasterLevelFeedBack.UShortValue)); MuteOnAction = new Action(Output.MicMasterMuteOn); MuteOffAction = new Action(Output.MicMasterMuteOff); VolumeUpAction = new Action <bool>((b) => Output.MicMasterLevelUp.BoolValue = b); VolumeDownAction = new Action <bool>((b) => Output.MicMasterLevelDown.BoolValue = b); break; } case eDmpsLevelType.Source: { Level = output.SourceLevel; MuteFeedback = new BoolFeedback(new Func <bool>(() => Output.SourceMuteOnFeedBack.BoolValue)); VolumeLevelFeedback = new IntFeedback(new Func <int>(() => Output.SourceLevelFeedBack.UShortValue)); MuteOnAction = new Action(Output.SourceMuteOn); MuteOffAction = new Action(Output.SourceMuteOff); VolumeUpAction = new Action <bool>((b) => Output.SourceLevelUp.BoolValue = b); VolumeDownAction = new Action <bool>((b) => Output.SourceLevelDown.BoolValue = b); break; } case eDmpsLevelType.Codec1: { var programOutput = output as Card.Dmps3ProgramOutput; if (programOutput != null) { Level = programOutput.Codec1Level; MuteFeedback = new BoolFeedback(new Func <bool>(() => programOutput.CodecMute1OnFeedback.BoolValue)); VolumeLevelFeedback = new IntFeedback(new Func <int>(() => programOutput.Codec1LevelFeedback.UShortValue)); MuteOnAction = new Action(programOutput.Codec1MuteOn); MuteOffAction = new Action(programOutput.Codec1MuteOff); VolumeUpAction = new Action <bool>((b) => programOutput.Codec1LevelUp.BoolValue = b); VolumeDownAction = new Action <bool>((b) => programOutput.Codec1LevelDown.BoolValue = b); } else { var auxOutput = output as Card.Dmps3Aux2Output; Level = auxOutput.Codec1Level; MuteFeedback = new BoolFeedback(new Func <bool>(() => auxOutput.CodecMute1OnFeedback.BoolValue)); VolumeLevelFeedback = new IntFeedback(new Func <int>(() => auxOutput.Codec1LevelFeedback.UShortValue)); MuteOnAction = new Action(auxOutput.Codec1MuteOn); MuteOffAction = new Action(auxOutput.Codec1MuteOff); VolumeUpAction = new Action <bool>((b) => auxOutput.Codec1LevelUp.BoolValue = b); VolumeDownAction = new Action <bool>((b) => auxOutput.Codec1LevelDown.BoolValue = b); } break; } case eDmpsLevelType.Codec2: { var programOutput = output as Card.Dmps3ProgramOutput; if (programOutput != null) { Level = programOutput.Codec2Level; MuteFeedback = new BoolFeedback(new Func <bool>(() => programOutput.CodecMute1OnFeedback.BoolValue)); VolumeLevelFeedback = new IntFeedback(new Func <int>(() => programOutput.Codec2LevelFeedback.UShortValue)); MuteOnAction = new Action(programOutput.Codec2MuteOn); MuteOffAction = new Action(programOutput.Codec2MuteOff); VolumeUpAction = new Action <bool>((b) => programOutput.Codec2LevelUp.BoolValue = b); VolumeDownAction = new Action <bool>((b) => programOutput.Codec2LevelDown.BoolValue = b); } else { var auxOutput = output as Card.Dmps3Aux1Output; Level = auxOutput.Codec2Level; MuteFeedback = new BoolFeedback(new Func <bool>(() => auxOutput.CodecMute2OnFeedback.BoolValue)); VolumeLevelFeedback = new IntFeedback(new Func <int>(() => auxOutput.Codec2LevelFeedback.UShortValue)); MuteOnAction = new Action(auxOutput.Codec2MuteOn); MuteOffAction = new Action(auxOutput.Codec2MuteOff); VolumeUpAction = new Action <bool>((b) => auxOutput.Codec2LevelUp.BoolValue = b); VolumeDownAction = new Action <bool>((b) => auxOutput.Codec2LevelDown.BoolValue = b); } break; } } }
public static void CreateRamp(this UShortInputSig sig, ushort finalRampValue, uint timeToRampIn10msIntervals) { sig.CreateRamp(finalRampValue, timeToRampIn10msIntervals); }
public static void SetValue(this UShortInputSig sig, ushort value) { sig.SetValue(value, false); }
public static void DetachSigEventHandler(this UShortInputSig cue, UnifiedSigEventHandler handler) { cue.DetachSigEventHandler(handler, eSigEvent.UShortInputRamping); }
public void LinkInputSig(UShortInputSig sig) { LinkedInputSigs.Add(sig); UpdateSig(sig); }
public void UnlinkInputSig(UShortInputSig sig) { LinkedInputSigs.Remove(sig); }