Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
 /// <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);
     }
 }
Ejemplo n.º 4
0
        /// <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);
            }
        }
Ejemplo n.º 5
0
 public UIColorChip(SmartObject smartObject, string redSigName, string greenSigName, string blueSigName)
     : base(smartObject)
 {
     _redJoin   = smartObject.UShortInput[redSigName];
     _greenJoin = smartObject.UShortInput[greenSigName];
     _blueJoin  = smartObject.UShortInput[blueSigName];
 }
Ejemplo n.º 6
0
 public UIColorChip(BasicTriList device, uint redJoin, uint greenJoin, uint blueJoin)
     : base(device)
 {
     _redJoin   = device.UShortInput[redJoin];
     _greenJoin = device.UShortInput[greenJoin];
     _blueJoin  = device.UShortInput[blueJoin];
 }
Ejemplo n.º 7
0
        public static void SetValue(this UShortInputSig sig, ushort value, bool repropagate)
        {
            if (!repropagate && sig.UShortValue == value)
            {
                return;
            }

            sig.UShortValue = value;
        }
Ejemplo n.º 8
0
 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");
     }
 }
Ejemplo n.º 9
0
        /// <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),
            };
        }
Ejemplo n.º 10
0
 /// <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;
 }
Ejemplo n.º 11
0
 void UpdateSig(UShortInputSig sig)
 {
     sig.UShortValue = UShortValue;
 }
Ejemplo n.º 12
0
 /// <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;
 }
Ejemplo n.º 13
0
 /// <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];
 }
Ejemplo n.º 14
0
 public void SetAnalogModeJoin(UShortInputSig analogModeJoin)
 {
     this.AnalogModeJoin = analogModeJoin;
 }
Ejemplo n.º 15
0
        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;
            }
            }
        }
Ejemplo n.º 16
0
 public static void CreateRamp(this UShortInputSig sig, ushort finalRampValue, uint timeToRampIn10msIntervals)
 {
     sig.CreateRamp(finalRampValue, timeToRampIn10msIntervals);
 }
Ejemplo n.º 17
0
 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);
 }
Ejemplo n.º 19
0
 public void LinkInputSig(UShortInputSig sig)
 {
     LinkedInputSigs.Add(sig);
     UpdateSig(sig);
 }
Ejemplo n.º 20
0
 public void UnlinkInputSig(UShortInputSig sig)
 {
     LinkedInputSigs.Remove(sig);
 }