From c750297cf5bd271ec6f7c0672f93f08641b00e25 Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Thu, 15 Jul 2021 22:36:04 -0500 Subject: [PATCH] Start work on adding missing OSC Methods --- QControlKit/Constants/QDefines.cs | 421 +++++++++++++++--- QControlKit/Cue/QDevampCue.cs | 31 ++ QControlKit/Cue/QMidiFileCue.cs | 31 ++ QControlKit/Cue/QScriptCue.cs | 20 + .../PublishProfiles/FolderProfile.pubxml | 13 + QControlKit/QControlKit.csproj | 4 + 6 files changed, 467 insertions(+), 53 deletions(-) create mode 100644 QControlKit/Cue/QDevampCue.cs create mode 100644 QControlKit/Cue/QMidiFileCue.cs create mode 100644 QControlKit/Cue/QScriptCue.cs create mode 100644 QControlKit/Properties/PublishProfiles/FolderProfile.pubxml diff --git a/QControlKit/Constants/QDefines.cs b/QControlKit/Constants/QDefines.cs index b9c95ff..eb42654 100644 --- a/QControlKit/Constants/QDefines.cs +++ b/QControlKit/Constants/QDefines.cs @@ -46,73 +46,213 @@ public static class QOSCKey { - public const string UID = "uniqueID"; - public const string Type = "type"; - public const string Parent = "parent"; - public const string Name = "name"; - public const string Number = "number"; - public const string Notes = "notes"; - public const string FileTarget = "fileTarget"; - public const string CueTargetNumber = "cueTargetNumber"; - public const string CurrentCueTarget = "currentCueTarget"; - public const string ColorName = "colorName"; - public const string Flagged = "flagged"; + public const string ActionElapsed = "actionElapsed"; + public const string AllowsEditingDuration = "allowsEditingDuration"; public const string Armed = "armed"; + public const string AutoLoad = "autoLoad"; //implement on QCue + + public const string CartPosition = "cartPosition"; + public const string Children = "children"; + public const string ColorName = "colorName"; + public const string Cues = "cues"; + public const string CueTargetNumber = "cueTargetNumber"; + public const string CueTargetId = "cueTargetId"; //implement on QCue + + public const string CurrentCueTarget = "currentCueTarget"; + public const string CurrentFileTime = "currentFileTime"; //implement on QCue public const string ContinueMode = "continueMode"; + public const string CurrentDuration = "currentDuration"; + + public const string DefaultName = "defaultName"; //implement on QCue + public const string DisplayName = "displayName"; //implement on QCue + public const string DuckLevel = "duckLevel"; //implement on QCue + public const string DuckOthers = "duckOthers"; //implement on QCue + public const string DuckTime = "duckTime"; //implement on QCue + + + public const string FileTarget = "fileTarget"; + public const string Flagged = "flagged"; + public const string FadeAndStopOthers = "fadeAndStopOthers"; //implement on QCue + public const string FadeAndStopOthersTime = "fadeAndStopOthersTime"; //implement on QCue + + + public const string HasFileTargets = "hasFileTargets"; + public const string HasCueTargets = "hasCueTargets"; + + public const string IsActionRunning = "isActionRunning"; //implement on QCue + public const string IsBroken = "isBroken"; + public const string IsLoaded = "isLoaded"; + public const string IsOverridden = "isOverridden"; + public const string IsPanicking = "isPanicking"; + public const string IsPaused = "isPaused"; + public const string IsRunning = "isRunning"; + public const string IsTailingOut = "isTailingOut"; + + public const string ListName = "listName"; + public const string LoadAt = "loadAt"; //implement on QCue + public const string LoadActionAt = "loadActionAt"; //implement on QCue + + public const string MaxTimeInCueSequence = "maxTimeInCueSequence"; //implement on QCue + + + public const string Name = "name"; + public const string Notes = "notes"; + public const string Number = "number"; + + public const string PanicInTime = "panicInTime"; //implement on QCue public const string PreWait = "preWait"; public const string PostWait = "postWait"; - public const string CurrentDuration = "currentDuration"; public const string PercentPreWaitElapsed = "percentPreWaitElapsed"; public const string PercentPostWaitElapsed = "percentPostWaitElapsed"; public const string PercentActionElapsed = "percentActionElapsed"; public const string PreWaitElapsed = "preWaitElapsed"; + public const string Parent = "parent"; public const string PostWaitElapsed = "postWaitElapsed"; - public const string ActionElapsed = "actionElapsed"; - public const string GroupMode = "mode"; - public const string CartPosition = "cartPosition"; - public const string CartRows = "cartRows"; - public const string CartColumns = "cartColumns"; - public const string HasFileTargets = "hasFileTargets"; - public const string HasCueTargets = "hasCueTargets"; - public const string AllowsEditingDuration = "allowsEditingDuration"; - public const string IsPanicking = "isPanicking"; - public const string IsTailingOut = "isTailingOut"; - public const string IsRunning = "isRunning"; - public const string IsLoaded = "isLoaded"; - public const string IsPaused = "isPaused"; - public const string IsBroken = "isBroken"; - public const string IsOverridden = "isOverridden"; - public const string TranslationX = "translationX"; - public const string TranslationY = "translationY"; - public const string ScaleX = "scaleX"; - public const string ScaleY = "scaleY"; - public const string OriginX = "originX"; - public const string OriginY = "originY"; - public const string Quaternion = "quaternion"; - public const string SurfaceSize = "surfaceSize"; - public const string CueSize = "cueSize"; - public const string PreserveAspectRatio = "preserveAspectRatio"; - public const string Layer = "layer"; - public const string Patch = "patch"; - public const string PatchList = "patchList"; - public const string SurfaceList = "surfaceList"; - public const string Cues = "cues"; - public const string Children = "children"; - public const string ListName = "listName"; - public const string SurfaceID = "surfaceID"; - public const string FullSurface = "fullSurface"; - public const string Opacity = "opacity"; - public const string RotationZ = "rotationZ"; - public const string RotationY = "rotationY"; - public const string RotationX = "rotationX"; - public const string PlaybackPositionId = "playbackPositionId"; + + public const string StartNextCueWhenSliceEnds = "startNextCueWhenSliceEnds"; public const string StopTargetWhenSliceEnds = "stopTargetWhenSliceEnds"; - public const string SliderLevel = "sliderLevel"; + public const string SecondTriggerAction = "secondTriggerAction"; //implement on QCue + public const string SecondTriggerOnRelease = "secondTriggerOnRelease"; //implement on QCue + public const string SoloCueInTime = "soloCueInTime"; //implement on QCue + + + public const string TempCueTargetNumber = "tempCueTargetNumber"; //implement on QCue + public const string TempCueTargetId = "tempCueTargetId"; //implement on QCue + public const string TempDuration = "tempDuration"; //implement on QCue + public const string Type = "type"; + + public const string UID = "uniqueID"; + public const string UniqueID = "uniqueID"; + public const string ValuesForKeys = "valuesForKeys"; + public const string ValuesForKeysWithArguments = "valuesForKeysWithArguments"; + + //Group Cue Keys + public const string CartColumns = "cartColumns"; + public const string CartRows = "cartRows"; + public const string GroupMode = "mode"; + public const string PlaybackPositionId = "playbackPositionId"; + public const string PlaybackPosition = "playbackPosition"; //Implement on Group Cue + public const string PlayheadId = "playheadId"; //Implement on Group Cue + public const string Playhead = "playhead"; //Implement on Group Cue + + //Audio Cue Keys + public const string DoFade = "doFade"; //Implement on Audio Cue and Video Cue + public const string DoPitchShift = "doPitchShift"; //Implement on Audio Cue and Video Cue + public const string EndTime = "endTime"; //Implement on Audio Cue and Video Cue + public const string Gang = "gang"; //Implement on Audio Cue and Video Cue + public const string InfiniteLoop = "infiniteLoop"; //Implement on Audio Cue and Video Cue + public const string Level = "level"; //Implement on Audio Cue and Video Cue + public const string Levels = "levels"; //Implement on Audio Cue and Video Cue + public const string LiveAverageLevel = "liveAverageLevel"; //Implement on Audio Cue and Video Cue + public const string LockFadeToCue = "lockFadeToCue"; //Implement on Audio Cue and Video Cue + public const string NumChannelsIn = "numChannelsIn"; //Implement on Audio Cue and Video Cue + public const string PatchList = "patchList"; //Implement on Audio Cue and Video Cue + public const string PlayCount = "playCount"; //Implement on Audio Cue and Video Cue + public const string LiveRate = "liveRate"; //Implement on Audio Cue and Video Cue + public const string SliceMarkers = "sliceMarkers"; //Implement on Audio Cue and Video Cue + public const string SliceMarker = "sliceMarker"; //Implement on Audio Cue and Video Cue + public const string Time = "time"; //Implement on Audio Cue related to slicemarker and Video Cue + public const string LastSlicePlayCount = "lastSlicePlayCount"; //Implement on Audio Cue and Video Cue + public const string LastSliceInfiniteLoop = "lastSliceInfiniteLoop"; //Implement on Audio Cue and Video Cue + public const string SliderLevel = "sliderLevel"; // Implement on Video Cue + public const string SliderLevels = "sliderLevels"; //Implement on Audio Cue and Video Cue + public const string StartTime = "startTime"; // Implement on Audio Cue and Video Cue + + //Mic Cue Keys + public const string ChannelOffset = "channelOffset"; //Implement on Mic Cue + public const string Channels = "channels"; //Implement on Mic Cue + + //Video Cue Keys + public const string CueSize = "cueSize"; //Implement on Video Cue + public const string DoEffect = "doEffect"; //Implement on Video Cue + public const string EffectIndex = "effectIndex"; //Implement on Video Cue + public const string EffectSet = "effectSet"; //Implement on Video Cue + public const string liveEffectSet = "liveEffectSet"; //Implement on Video Cue + public const string FullSurface = "fullSurface"; //Implement on Video Cue + public const string HoldLastFrame = "holdLastFrame"; //Implement on Video Cue + public const string Layer = "layer"; //Implement on Video Cue + public const string Opacity = "opacity"; //Implement on Video Cue + public const string OriginX = "originX"; //Implement on Video Cue + public const string OriginY = "originY"; //Implement on Video Cue + public const string Origin = "origin"; //Implement on Video Cue + public const string PreserveAspectRatio = "preserveAspectRatio"; //Implement on Video Cue + public const string Quaternion = "quaternion"; //Implement on Video Cue + public const string RotateZ = "rotateZ"; //Implement on Video Cue + public const string RotateY = "rotateY"; //Implement on Video Cue + public const string RotateX = "rotateX"; //Implement on Video Cue + public const string LiveRotation = "liveRotation"; //Implement on Video Cue + public const string XAxis = "Xaxis"; //Implement on Video Cue + public const string YAxis = "Yaxis"; //Implement on Video Cue + public const string ZAxis = "Zaxis"; //Implement on Video Cue + public const string X = "x"; //Implement on Video Cue + public const string Y = "y"; //Implement on Video Cue + public const string Z = "z"; //Implement on Video Cue + public const string ScaleX = "scaleX"; //Implement on Video Cue + public const string LiveScaleX = "liveScaleX"; //Implement on Video Cue + public const string ScaleY = "scaleY"; //Implement on Video Cue + public const string LiveScaleY = "liveScaleY"; //Implement on Video Cue + public const string Scale = "scale"; //Implement on Video Cue + public const string LiveScale = "liveScale"; //Implement on Video Cue + public const string SurfaceID = "surfaceID"; //Implement on Video Cue + public const string SurfaceList = "surfaceList"; //Implement on Video Cue + public const string SurfaceName = "surfaceName"; //Implement on Video Cue + public const string SurfaceSize = "surfaceSize"; //Implement on Video Cue + public const string TranslationX = "translationX"; + public const string LiveTranslationX = "liveTranslationX"; //Implement on Video Cue + public const string TranslationY = "translationY"; + public const string LiveTranslationY = "liveTranslationY"; //Implement on Video Cue + public const string Translation = "translation"; //Implement on Video Cue + public const string LiveTranslation = "liveTranslation"; //Implement on Video Cue + + //Camera Cue Keys (Extension of Video Cue + public const string CameraPatch = "cameraPatch"; + + //Text Cue Keys + public const string FixedWidth = "fixedWidth"; //Implement on Text Cue + public const string Text = "text"; //Implement on Text Cue + public const string LiveText = "liveText"; //Implement on Text Cue + public const string Format = "format"; //Implement on Text Cue + public const string Alignment = "alignment"; //Implement on Text Cue + public const string FontFamily = "fontFamily"; //Implement on Text Cue + public const string FontStyle = "fontStyle"; //Implement on Text Cue + public const string FontFamilyAndStyle = "fontFamilyAndStyle"; //Implement on Text Cue + public const string FontName = "fontName"; //Implement on Text Cue + public const string FontSize = "fontSize"; //Implement on Text Cue + public const string LineSpacing = "lineSpacing"; //Implement on Text Cue + public const string Color = "color"; //Implement on Text Cue + public const string BackgroundColor = "backgroundColor"; //Implement on Text Cue + public const string StrikethroughColor = "strikethroughColor"; //Implement on Text Cue + public const string UnderlineColor = "underlineColor"; //Implement on Text Cue + public const string StrikethroughStyle = "strikethroughStyle"; //Implement on Text Cue + public const string UnderlineStyle = "underlineStyle"; //Implement on Text Cue + public const string OutputSize = "outputSize"; //Implement on Text Cue + + //Light Cue Keys + //Fade Cue Keys + //Network Cue Keys + //MIDI Cue Keys + + //Midi File Cue Keys + public const string Patch = "patch"; //Implement on Audio Cue and Video Cue + public const string Rate = "rate"; //Implement on Audio Cue and Video Cue + + //Devamp Cue Keys + public const string startNextCueWhenSliceEnds = "startNextCueWhenSliceEnds"; + public const string stopTargetWhenSliceEnds = "stopTargetWhenSliceEnds"; + + //Script Cue Keys + public const string ScriptSource = "scriptSource"; + // v3 public const string Duration = "duration"; - public const string FullScreen = "fullScreen"; + public const string FullScreen = "fullScreen"; //Implement on Video Cue + + + + + } public static class QIdentifiers @@ -143,6 +283,15 @@ public const string Default = "default"; //is this even an option? } + enum QTriggerAction + { + Nothing = 0, + Panics = 1, + Stops = 2, + Hard_Stops = 3, + Hard_Stops_And_Restarts = 4 + } + enum QFadeMode { Absolute = 0, @@ -155,4 +304,170 @@ AutoContinue = 1, AutoFollow = 2 } + + enum QMSCCommand + { + GO = 1, + STOP = 2, + RESUME = 3, + TIMED_GO = 4, + LOAD = 5, + SET = 6, + FIRE = 7, + ALL_OFF =8, + RESTORE = 9, + RESET = 10, + GO_OFF = 11, + GO_OR_JAM_CLOCK = 16, + STANDBY_PLUSS = 17, + STANDBY_MINUS = 18, + SEQUENCE_PLUS = 19, + SEQUENCE_MINUS = 20, + START_CLOCK = 21, + STOP_CLOCK = 22, + ZERO_CLOCK = 23, + SET_CLOCK = 24, + MTC_CHASE_ON = 25, + MTC_CHASE_OFF = 26, + OPEN_CUE_LIST = 27, + CLOSE_CUE_LIST = 28, + OPEN_CUE_PATH = 29, + CLOSE_CUE_PATH = 30, + } + + enum QMSCCommandFormat + { + All_Types = 127, + Lighting_General = 1, + Moving_Lights = 2, + Color_Changers = 3, + Strobes = 4, + Lasers = 5, + Chasers = 6, + Sound_General = 16, + Music = 17, + CD_Players = 18, + EPROM_Playback = 19, + Audio_Tape_Machines = 20, + Intercoms = 21, + Amplifiers = 22, + Audio_Effects_Devices = 23, + Equalizers = 24, + Machinery_General = 32, + Rigging = 33, + Flys = 34, + Lifts = 35, + Turntables = 36, + Trusses = 37, + Robots = 38, + Animation = 39, + Floats = 40, + Breakaways = 41, + Barges = 42, + Video_General = 48, + Video_Tape_Machines = 49, + Video_Cassette_Machines = 50, + Video_Disc_Players = 51, + Video_Switchers = 52, + Video_Effects = 53, + Video_Character_Generators = 54, + Video_Still_Stores = 55, + Video_Monitors = 56, + Projection_General = 64, + Film_Projectors = 65, + Slide_Projectors = 66, + Video_Projectors = 67, + Dissolvers = 68, + Shutter_Controls = 69, + Process_Control_General = 80, + Hydraulic_Oil = 81, + H2O = 82, + CO2 = 83, + Compressed_Air = 84, + Natural_Gas = 85, + Fog = 86, + Smoke = 87, + Cracked_Haze = 88, + Pyrotechnics_General = 96, + Fireworks = 97, + Explosions = 98, + Flame = 99, + Smoke_Pots = 100 + } + + enum QNetworkMessageType + { + QLAB = 1, + OSC = 2, + UDP = 3 + } + + enum QNetworkQLabCommand + { + start = 1, + stop = 2, + hardStop = 3, + pause = 4, + resume = 5, + togglePause = 6, + load = 7, + preview = 8, + reset = 9, + panic = 10, + number = 11, + name = 12, + notes = 13, + cueTargetNumber = 14, + preWait = 15, + duration = 16, + postWait = 17, + continueMode = 18, + flagged = 19, + armed = 20, + colorName = 21 + } + + enum QRotationType + { + THREE_D = 0, + X = 1, + Y = 2, + Z = 3 + } + + enum QVideoEffect + { + Color_Controls = 1, + Exposure = 2, + Gamma = 3, + Sepia_Monochrome = 4, + Min_Max_Invert = 5, + White_point = 6, + Box_Disc_Gaussian_Blurs = 7, + Motion_Blur = 8, + Sharpen_Luminance = 9, + Unsharp_Mask = 10, + Zoom_Blur = 11, + Pixellation = 12, + Screen = 13, + Bloom_and_Gloom = 14, + CMYK_Halftone = 15, + Color_Posterize = 16, + Crystallize_and_Pointillize = 17, + Edge_Work = 18, + Kaleidoscope = 1, + Median_and_Comic_Effect = 19, + Noise_Reduction = 20, + Circle_Splash_Hole_Distortion = 21, + Pinch_Bump_Distortion = 22, + Torus_Lens_Distortion = 23, + Twirl_Circular_Wrap_Vortex = 24, + Glass_Lozenge = 25, + Op_Tile = 26, + Perspective_Tile = 27, + Quad_Tiles = 28, + Reflected_Tiles = 29, + Rotated_Tiles = 30, + Titles = 31 + } } diff --git a/QControlKit/Cue/QDevampCue.cs b/QControlKit/Cue/QDevampCue.cs new file mode 100644 index 0000000..bc5f18e --- /dev/null +++ b/QControlKit/Cue/QDevampCue.cs @@ -0,0 +1,31 @@ +using QControlKit.Constants; + +namespace QControlKit.Cue +{ + public class QDevampCue : QCue + { + public bool startNextCueWhenSliceEnds + { + get + { + return (bool)propertyForKey(QOSCKey.startNextCueWhenSliceEnds); + } + set + { + setProperty(value, QOSCKey.startNextCueWhenSliceEnds); + } + } + + public bool stopTargetWhenSliceEnds + { + get + { + return (bool)propertyForKey(QOSCKey.stopTargetWhenSliceEnds); + } + set + { + setProperty(value, QOSCKey.stopTargetWhenSliceEnds); + } + } + } +} diff --git a/QControlKit/Cue/QMidiFileCue.cs b/QControlKit/Cue/QMidiFileCue.cs new file mode 100644 index 0000000..2e17e78 --- /dev/null +++ b/QControlKit/Cue/QMidiFileCue.cs @@ -0,0 +1,31 @@ +using QControlKit.Constants; + +namespace QControlKit.Cue +{ + public class QMidiFileCue :QCue + { + public bool patch + { + get + { + return (bool)propertyForKey(QOSCKey.Patch); + } + set + { + setProperty(value, QOSCKey.Patch); + } + } + + public bool rate + { + get + { + return (bool)propertyForKey(QOSCKey.Rate); + } + set + { + setProperty(value, QOSCKey.Rate); + } + } + } +} diff --git a/QControlKit/Cue/QScriptCue.cs b/QControlKit/Cue/QScriptCue.cs new file mode 100644 index 0000000..2a38673 --- /dev/null +++ b/QControlKit/Cue/QScriptCue.cs @@ -0,0 +1,20 @@ +using QControlKit.Constants; + +namespace QControlKit.Cue +{ + public class QScriptCue : QCue + { + public string scriptSource + { + get + { + return propertyForKey(QOSCKey.ScriptSource).ToString(); + } + } + + public void compileSource() + { + workspace.sendMessage($"/cue_id/{this.propertyForKey(QOSCKey.UID)}/compileSource"); + } + } +} diff --git a/QControlKit/Properties/PublishProfiles/FolderProfile.pubxml b/QControlKit/Properties/PublishProfiles/FolderProfile.pubxml new file mode 100644 index 0000000..9eca85b --- /dev/null +++ b/QControlKit/Properties/PublishProfiles/FolderProfile.pubxml @@ -0,0 +1,13 @@ + + + + FileSystem + Release + AnyCPU + bin/Release/netstandard2.0/publish + false + netstandard2.0 + false + <_IsPortable>true + + \ No newline at end of file diff --git a/QControlKit/QControlKit.csproj b/QControlKit/QControlKit.csproj index b981e94..5a54f7a 100644 --- a/QControlKit/QControlKit.csproj +++ b/QControlKit/QControlKit.csproj @@ -21,5 +21,9 @@ + + + +