beyond:pangoscript_commands
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| beyond:pangoscript_commands [2020/05/26 13:07] – Bob Varkevisser | beyond:pangoscript_commands [2026/02/27 12:51] (current) – Bob Varkevisser | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== PangoScript Commands ====== | ====== PangoScript Commands ====== | ||
| + | New for 2026, a tool has been created with all new fresh documentation of every Pango script Command. The tool linked below allows you to read every command as well as see examples the script commands in use. The tools is searchable with the search bar on the top. | ||
| + | Click the link below to review this tool which will open in a new window. | ||
| - | ^ Function ^ Code ^ Comments ^ | + | [[https:// |
| - | |AddSms|AddSMS " | + | |
| - | |Angle|Angle 0,0,0|X,Y,Z angles in degrees| | + | |
| - | |AngleDelta|AngleDelta 0, | + | |
| - | |AngleX|AngleX 0|degree| | + | |
| - | |AngleY|AngleY 0|degree| | + | |
| - | |AngleZ|AngleZ 0|degree| | + | |
| - | |AnimateProp|AnimateProp "" | + | |
| - | |AnimatePropDelta|AnimatePropDelta "" | + | ---- |
| - | |AnimationSpeed|AnimationSpeed 100|speed in %. Zero full stop.| | + | |
| - | |AnimationSpeedDelta|AnimationSpeedDelta 0| | + | |
| - | |AudioBeat|AudioBeat| | + | Information below is being rewritten |
| - | |Autostart|AutoStart| | + | |
| - | |BeatResync|BeatResync| | + | < |
| - | |BeatTap|BeatTap| | + | |
| - | |BlackOut|BlackOut| | + | ==== Intro ==== |
| - | |Brightness|Brightness 100|0..100 (percents)| | + | |
| - | |BrightnessDelta|BrightnessDelta 0| | + | |
| - | |CaptureToClipboard|CaptureToClipboard | | + | Currently, the main purpose of "scripting" |
| - | |ChannelOut|ChannelOut 1, 1000|set first channel to 1000 (max value) | | + | |
| - | |ClickFXStopAll| | + | |
| - | |ClickFXTabMode|ClickFXTabMode 1|1-Master, 2-Cue, 3-Zone, 4-ProTrack| | + | ==== Numbers ==== |
| - | |ClickFlash|ClickFlash | + | |
| - | |ClickFxVlj|ClickFxVlj 1|Toggle first FX-VLJ | | + | Supported float point , integer and hexadecimal numbers. As example: |
| - | |ClickLCTabMode|ClickLCTabMode 1|1-Master, 2-Cue, 3-Zone, 4-ProTrack| | + | 100 |
| - | |ClickLive|ClickLive | + | -20 |
| - | |ClickLockSize|ClickLockSize 1 |0,1,2 Off, On, toggle| | + | 1.01 |
| - | |ClickRestart|ClickRestart | + | 0xBF |
| - | |ClickScrollA|ClickScrollA | + | All hexadecimal numbers much have 0x prefix, similar to C language, but without ending H |
| - | |ClickScrollAniSpeed|ClickScrollAniSpeed | + | |
| - | |ClickScrollB|ClickScrollB -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| | + | There is not strict separation on integer and float point numbers. |
| - | |ClickScrollColor|ClickScrollColor | + | |
| - | |ClickScrollFade|ClickScrollFade -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| | + | Separator between command parameter could be space (" ") or a comma ("," |
| - | |ClickScrollG|ClickScrollG -5|scroll speed, recommended | + | |
| - | |ClickScrollHue|ClickScrollHue -5|scroll speed, | + | |
| - | |ClickScrollHueShift|ClickScrollHueShift | + | ==== Special characters |
| - | |ClickScrollR|ClickScrollR -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| | + | |
| - | |ClickScrollSaturation|ClickScrollSaturation -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| | + | |
| - | |ClickScrollScanRate|ClickScrollScanRate -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| | + | ' |
| - | |ClickScrollSize|ClickScrollSize -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| | + | ' |
| - | |ClickScrollVPoints|ClickScrollVPoints -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| | + | |
| - | |ClickScrollZoom|ClickScrollZoom -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| | + | |
| - | |ClickSelect|ClickSelect |optional argument: 1 or 2 (Grid number)| | + | |
| - | |ClickSoloFlash|ClickSoloFlash | + | ==== Predefined constants ==== |
| - | |ClickTCTabMode|ClickTCTabMode 1|1-Master, 2-Cue, 3-Zone, 4-ProTrack| | + | |
| - | |ClickToggle|ClickToggle |optional | + | |
| - | |ClickTrack|ClickTrack | + | There are a few constants mostly for readability of the code. Each constant will be transformed to a number |
| - | |CloseUmax|CloseUmax| | + | TRUE - numeric analog 1 |
| - | |CodeColorMarker|CodeColorMarker 0x00FF00|green color marker | | + | FALSE - numeric analog 0 |
| - | |CodeName|CodeName " | + | ANY equal to numeric |
| - | |CodeShortcut|CodeShortcut " | + | OFF equal to numeric 0 |
| - | |ColorBGR|ColorBGR 0x0000FF|blue color| | + | ON equal to numeric 1 |
| - | |ColorOn|ColorOn 1|1-enabled, 0-disabled| | + | TOGGLE equal to numeric 2 |
| - | |ColorRGB|ColorRGB 0x0000FF|red color, | | + | AsIs equal to -2. |
| - | |ColorSlider|ColorSlider 0|0..255| | + | This is required for commands like " |
| - | |ColorSliderDelta|ColorSliderDelta 0| | + | |
| - | |ControlCue|ControlCue 1,1| | + | A few examples of using commands: |
| - | |ControlFromFxTab|ControlFromFxTab| | + | VirtualLJ off |
| - | |ControlFromLcTab|ControlFromLcTab| | + | MasterPause Toggle |
| - | |ControlFromTcTab|ControlFromTcTab| | + | WaitForMidi 0x90, 10, Any |
| - | |ControlFromUI|ControlFromUI| | + | |
| - | |ControlMaster|ControlMaster| | + | ==== Math operations (expressions) ==== |
| - | |ControlProTrack|ControlProTrack 1| | + | |
| - | |ControlProjector|ControlProjector 1| | + | |
| - | |ControlSelCues|ControlSelCues| | + | |
| - | |ControlSelProTracks|ControlSelProTracks| | + | Standard: + |
| - | |ControlSelZones|ControlSelZones| | + | Inversion: ! |
| - | |ControlZone|ControlZone 1|name as "Main Graphics" | + | bit OR: | |
| - | |CueDown|Cuedown 1,1|page 1..100, cue 1..100| | + | bit AND: & |
| - | |CueUp|CueUp 1,1|page 1..100, cue 1..100| | + | bit XOR: ^ |
| - | |DecreaseTrigger|DecreaseTrigger 0, | + | bit right shift: >> |
| - | |DefineDmxTrigger|DefineDmxTrigger 1|Channel| | + | bit left shift: << |
| - | |DefineMidiTrigger|DefineMidiTrigger 0xC0, 0x00|MIDI Cmmand, MIDI Data 1, Trigger Name (optional), MIDI Dev index from 0 to 3 (optional), but default | + | |
| - | |DefineTcTrigger|DefineTCTrigger "TC Test"|hour, minute, second| | + | |
| - | |DefineTrigger|DefineTrigger " | + | ==== Operators ==== |
| - | |DeletePropAni|DeletePropAni|" | + | |
| - | |DisableLaserOutput|DisableLaserOutput| | + | |
| - | |DisplayPopup|DisplayPopup | + | |
| - | |DisplayPopupOnTop|DisplayPopupOnTop | + | IF operator. |
| - | |DisplayPreview|DisplayPreview | + | |
| - | |DmxInMute|DmxInMute 1, 255|Channel index, 0 or 1; or ChannelIndex| | + | Syntax: if ( expression ) operator |
| - | |DmxOut|DmxOut 1, 255|set first DMX OUT channel to 255 (max value)| | + | |
| - | |DmxOutRange|DmxOutRange 1, 255|set first DMX OUT channel | | + | expression |
| - | |DropFX|DropFX 1,1, 1000|Layer, Index, duration ms| | + | numerical result that gives " |
| - | |Echo|Echo 2 |0-none, 1-ok/error, 2-echo of input plus ok/error| | + | variable it's possible to write "if (variable) |
| - | |EnableDmxIn|EnableDmxIn Toggle |ON, OFF, TOGGLE| | + | |
| - | |EnableFb3StyleDmxIn|EnableFb3StyleDmxIn 1|On(1), Off(0), Toggle(2)| | + | Compare operators are: ">" |
| - | |EnableLaserOutput|EnableLaserOutput| | + | |
| - | |ExecCmd|ExecCmd " | + | You can combine comparing operations with "&" |
| - | |Exit|Exit| | + | |
| - | |ExitBEYOND|ExitBEYOND|Exit from BEYOND| | + | operator |
| - | |FX|FX 0,0,0,0|One or more layers. 0 stop. Effect | + | |
| - | |FXAction|FXAction 100,100, | + | === GOTO operator === |
| - | |FXCellClick|FXCellClick 1,1| | + | |
| - | |FXCellDown|FXCellDown 1, 1|Layer number: 1..4, Effect number| | + | |
| - | |FXClick|FXClick 1,1| | + | Syntax: |
| - | |FXScroll|FXScroll 1| | + | |
| - | |FXScrollDelta|FXScrollDelta 8| | + | " |
| - | |FXTimeScaleAx|FXTimeScaleAx 1,2,1|Layer, Mask (1,2,3), multiplier| | + | |
| - | |FXTimeScaleAxReset|FXTimeScaleAxReset 1,2|Layer, Mask (1,2,3)| | + | mylabel: WaitForBeat 4 |
| - | |FXTimeScaleDeltaAx|FXTimeScaleDeltaAx 1, | + | ... do something... |
| - | |FXTimeSync|FXTimeSync | + | goto mylabel |
| - | |FocusCell|FocusCell 1, | + | |
| - | |FocusCellIndex|FocusCellIndex 1|cell index, 1..60| | + | |
| - | |FocusProTrack|FocusProTrack 1|Track index/ | + | Operator GOTO can work with the labels inside the string variables. It means that you declare string variable, assign a label name to variable, and then you a variable in GOTO. |
| - | |FocusProjector|FocusProjector 1|Projector index, 1..N.| | + | Example: |
| - | |FocusZone|FocusZone 1|zone index, 1..N.| | + | |
| - | |GetFxControl|GetFxControl|| | + | var s |
| - | |GetLiveControl|GetLiveControl| | + | s=" |
| - | |GetPage|GetPage| | + | goto s |
| - | |GetTimeControl|GetPage| | + | |
| - | |GoGridMode|GoGridMode| | + | DisplayPopup "It does not work" |
| - | |GoPlayListMode|GoPlayListMode| | + | exit |
| - | |GoTimelineMode|GoTimelineMode| | + | |
| - | |GoUniverseMode|GoUniverseMode| | + | mylabel: |
| - | |GroupCue|GroupCue| | + | DisplayPopup "It works" |
| - | |Hello|hello|answer | + | |
| - | |HoldClick|HoldClick ON| | + | |
| - | |HtmlBody|HtmlBody| | + | |
| - | |HtmlClearBody|HtmlClearBody| | + | |
| - | |HtmlClearHead|HtmlClearHead| | + | === VAR operator === |
| - | |HtmlHead|HtmlHead| | + | |
| - | |HtmlHide|HtmlHide| | + | |
| - | |HtmlUpdate|HtmlUpdate| | + | PangoScript allow define local variables. The lifetime for the local variable defined by lifetime of the Scripter that execute PangoScript. As soon as the Scripter freed, all its local variables are removed as well. |
| - | |Hue|Hue | + | |
| - | |HueDelta|HueDelta 0| | + | All variables must be declared before the using. No need to specify the type of variable. The variable automatically adjust the type depending on value. Internally supported integer, float and string variables. |
| - | |HueShift|HueShift 0| | + | The declaration start from VAR operation and the follow one or more variable names. As example: |
| - | |HueShiftDelta|HueShiftDelta 0| | + | |
| - | |InRangeTrigger|InRangeTrigger 0,100," | + | var MyVariable |
| - | |InRangeTriggerCmd|InRangeTriggerCmd 0,100," | + | var a,b,c |
| - | |IncreaseTrigger|IncreaseTrigger 0,100," | + | |
| - | |InvertPlayersTime|InvertPlayersTime| | + | Before using the variable must be initialized by some value. Otherwise BEYOND |
| - | |InvertProTrackTime|InvertProTrackTime| | + | var MyInteger, MyString |
| - | |InvertRotationX|InvertRotationX| | + | MyInteger = 10 |
| - | |InvertRotationY|InvertRotationY| | + | MyString = " |
| - | |InvertRotationZ|InvertRotationZ| | + | |
| - | |LessThanTrigger|LessThanTrigger 0," | + | All variables declared as VAR are local. |
| - | |LinePerCycle|LinePerCycle 24| | + | |
| - | |LoadCue|LoadCue " | + | |
| - | |LoadCueFromBlob|< | + | GLOBALVAR operator |
| - | |LoadPlaylist|LoadPlaylist " | + | The variable can be declared as global. In this case, it visible in ALL scripts of BEYOND. |
| - | |LoadWorkspace|LoadWorkspace "c:\MyWorkspace.BeyondWorkspace" | + | |
| - | |LoadZoneFromBlob|< | + | |
| - | |MakeSecuredFile|MakeSecuredFile "Input file name", " | + | |
| - | |ManualBeat|ManualBeat| | + | |
| - | |MasterAudioVolume|MasterAudioVolume 100|in percents| | + | ==== General functions ==== |
| - | |MasterAudioVolumeMute|MasterAudioVolumeMute 1|On(1), Off(0), Toggle(2)| | + | |
| - | |MasterClockShift|MasterClockShift | + | |
| - | |MasterCueLcSpeed|MasterCueLcSpeed 100|in percents| | + | intstr(value:number):string - transform number to string |
| - | |MasterCueSpeed|MasterCueSpeed 100|in percents| | + | value - number |
| - | |MasterEffectClockShift|MasterEffectClockShift | + | result - string |
| - | |MasterEffectMetroShift|MasterEffectMetroShift 0|in beats| | + | |
| - | |MasterFXSpeed|MasterFXSpeed 100|in percents| | + | floatstr(value:number):string - transform number to string |
| - | |MasterLCSpeed|MasterLCSpeed 100|in percents| | + | value - number |
| - | |MasterMetroShift|MasterMetroShift 0|in beats| | + | result |
| - | |MasterPause|MasterPause Toggle |ON, OFF, TOGGLE| | + | |
| - | |MasterPauseTime|MasterPauseTime 1000|time in milliseconds| | + | abs(value: |
| - | |MasterShowBrightness|MasterShowBrightness | + | value - integer or float number |
| - | |MasterShowSpeed|MasterShowSpeed | + | result - same type as argument. result is absolute value |
| - | |MasterSpeed|MasterSpeed | + | |
| - | |MasterTransition|MasterTransition ON| | + | int(value:number): |
| - | |MasterTransitionIndex|MasterTransitionIndex 2| | + | value - a float point number |
| - | |MasterTransitionTime|MasterTransitionTime 0.1| | + | |
| - | |MasterZoneFxSpeed|MasterZoneFxSpeed 100|in percents| | + | frac(value:number):float - return fractional part of float point value |
| - | |MeshCurve|MeshCurve 1,2, | + | value - float |
| - | |MeshPoint|MeshPoint | + | |
| - | |MeshPointChan|MeshPointChan | + | round(value:float): |
| - | |MeshPolygon|MeshPolygon 1,2|connect 1st and 2nd point| | + | value - a float point number |
| - | |MeshRect|MeshRect 1,2,3,4 | | + | |
| - | |MeshSpline|MeshSpline 1,2,3, | + | sqr(value:number):number - return a square of argument |
| - | |MeshTriangle|MeshTriangle 1,2,3| | + | value - a float point number or integer |
| - | |MidiOut|MidiOut 0x90, 0x40, 0x7F| | + | |
| - | |MidiOutLong|MidiOutLong 0x90, 0x40, 0x7F| | + | sqrt(value: |
| - | |MidiSysexAdd|MidiSysexAdd | + | value - a float point number or integer |
| - | |MidiSysexSend|MidiSysexSend|send prepared sysex buffer| | + | |
| - | |MidiSysexStart|MidiSysexStart |clear Sysex buffer| | + | cos(value: |
| - | |MoreThanTrigger|MoreThanTrigger 0," | + | value - a float point number or integer. angle in radians |
| - | |MoveFocus|MoveFocus -1,0|number of cells to go horizontally and vertically| | + | |
| - | |MulFXMulAx|MulFXMulAx 1, 3, 1|Multiply multiplier... :-) Layer number: 1..4, Mask (1 is clock, 2 is beat, 3 is clock and beat), Value of multiplier| | + | sin(value: float): |
| - | |MultiCue|MultiCue| | + | value - a float point number or integer. angle in radians |
| - | |MuteAllProTracks|MuteAllProTracks| | + | |
| - | |MuteProTrack|MuteProTrack 1|index(es) or name(s)| | + | tan(value: |
| - | |MuteSelected|MuteSelected| | + | value - a float point number or integer. angle in radians |
| - | |MuteSelectedZones|MuteSelectedZones OFF|ON, OFF, TOGGLE| | + | |
| - | |MuteZone|MuteZone 0|index(es) or name(s)| | + | arcsin(value: |
| - | |MuteZonesOfProjector|MuteZonesOfProjector 1|projector index, 1..N.| | + | value - a float point number or integer. angle in radians |
| - | |OneCue|OneCue|one cue per workspace| | + | |
| - | |OnePer|OnePer|one cue per projectoin zone | | + | arccos(value: |
| - | |OscOut|OscOut "/ | + | value - a float point number or integer. angle in radians |
| - | |OscOutTTS|OscOutTTS "","" | + | |
| - | |OutOfRangeTrigger|OutOfRangeTrigger 0,100," | + | arctan(value: |
| - | |OutOfRangeTriggerCmd|OutOfRangeTriggerCmd 0, | + | value - a float point number or integer. angle in radians |
| - | |Password|password "enter pasword here"| | + | |
| - | |PasteToCue|PasteToCue| | + | arctan2(dx, dy: |
| - | |PauseCue|PauseCue 1,1, TOGGLE|page, cue, action | + | dx, dy - .... |
| - | |PlayListFirst|PlayListFirst| | + | |
| - | |PlayListLast|PlayListLast| | + | min(a,b: |
| - | |PlayListNext|PlayListNext| | + | a,b float or integer |
| - | |PlayListPlay|PlayListPlay| | + | |
| - | |PlayListPrev|PlayListPrev| | + | max(a, |
| - | |PlayListSetPos|PlayListSetPos 1| | + | a,b float or integer |
| - | |PlayListSetTime|PlayListSetTime 0| | + | |
| - | |PlayListStop|PlayListStop| | + | pi:float - return PI value - 3.1415926... |
| - | |PlayTimeline|PlayTimeline| | + | |
| - | |PlayersDisk|PlayersDisk 1, 0.1| | + | invert(value: |
| - | |PlayersDiskShift|PlayersDiskShift 0.1| | + | |
| - | |PlayersResetJump|PlayersResetJump| | + | ==== Date and Time ==== |
| - | |PlayersSetJump|PlayersSetJump| | + | |
| - | |PlayersSetLoop|PlayersSetLoop| | + | |
| - | |Position|Position 0,0,0|X,Y,Z position. | | + | now:float - date& |
| - | |PositionDelta|PositionDelta 0,0,0|X,Y,Z | | + | |
| - | |PositionIndex|PositionIndex 1,0|one axiz only: 1 is X, 2 is Y, 3 is Z. Second paramater | + | tickcount: integer - return number of millisecond |
| - | |PositionX|PositionX 0 |-100..100| | + | |
| - | |PositionY|PositionY 0 |-100..100| | + | hms(hour, minute, second): |
| - | |PositionZ|PositionZ | + | |
| - | |PreviewMaster|PreviewMaster| | + | GetYear: |
| - | |PreviewNxN|PreviewNxN 1|1 - laser, | + | |
| - | |ProTrackDisk|ProTrackDisk 1, 0.1| | + | GetMonth: |
| - | |ProTrackDiskShift|ProTrackDiskShift 0.1| | + | |
| - | |ProTrackResetJump|ProTrackResetJump| | + | GetDay: |
| - | |ProTrackSetJump|ProTrackSetJump| | + | |
| - | |ProTrackSetLoop|ProTrackSetLoop| | + | timestr(now: |
| - | |ProjectionZonesDialog|ProjectionZonesDialog| | + | now - is variable |
| - | |PulseEvent|PulseEvent " | + | |
| - | |QLog|QLog "My message to QLog tab" | + | timestrlong(now: |
| - | |RGBA|RGBA 255, | + | now - is variable representing time. Function return string with hours, minutes, seconds, such as "11:53:10" |
| - | |RGBADelta|RGBADelta 0,0,0,0| | + | |
| - | |ReStartCell|RestartCell|restart | + | datestr(now: |
| - | |ReStoreZoneSelection|ReStoreZoneSelection| | + | now - is variable representing date. Function return string short date format such as "21.11.2012" |
| - | |RebootConnectedFB4|RebootConnectedFB4|If you need to use this command then please contact Pangolin (report@pangolin.com) and tell what is wrong with your FB4. Thanks.| | + | |
| - | |RefreshDmxIn|RefreshDmxIn|activate update of DMX IN reactions, independently on data changed or no| | + | datestrlong(now: |
| - | |RegisterOscFeedback|RegisterOscFeedback | + | now - is variable representing date. Function return string long date format such as "21 ������ 2012 �." |
| - | |ResetCuesFX|ResetCuesFX| | + | |
| - | |ResetFxTiming|ResetFxTiming| | + | dayofweek(now:float):string - short version day of the week |
| - | |ResetLCTab|ResetLCTab| | + | |
| - | |ResetLiveControl|ResetLiveControl| | + | dayofweeklong(now: |
| - | |ResetMasterFX|ResetMasterFX| | + | |
| - | |ResetMidiFeedback|ResetMidiFeedback| | + | ==== String functions ==== |
| - | |ResetOscFeedback|ResetOscFeedback| | + | |
| - | |ResetPosition|ResetPosition| | + | |
| - | |ResetProTrackFX|ResetProTrackFX| | + | uppercase(string): |
| - | |ResetRotation|ResetRotation| | + | |
| - | |ResetRotationX|ResetRotationX| | + | lowercase(string: |
| - | |ResetRotationY|ResetRotationY| | + | |
| - | |ResetRotationZ|ResetRotationZ| | + | crlf:string - return a string, line separator (13,10) |
| - | |ResetZonesFX|ResetZonesFX| | + | |
| - | |Restart|Restart| | + | |
| - | |RestartCue|RestartCue 1,1|page, cue| | + | |
| - | |RestorePlayer|RestorePlayer| | + | ==== Clock And Metronome ==== |
| - | |ResyncByCueClick|ResyncByCueClick On |options: On, Off, Toggle| | + | |
| - | |RotoSpeed|RotoSpeed 0,0,0 |rotation speed by X,Y,Z axis. degree.| | + | |
| - | |RotoSpeedDelta|RotoSpeedDelta 0, | + | b2s(beats) - transform beats to seconds |
| - | |RotoSpeedX|RotoSpeedX 0|rotation speed, degree| | + | |
| - | |RotoSpeedY|RotoSpeedY 0|rotation speed, degree| | + | b2ms(beats) - transform beats to milliseconds |
| - | |RotoSpeedZ|RotoSpeedZ 0|rotation speed, degree| | + | |
| - | |RunApp|RunApp " | + | s2b(seconds) - transform seconds to beats |
| - | |Saturation|Saturation 0| | + | |
| - | |SaturationDelta|SaturationDelta 0| | + | b2s(seconds) - transform beats to seconds |
| - | |ScanRate|ScanRate 100| | + | |
| - | |ScanRateDelta|ScanRateDelta 0| | + | |
| - | |SelectAllCat|SelectAllCat| | + | ==== Functions ==== |
| - | |SelectAndFocusZone|SelectAndFocusZone | + | |
| - | |SelectCat|SelectCat 1|category index, 1..N.| | + | |
| - | |SelectCatName|SelectCatName " | + | There are a few functions for access of incoming data |
| - | |SelectCue|SelectCue " | + | |
| - | |SelectFixt|SelectFixt 0|index(es) or name(s)| | + | Dmx ( Channel, OutputMin, OutputMax ) |
| - | |SelectGrid|SelectGrid 1|1-main grid, 2-grid at bottom. 0-recently active| | + | Parameters: |
| - | |SelectMidi|SelectMidi 1|select MIDI device pair, 1..4.| | + | Channel - index of DMX channel, acceptable value from 1 to 2048 |
| - | |SelectNextCat|SelectNextCat| | + | OutputMin, OutputMax - defines the range resulting value of the function. Oupout value will start from OutputMin and increase up to OutputMax |
| - | |SelectNextCatGrid1|SelectNextCatGrid1| | + | result |
| - | |SelectNextPage|SelectNextPage| | + | |
| - | |SelectNextPageGrid1|SelectNextPageGrid1| | + | Example: |
| - | |SelectNextTab|SelectNextTab| | + | |
| - | |SelectNextTabGrid1|SelectNextTabGrid1| | + | |
| - | |SelectPage|SelectPage 1|tab index, 1..N.| | + | in this example we use Position command that has 3 arguments - X,Y,Z and we use DMX IN values |
| - | |SelectPageName|SelectPageName | + | |
| - | |SelectPrevCat|SelectPrevCat| | + | Dmx ( Channel |
| - | |SelectPrevCatGrid1|SelectPrevCatGrid1| | + | or |
| - | |SelectPrevPage|SelectPrevPage| | + | Dmx( Channel, OutputMin, OutputMax) |
| - | |SelectPrevPageGrid1|SelectPrevPageGrid1| | + | Parameters: |
| - | |SelectPrevTab|SelectPrevTab| | + | Channel - index of DMX channel, acceptable |
| - | |SelectPrevTabGrid1|SelectPrevTabGrid1| | + | Result of the function is value of DMX channel as it is, without anr range adjustments |
| - | |SelectProTrack|SelectProTrack 1|index(es) (1..N) or name(string). Can be used more than one argument| | + | |
| - | |SelectProjector|SelectProjector 1|index(es) (1..N) or name(string). Can be used more than one argument| | + | OutputMin, OutputMax - defines the range resulting value of the function. Output value will start from OutputMin and increase up to OutputMax. Internally channels are normalized to 0...1 range |
| - | |SelectTab|SelectTab 1 |tab index, 1..N.| | + | result |
| - | |SelectTabName|SelectTabName " | + | Example: |
| - | |SelectZone|SelectZone 1|zone index, 1..N.| | + | DisplayPopup Dmx(10) // display the value of 10th DMX channel. |
| - | |SelectZoneName|SelectZoneName | + | |
| - | |SetActiveGrid|SetActiveGrid 1|or 2 | | + | Note: version with min/max used for simplification of use of function in operators where you may need to transform DMX value range (0..255) to some other range. As example Size operator, you may want to use size range like 0...100, or 10...100, or -100..100. |
| - | |SetAttractionSlider|SetAttractionSlider 10| | + | |
| - | |SetAudioGain|SetAudioGain 10|1..15| | + | Channel ( Channel, OutputMin, OutputMax ) |
| - | |SetAudioInGain|SetAudioInGain 10|1 is min, 15 is max, 10 default| | + | or |
| - | |SetAudioInRelease|SetAudioInRelease 75|1 is min, 99 is max (slowest) 75 is default| | + | Channel( Channel ) |
| - | |SetAudioRelease|SetAudioRelease 75|1..99| | + | |
| - | |SetBpm|SetBpm 120| | + | Parameters: |
| - | |SetBpmDelta|SetBpmDelta 1| | + | Channel - index of Channel, acceptable value from 1 to 255 |
| - | |SetButtonMSL|SetButtonMSL 1| | + | OutputMin, OutputMax - defines the range resulting value of the function. Output value will start from OutputMin and increase up to OutputMax. Internally channels are normalized to 0...1 range |
| - | |SetChannelToChannelRatio|SetChannelToChannelRatio 0|0..100| | + | result |
| - | |SetCueCaptionColor|SetCueCaptionColor 1,2, 0x0000FF |page 1, cue 2, color (windows, 24bit color)| | + | |
| - | |SetDmxEditorChannel|SetDmxEditorChannel 1, 128| | + | If function has one argument then result is normalized channel value (range from 0 to 1) |
| - | |SetDmxToChannelRatio|SetDmxToChannelRatio 0|0..100| | + | |
| - | |SetEffectChannelAction|SetEffectChannelAction 0 |0..100| | + | Example: |
| - | |SetFFTToChannelRatio|SetFFTToChannelRatio 0|0..100| | + | Size Channel(10, 5, 100), ChannelIn(10, 5, 100), ChannelIn(10, 5, 100), |
| - | |SetFX|SetFX 1, 1|Layer number: 1..4, Effect index: 1..100| | + | |
| - | |SetFX1MSL|SetFX1MSL 1| | + | in this example we use Size command that has 3 arguments - X, Y,Z and we use Channel 10 value for all 3 axis. |
| - | |SetFX2MSL|SetFX2MSL 1| | + | |
| - | |SetFX3MSL|SetFX3MSL 1| | + | Channel ( Channel ) |
| - | |SetFX4MSL|SetFX4MSL 1| | + | Parameters: |
| - | |SetFX5MSL|SetFX5MSL 1| | + | Channel - index of Channel, acceptable value from 1 to 255 |
| - | |SetFX6MSL|SetFX6MSL 1| | + | Result of the function is channel value. Channel value is normalized, the range from 0 to 1. |
| - | |SetFXAction|SetFXAction 1, 100|Layer number: 1..4, Action 0..100 percent| | + | |
| - | |SetFXAction1|SetFXAction1 100|Action 0..100 percent| | + | |
| - | |SetFXAction2|SetFXAction2 100|Action 0..100 percent| | + | CC (Channel, Controller, OutputMin, OutputMax) |
| - | |SetFXAction3|SetFXAction3 100|Action 0..100 percent| | + | Get a value of of MIDI controller. BEYOND memorize all values of incoming MIDI controllers |
| - | |SetFXAction4|SetFXAction4 100|Action 0..100 percent| | + | Channel - value 0..15 |
| - | |SetFXAction5|SetFXAction5 100|Action 0..100 percent| | + | Controller - value 0..127. Thsi is Data1 in MIDI messages |
| - | |SetFXAction6|SetFXAction6 100|Action 0..100 percent| | + | OutputMin, OutputMax - defines the range resulting value. Result |
| - | |SetFXAction7|SetFXAction7 100|Action 0..100 percent| | + | |
| - | |SetFXAction8|SetFXAction8 100|Action 0..100 percent| | + | |
| - | |SetFXMul|SetFXMul 1, 1,1|Layer number: 1..4, Multiplier | + | ExtValue( OutputMin, OutputMax ) |
| - | |SetFXMulAx|SetFXMulAx 1, 3, 1|Layer number: 1..4, Mask (1 is clock, 2 is beat, 3 is clock and beat), Value of multiplier| | + | There are a few pretty big tables of code-sources. A tables such as DMX, ArtNet, ControlChange, |
| - | |SetFXMute|SetFXMute 1, 0|Layer number: 1..4, 0-Off, 1-On, 2-Toggle| | + | |
| - | |SetFrictionSlider|SetFrictionSlider 10| | + | In this example PositionIndex is a live control command, see below. |
| - | |SetGrid1MSL|SetGrid1MSL 1| | + | |
| - | |SetGrid1Page|SetGrid1Page | + | ExtDelta( Delta ) |
| - | |SetGrid2MSL|SetGrid2MSL 1| | + | Function equal to ExtValue but made specially for MIDI encoders. There are many controlled with wheels and knobs that generate Control Change message and the data2 value is 00 or 7F. That is all, no values in between. For such cases has a sense to use " |
| - | |SetGrid2Page|SetGrid2Page 1| | + | |
| - | |SetGridSize|SetGridSize 8,5| | + | PositionDelta |
| - | |SetGridView|SetGridView| | + | |
| - | |SetLimiterBeam|SetLimiterBeam 5| | + | another example: |
| - | |SetLimiterDMX|SetLimiterDMX 5| | + | |
| - | |SetLimiterFlash|SetLimiterFlash 4| | + | AngleDelta 0,0, ExtDelta(45) // rotate by Z on 45 degrees. |
| - | |SetLimiterHold|SetLimiterHold 3| | + | |
| - | |SetLimiterPerGrid|SetLimiterPerGrid 10| | + | Random( MaxValue ) |
| - | |SetLimiterPerZone|SetLimiterPerZone 3| | + | Function return random value in range 0..MaxValue. Note, MaxValue included into the range |
| - | |SetLimiterProfile|SetLimiterProfile 1| | + | |
| - | |SetLimiterShow|SetLimiterShow 2| | + | RandomIn( MinValue, MaxValue ) |
| - | |SetLocation|SetLocation 1, 0, | + | Functino return random value in range MinValue..MaxValue |
| - | |SetMassSlider|SetMassSlider 4| | + | |
| - | |SetMidiLayer|SetMidiLayer 1|1..8.| | + | Param( ParamIndex ) - newer name of OscParam() function. It get the value of parameter supplied into the script. See commend about OscParam() |
| - | |SetPage|SetPage 1| | + | |
| - | |SetPhysicsCheckbox|SetPhysicsCheckbox ON| | + | OscParam( ParamIndex ) |
| - | |SetPlayListView|SetPlayListView| | + | Specialy designed for use in "OSC to CODE" |
| - | |SetProTrackZones|SetProTrackZones 1, 1|Track index/name, Zone name(es)/index(es)| | + | |
| - | |SetSliderMSL|SetSliderMSL 1| | + | ParamRange( MinValue, MaxValue) function return TRUE (1) if the first parameter inside the specified range. |
| - | |SetTimelineView|SetTimelineView| | + | |
| - | |SetTransitionIndex|SetTransitionIndex 2| | + | ParamRange(ParamIndex, |
| - | |SetTransitionTime|SetTransitionTime 0.1| | + | |
| - | |SetUCenterPage|SetUCenterPage 1|set first page| | + | GetTransitionName( index ) |
| - | |SetUEditPage|SetUEditPage 1|set first page| | + | function return string, the name of transition. Index is number of transition. Range 0..23 |
| - | |SetUMaxPage|SetUMaxPage 1|set first page| | + | |
| - | |SetUPreviewPage|SetUPreviewPage 1|set first page| | + | BeatTime |
| - | |SetURightPage|SetURightPage 1|set first page| | + | Function has no arguments. The result of function is float point number. Integer part of function is number of beat from the start of BEYOND. The fractional part is progress inside the beat. |
| - | |SetUToolPage|SetUToolPage 1|set first page| | + | |
| - | |SetUniverseView|SetUniverseView| | + | GetMidiDeviceIndex |
| - | |SetVdjToChannelRatio|SetVdjToChannelRatio 0|0..100| | + | function return currently selected MIDI Device pair, Value range 1..4. |
| - | |SetWorkspacePageCount|< | + | |
| - | |SetZoneMeshPointPos|SetZoneMeshPointPos 1, 1,1, 0,0|Zone index, X node index, Y node index, X coordinate (-32K..32K), y coordinate| | + | ObjectExists( AObjectName |
| - | |SetZoneMuteMSL|SetZoneMuteMSL 1| | + | |
| - | |SetZoneSelMSL|SetZoneSelMSL 1| | + | |
| - | |ShiftFX|ShiftFX 1, 1|Layer 1..4, delta| | + | ==== Timecode input ==== |
| - | |ShiftFocus|ShiftFocus -5|go back and forth on N cells| | + | |
| - | |ShowHint|ShowHint " | + | |
| - | |ShowItNowSMS|ShowIsNowSMS 1| | + | GetTimeCode - return latest timecode value as a float point value, value in seconds |
| - | |ShowMasterHelpFile|ShowMasterHelpFile| | + | |
| - | |ShutDownWindows|ShutDownWindows|require ShutDownWindows.exe application| | + | GetTimeCodeTick - return the tick when the last timecode value arrived. Use function GetTick for getting the current tick value. |
| - | |Size|Size 100,100,100|Size X,Y,Z axis| | + | |
| - | |SizeDelta|SizeDelta 0,0,0|shift Size value| | + | ==== Cue related functions ==== |
| - | |SizeIndex|SizeDelta 0,0| | + | |
| - | |SizeX|SizeX 100| | + | |
| - | |SizeY|SizeY 100| | + | CuePlaying( PageIndex, CueIndex) - function return |
| - | |SizeZ|SizeZ 100| | + | Example: CuePlaying(1,1) //return state of first cue on a first page. Note, function is not applicable for ProTracks and DMX server. |
| - | |Sleep|Sleep 1000| | + | |
| - | |SoloProTrack|SoloProTrack 1|index(es) or name(s)| | + | CueEmpty(PageIndex, CueIndex) - function return 1 if cue is empty, otherwise return 0. Indexing of page and cue starts from 1. |
| - | |StartAudioRecord|StartAudioRecord| | + | |
| - | |StartCell|StartCell|start current cell| | + | GetCueCaptionColor(PageIndex, |
| - | |StartCode|StartCode " | + | |
| - | |StartCue|StartCue 1,1| | + | |
| - | |StartPrevious|StartPrevious|" | + | ==== Misc ==== |
| - | |StartTalkClient|StartUdpTalkClient| | + | |
| - | |StartTalkServer|StartUdpTalkServer| | + | |
| - | |StopAllAsync|StopAllAsync 0.5|duration in seconds| | + | GetBeyondBuild - return integer value, build of BEYOND application. |
| - | |StopAllNow|StopAllNow|no arguments| | + | |
| - | |StopAllSync|StopAllSync | + | GetMidiDeviveIndex - return current MIDI device index associated with this script. BEYOND can use 4 MIDI devices. By default script associated with 1st device. There is a command for change device index. This function allows to check current association. Indexing from 1. |
| - | |StopAudioRecord|StopAudioRecord| | + | |
| - | |StopCell|StopCell|stop current cell| | + | GetMidiDeviceLayer - return current layer of MIDI device mapping. |
| - | |StopCode|StopCode " | + | |
| - | |StopCue|StopCue 1,1| | + | ==== User Interface ==== |
| - | |StopCueNow|StopCueNow 1, 1|page 1..100, cue 1..100| | + | |
| - | |StopCueSync|StopCueSync 1, 1, 0.5|page 1..100, cue 1..60, time 0..| | + | |
| - | |StopCueType|StopCueType 255 |Mask: 1-Image, 2-Timeline, 4-DMX, 8-Sequence, 16-Beams, 32-Capture| | + | GetLcTabMode: |
| - | |StopFX|StopFX|One | + | Values are: |
| - | |StopFxCell|StopFXCell|Layer index, optional Cell index (relative, take into account scrollbar)| | + | 1 - Master |
| - | |StopOnBlackout|StopOnBlackout 1| | + | 2 - Cue |
| - | |StopProTrack|StopProTrack 1|index(es) (1..N) | + | 3 - Zone |
| - | |StopProTrackFX|StopProTrackFX 1, 1|Track index/name and FX line index(es). Counting from 1. If no arguments at all - stop all FX on all tracks| | + | 4 - ProTrack |
| - | |StopTalkClien | + | |
| - | |StopTalkServer|StopUdpTalkServer| | + | GetTcTabMode: |
| - | |StopTimeline|StopTimeline| | + | |
| - | |StoreZoneSelection|StoreZoneSelection| | + | GetFxTabMode: |
| - | |StrobeSpeed|StrobeSpeed 0.2|period, flicker per second| | + | |
| - | |StrobeSpeedDelta|StrobeSpeedDelta 0.1|period, flicker per second| | + | GetGrid1Mode: |
| - | |SynchronizePlayerToBeat|SynchronizePlayerToBeat On |options: On, Off, Toggle| | + | 0 - Select mode |
| - | |TapByCueClick|TapByCueClick On |options: On,Off, Toggle| | + | 1 - Flash mode |
| - | |TimelineAddMarker|TimelineAddMarker | | + | 2 - FlashSolo mode |
| - | |TimelineEnableTC|TimelineEnableTC| | + | 3 - Toggle mode |
| - | |TimelineFirstTab|TimelineFirstTab| | + | 4 - Restart mode |
| - | |TimelineJumpDelta|TimelineJumpDelta 1|one second| | + | 5 - ProTrack mode |
| - | |TimelineJumpToEnd|TimelineJumpToEnd| | + | |
| - | |TimelineJumpToStart|TimelineJumpToStart| | + | GetGrid2Mode: |
| - | |TimelineLastTab|TimelineLastTab| | + | |
| - | |TimelineMarker|TimelineMarker| | + | |
| - | |TimelineNextEditPoint|TimelineNextEditPoint| | + | ==== Timeline mode functions ==== |
| - | |TimelineNextMarker|TimelineNextMarker| | + | |
| - | |TimelineNextTab|TimelineNextTab| | + | |
| - | |TimelinePlay|TimelinePlay| | + | GetTimelinePos: |
| - | |TimelinePlayFromMarker|TimelinePlayFromMarker | + | |
| - | |TimelinePrevEditPoint|TimelinePrevEditPoint| | + | GetTimelineDuration: |
| - | |TimelinePrevMarker|TimelinePrevMarker| | + | |
| - | |TimelinePrevTab|TimelinePrevTab| | + | GetTimelineOnline: |
| - | |TimelineQuickSave|TimelineQuickSave| | + | |
| - | |TimelineSetPos|TimelineSetPos 10|jump to second | + | GetTImelinePlaying: |
| - | |TimelineSetTabIndex|TimelineSetTabIndex| | + | |
| - | |TimelineSetTabName|TimelineSetTabName | + | GetTimlineTabIndex: |
| - | |TimelineSetViewRange|TimelineSetViewRange | + | |
| - | |TimelineShiftViewRange|TimelineShiftViewRange 1|one second shift| | + | GetTimelineTabName: |
| - | |TimelineShowItNow|TimelineShowItNow 1|set online mode for timeline editor| | + | |
| - | |TimelineStop|TimelineStop| | + | |
| - | |TimerBeat|TimerBeat| | + | |
| - | |ToggleCell|Toggle|start/stop current cell| | + | ==== FX and Live Control commands ==== |
| - | |ToggleCue|ToggleCue 1,1| | + | |
| - | |ToggleFX|ToggleFX 1|Layer number: 1..4| | + | |
| - | |ToggleMuteProTrack|ToggleMuteProTrack 1|index(es) or name(s)| | + | The Destination |
| - | |ToggleMuteZone|ToggleMuteZone 0|index(es) or name(s)| | + | |
| - | |ToggleMuteZoneOfProjector|ToggleMuteZoneOfProjector 1|1st projector| | + | A few words about commands of BEYOND. Each command of BEYOND has information about: |
| - | |TogglePrevious|TogglePrevious|"SWAP" | + | Sender - who initiated the command |
| - | |ToggleSelectFixt|ToggleSelectFixt| | + | Server - who is recipient / server of the command. As example - zone, cue, master, and so on |
| - | |ToggleSelectProTrack|ToggleSelectProTrack 1|index(es) (1..N) or name(s)| | + | Server index - index of server, of there are many such servers. As example - Projection Zone |
| - | |ToggleSelectProjector|ToggleSelectProjector 1|index(es) (1..N) or name(s)| | + | Command - the command itself |
| - | |ToggleSelectZone|ToggleSelectZone 1|zone index, 1..N.| | + | Arguments - depends on exact commands. |
| - | |ToggleSoloProTrack|ToggleSoloProTrack 1|index(es) | + | |
| - | |ToggleUCenterPage|ToggleUCenterPage 1 |Relative command. +1 means next page, -1 means previous| | + | Lets consider example. We want to set the size of second projection zone to 50%. In this case, command will have such values |
| - | |ToggleUEditPage|ToggleUEditPage 1|Relative command. +1 means next page, -1 means previous| | + | Sender - BEYOND set it automatically, no worry about |
| - | |ToggleUMaxPage|ToggleUMaxPage 1 |Relative command. +1 means next page, -1 means previous| | + | Server - Zone |
| - | |ToggleUPreviewPage|ToggleUPreviewPage 1 |Relative command. +1 means next page, -1 means previous| | + | Server index - 2 |
| - | |ToggleURightPage|ToggleURightPage 1 |Relative command. +1 means next page, -1 means previous| | + | Command - Size |
| - | |ToggleUToolPage|ToggleUToolPage 1 |Relative command. | + | Arguments - 50,50,50 |
| - | |Transition|Transition Toggle |ON, OFF, TOGGLE| | + | |
| - | |UnMuteZonesOfProjector|UnMuteZonesOfProjector | + | For the script, to make a complex command that include all fields is not practical. Because the process has two parts. The first part - you define the destination. By default it is Master. The second part is a Command itself. BEYOND memorize the setting of destination and all consequent commands will use it. |
| - | |UnSelectZone|UnSelectZone 1|zone index, 1..N.| | + | |
| - | |UnSelectZoneName|UnSelectZoneName | + | |
| - | |UnSoloAllProTrack|UnSoloAllProTrack| | + | |
| - | |UnSoloProTrack|UnSoloProTrack | + | ==== WaitFor command group ==== |
| - | |UnmuteAllProTracks|UnmuteAllProTracks| | + | |
| - | |UnmuteAllZone|UnmuteAllZone| | + | |
| - | |UnmuteProTrack|UnmuteProTrack | + | Sleep Time |
| - | |UnmuteZone|UnmuteZone 0|index(es) or name(s)| | + | Parameters: Time measured in milliseconds |
| - | |UnselectAllCue|UnselectAllCue| | + | Purpose: Allow to pause execution to defined time |
| - | |UnselectAllFixt|UnselectAllFixt| | + | Example |
| - | |UnselectAllProTracks|UnselectAllProTracks| | + | Example 2: |
| - | |UnselectAllProjectors|UnselectAllProjectors| | + | MidiOut 0x90, 0x40, 0x7F |
| - | |UnselectAllZones|UnselectAllZones| | + | Sleep(500); |
| - | |UnselectFixt|UnselectFixt 0|index(es) or name(s)| | + | MidiOut 0x90, 0x40, 0x00 |
| - | |UnselectProTrack|UnselectProTrack 1|index(es) (1..N) or name(s)| | + | Sleep(500); |
| - | |UnselectProjector|UnselectProjector 1|index(es) (1..N) or name(s)| | + | Restart |
| - | |VLJFX|VljFX 1, Toggle|index | + | |
| - | |Version|version|remote server will get exe file version| | + | |
| - | |VirtualLJ|VirtualLJ Toggle|ON, OFF, TOGGLE| | + | |
| - | |VisiblePoints|VisiblePoints 100|0..100 (percents)| | + | |
| - | |VisiblePointsDelta|VisiblePointsDelta 0| | + | ==== Timeline control ==== |
| - | |WaitForAudioBeat|WaitForAudioBeat 1| | + | |
| - | |WaitForBeat|WaitForBeat 7, 1| | + | |
| - | |WaitForCellDown|WaitForCellDown 1| | + | PlayTimeline |
| - | |WaitForCellUp|WaitForCellUp 1| | + | Start playback of current show in timeline editor |
| - | |WaitForChannel|WaitForChannel 1| | + | |
| - | |WaitForCueStart|WaitForCueStart 1 1| | + | StopTimeline |
| - | |WaitForCueStop|WaitForCueStop 1 1| | + | Stop playback of current show in timeline editor |
| - | |WaitForDmx|WaitForDmx 1| | + | |
| - | |WaitForEvent|WaitForEvent | + | TimelineMarker |
| - | |WaitForHotKey|WaitForHotKey|waiting for hotkey assigned to this script in Code-tab| | + | Add timeline marker. There are 3 modifications |
| - | |WaitForManualBeat|WaitForManualBeat 1| | + | TimelineMarker |
| - | |WaitForMidi|WaitForMidi 0x90, -1, -1| | + | TimelineMarker Color - addmarker with specified color at current time position |
| - | |WaitForPageChange|WaitForPageChange| | + | TimelineMarker Color, Time - add marker with specified color at specified time |
| - | |WaitForTC|WaitForTC 15,30,0,0|hours, minutes, seconds, ms| | + | Time - time in seconds, float point |
| - | |WaitForTime|WaitForTime 15,30,0,0|hours, minutes, seconds, ms| | + | Color - index, 1..10; |
| - | |WaitForTimePos|WaitForTimePos 21,00, | + | |
| - | |WaitForTimerBeat|WaitForTimerBeat 1| | + | |
| - | |Write|write| | + | |
| - | |WriteLn|writeln | + | |
| - | |ZoneFXTimeScale|ZoneFXTimeScale 1,2,1|Layer, Clock multipler, Metronome multiplier| | + | ==== Property Animation ==== |
| - | |ZoneFXTimeScaleDelta|ZoneFXTimeScaleDelta 0,0,0,0 | | + | |
| - | |ZoneFXTimeShift|ZoneFXTimeShift 1,2,1|Layer, Clock multipler, Metronome multiplier| | + | |
| - | |ZoneFXTimeShiftDelta|ZoneFXTimeShiftDelta | + | Property animation designed for linear change of property from one state to another during some period of time. Technically, this is sort of micro script, but BEYOND does this job automatically. Internally BEYOND has internal list of the tasks for object property animation. The list is dynamic. The only way to create request for property animation is a script. |
| - | |Zoom|Zoom 100|value -100..100| | + | |
| - | |ZoomDelta|ZoomDelta 0|shift zoom value| | + | Note, the execution of property animation performed right after execution of all script by dedicated thread of BEYOND. The time resolution is ~ 40 "FPS". For animation of laser related properties it might be not perfect because laser projector frame rate may be much higher. |
| + | |||
| + | AnimateProp PropertyName, | ||
| + | PropertyName - string that contain complete name of object and its property. The property must be numeric. | ||
| + | StartValue - number. Specify start value of the property during animation | ||
| + | FinishValue - number. Specify final value of the property during animation. | ||
| + | DurationMS - duration of animation in milliseconds | ||
| + | FinishEvent - optional parameter, string. Specify | ||
| + | |||
| + | Exmaple: | ||
| + | AnimapeProp " | ||
| + | // command change value of Master brightness from 100% to zero during 1000 ms (one second) | ||
| + | |||
| + | Example2 : | ||
| + | AnimapeProp " | ||
| + | // command change value of Master brightness from current value to zero during 500 ms (0.5 second) | ||
| + | |||
| + | |||
| + | AnimatePropDelta PropertyName, TotalDelta, DurationMS, FinishEvent | ||
| + | PropertyName - string that contain complete name of object and its property. The property must be numeric. | ||
| + | TotalDelta- number. Specify how much will change the value of specified property | ||
| + | DurationMS - duration of animation in milliseconds | ||
| + | FinishEvent - optional parameter, string. Specify name of Event that will be activated at the end of animation. Action equal to call of PulseEvent() procedure. | ||
| + | |||
| + | Example: | ||
| + | AnimatePropDelta | ||
| + | |||
| + | Example | ||
| + | AnimatePropDelta " | ||
| + | |||
| + | DeletePropAni PropertyName, PropertyName, PropertyName,,,, | ||
| + | Commamd delete existing animation-tasks from the pool. If no one parameter specified then command delete ALL tasks. Command can contain one or more names of properties. | ||
| + | PropertyName - string that contain complete name of object and its property. The property must be numeric. | ||
| + | |||
| + | Example1: | ||
| + | DeletePropAni | ||
| + | |||
| + | Example2: | ||
| + | DeletePropAni " | ||
| + | |||
| + | Example3: | ||
| + | DeletePropAni " | ||
| + | |||
| + | |||
| + | ==== MIDI Surface Layer (MSL) ==== | ||
| + | |||
| + | |||
| + | BEYOND offer more functions that can be mapped to MIDI sliders/ | ||
| + | |||
| + | MIDI Sufrace Layering allow connect multiple BEYOND features to one MIDI command (message). Layeing work with Main Grid, Secondary Grid, Sufrace Buttons, Surface Sliders, FX and Zone selection. Currently available 12 layers. Counting starts from 1 and up to 12. The function of BEYOND may belong to more than one layer. In this case this function stay active in all layers where it enabled. If the function of BEYOND | ||
| + | |||
| + | Simplified | ||
| + | |||
| + | Each MIDI Mapping object has preperty Layer. When you write to this propetry then it change Layer of all tables. Such operation equal to using of 12 commands descrived below. | ||
| + | |||
| + | Example: | ||
| + | Midi1.Layer=1 | ||
| + | Midi2.Layer=10 | ||
| + | Midi3.Layer=5 | ||
| + | |||
| + | |||
| + | Detailed control. | ||
| + | |||
| + | Each table has own Layer property that you can control independently. | ||
| + | |||
| + | |||
| + | |||
| + | ==== Triggers ==== | ||
| + | |||
| + | |||
| + | " | ||
| + | |||
| + | The simplest and classic example is when DMX come into some range of values, and the fact that the value is in range now it create some reaction. If the is not the same as "if value is in range then we do something" | ||
| + | |||
| + | No doubt it is possible to make a trigger by means for " | ||
| + | |||
| + | |||
| + | Trigger definition commands | ||
| + | |||
| + | DefineDmxTrigger ChannelIndex - this command | ||
| + | |||
| + | DefineMidiTrigger Message, Data1 - this command | ||
| + | |||
| + | DefineTrigger String-Expression, | ||
| + | |||
| + | The top level logic of these command is this. The most possible, the triggers will work with MIDI and DMX consoles. The trigger must be fix, and effective, because it will work on a high speed, because we have a trigger specially made for MIDI and DMX. BEYOND precalculate values and do it all in native code. But, not doubt will appear a need in some universal method, and in this case will help universal command DefineTrigger. This command work with expression, it is more slow because BEYOND need to calculate expression all the time, but it is very flexible, and work for all types of input data. You can use objects, variables, functions, expression and so on. It can work with Audio, Kinect or DMX, Universe or GamePad and any mix of this. So, for DefineTrigger we need to supply text of expression to trigger engine, and it is a string. | ||
| + | |||
| + | |||
| + | Trigger range commands | ||
| + | |||
| + | Here a formal description of commands, examples and logic after that. | ||
| + | |||
| + | InRangeTrigger MinValue, MaxValue, LabelName | ||
| + | The action will be activated when values comes in range between MinValue | ||
| + | MinValue - number, a minimum value of the range | ||
| + | MaxValue - number, a maximum value of the range | ||
| + | LabelName - string that contain label name | ||
| + | |||
| + | InRangeTriggerCmd MinValue, MaxValue, Command | ||
| + | The action will be activated when values comes in range between MinValue and MaxValue. When it happen the scripter execute Command. | ||
| + | MinValue - number, a minimum | ||
| + | MaxValue - number, a maximum value of the range | ||
| + | Command- string that contain a PangoScript command | ||
| + | |||
| + | |||
| + | OutOfRangeTrigger MinValue, MaxValue, LabelName | ||
| + | The action will be activated when values comes out of range of MinValue and MaxValue. When it happen the scripter does goto to LabelName. | ||
| + | MinValue - number, a minimum value of the range | ||
| + | MaxValue - number, a maximum value of the range | ||
| + | LabelName - string that contain label name | ||
| + | |||
| + | OutOfRangeTriggerCmd MinValue, MaxValue, Command | ||
| + | The action will be activated when values goes out of range of MinValue and MaxValue. When it happen the scripter execute Command. | ||
| + | MinValue - number, a minimum value of the range | ||
| + | MaxValue - number, a maximum value of the range | ||
| + | Command- string that contain a PangoScript command | ||
| + | |||
| + | |||
| + | IncreaseTrigger MinValue, MaxValue, LabelName | ||
| + | The action will be activated when value increase and stay in range of MinValue and MaxValue. When it happen the scripter does goto to LabelName. | ||
| + | MinValue - number, a minimum value of the range | ||
| + | MaxValue - number, a maximum value of the range | ||
| + | LabelName - string that contain label name | ||
| + | |||
| + | |||
| + | DecreaseTrigger MinValue, MaxValue, LabelName | ||
| + | The action will be activated when value decrease and stay in range of MinValue and MaxValue. When it happen the scripter does goto to LabelName. | ||
| + | MinValue - number, a minimum value of the range | ||
| + | MaxValue - number, a maximum value of the range | ||
| + | LabelName - string that contain label name | ||
| + | |||
| + | About the logic | ||
| + | |||
| + | The most simple is InRangeTrigger command. When values comes in range, then something happen. We can define a few ranges, and when value comes into the range then something will happen. What will happen? We considered a few options, and appeared that in simplest case one simple command will be enough. I mean, Blackout, or EnableLaserOutput, | ||
| + | |||
| + | There is inverted version of InRangeTrigger - OutOfRange trigger. The only different is goes to be activated when value goes out of range. All the rest is equal. There in Min and Max value, and there version of command for Command and for Label. | ||
| + | |||
| + | The third variation of trigger allow define reaction on the increase | ||
| + | |||
| + | No doubt, we can add more commands, add more functionality to trigger. The range oriented commands is a classic. The increase/ | ||
| + | |||
| + | Rule of 3 words: Type, Range, Interaction | ||
| + | T - type of the trigger - DMX, or MIDI, or universal | ||
| + | R - range, when value in range the we do something | ||
| + | I - interaction, | ||
| + | |||
| + | Example | ||
| + | |||
| + | DefineMidiTrigger 0xB0, 0x00, " | ||
| + | InRangeTriggerCmd 0,63," | ||
| + | InRangeTriggerCmd 64,127," | ||
| + | |||
| + | This trigger react in the MDI slider 0xB0, 0x00, and has values in range of 0..127. When slider in lower half the laser output will be disables, and when in higher half, then output will be disables. Now command bby comamnd: | ||
| + | |||
| + | DefineMidiTrigger 0xB0, 0x00, " | ||
| + | DefineMidiTrigger | ||
| + | 0xB0, 0x00 - this is slider parameter | ||
| + | " | ||
| + | |||
| + | |||
| + | InRangeTriggerCmd 0, | ||
| + | InRangeTriggerCmd - command, define the range and command | ||
| + | 0,63 - the range | ||
| + | "DisableLaserOutput" | ||
| + | |||
| + | |||
| + | InRangeTriggerCmd 64, | ||
| + | InRangeTriggerCmd - command that define second range | ||
| + | 64,127 - second | ||
| + | "EnableLaserOutput" | ||
| + | |||
| + | |||
| + | |||
| + | Example 2: Same as example | ||
| + | |||
| + | DefineMidiTrigger 0xB0, 0x00, " | ||
| + | InRangeTrigger 0,63, " | ||
| + | InRangeTrigger 64,127, " | ||
| + | exit // we need to exit because we should | ||
| + | |||
| + | D1: // this is label used 1st range | ||
| + | DisplayPreview " | ||
| + | DisableLaserOutput // Commamd | ||
| + | exit // we should stop script execution, otherwise it will do below | ||
| + | |||
| + | D2: // this is label used 2nd range | ||
| + | DisplayPreview | ||
| + | EnableLaserOutput | ||
| + | exit // we should stop script execution. This is good practice to have it. | ||
| + | |||
| + | Commentaries for this example. The script itself is bigger, and there are sections for definition and for corresponding scripts. There are two typical mistakes | ||
| + | 1. Do not forger to put exit instruction | ||
| + | 2. Ensure that label name in code and in definition is the same. Otherwise, it will not work. Label is case sensitive. | ||
| + | |||
| + | And general advice - use DisplayPreview, | ||
| + | |||
| + | |||
| + | Example 3: Slider at first time do Enable Laser, and and second time Disable Laser | ||
| + | |||
| + | This code based on previous, but it use variable. Variable organize a | ||
| + | |||
| + | DefineMidiTrigger 0xB0, 0x00, " | ||
| + | InRangeTrigger 64,127, " | ||
| + | var counter // declare variable | ||
| + | counter=0 // initialize variable | ||
| + | exit | ||
| + | |||
| + | |||
| + | Trick1: | ||
| + | DisplayPreview Counter | ||
| + | if (Counter=0) EnableLaserOutput | ||
| + | if (Counter=1) DisableLaserOutput // action when Count is 1 | ||
| + | Counter=(Counter+1) % 2 // increment counter and divide by modulus 2, so, it will be 0,1,0,1,0,1 and so on | ||
| + | exit // stop this section | ||
| + | |||
| + | |||
| + | Example 4: The same as example 4, but with Goto | ||
| + | |||
| + | DefineMidiTrigger 0xB0, 0x00, "Enable Laser test 3" | ||
| + | InRangeTrigger 64,127, " | ||
| + | var counter | ||
| + | counter=1 | ||
| + | exit | ||
| + | |||
| + | Trick1: | ||
| + | DisplayPreview Counter | ||
| + | Counter=(Counter+1) % 2 | ||
| + | if (Counter=0) goto When0 | ||
| + | if (Counter=1) goto When1 | ||
| + | exit | ||
| + | |||
| + | When0: | ||
| + | EnableLaserOutput | ||
| + | exit | ||
| + | |||
| + | When1: | ||
| + | DisableLaserOutput | ||
| + | exit | ||
| + | |||
| + | Well, example, is similar, and show that you can use additional Goto instructions. | ||
| + | |||
| + | Example 5 | ||
| + | |||
| + | What I want to demonstrate by this example - BEYOND does a goto when it execute a trigger. It means this. You can do goto by means of script command. But trigger engine use the same goto. Look a the code, comments below | ||
| + | |||
| + | |||
| + | DefineMidiTrigger 0xB0, 0x00, " | ||
| + | InRangeTrigger 64,127, " | ||
| + | InRangeTrigger | ||
| + | exit | ||
| + | |||
| + | |||
| + | Trick1: | ||
| + | DisplayPopup " | ||
| + | Sleep 1000 | ||
| + | DisplayPopup " | ||
| + | Sleep 1000 | ||
| + | goto Trick1 | ||
| + | |||
| + | StopIt: | ||
| + | DisplayPopup | ||
| + | exit | ||
| + | |||
| + | Two ranges, and main action in range of 64..127. The main action is after label Trick1. It has a dead loop. At least, it looks like dead loop. You see message panel with Yes and No and it will work until you move the slider down. It will break this endless loop. | ||
| + | |||
| + | |||
| + | Example 6: Lets try to use expressions... BPM notification | ||
| + | |||
| + | DefineTrigger " | ||
| + | InRangeTrigger | ||
| + | InRangeTrigger 250,500," | ||
| + | exit | ||
| + | |||
| + | WhenSlow: | ||
| + | DisplayPopup "Hey, dont sleep" | ||
| + | exit | ||
| + | |||
| + | WhenFast: | ||
| + | DisplayPopup | ||
| + | exit | ||
| + | |||
| + | This example use simplest expression - read the value of object property - Master.BPM, and depending on the BPM show the message. | ||
| + | |||
| + | Example 7: Out of range. | ||
| + | |||
| + | This example based on previous. The only change is OutOfRangeTrigger. This section will be activate when BPM is too slow or too fast. This is only example without big sense, but it it easy to test, because you can see BPM value on toolbar and have the slider that control it. | ||
| + | |||
| + | DefineTrigger " | ||
| + | OutOfRangeTrigger 60,250," | ||
| + | exit | ||
| + | |||
| + | WhenOutOf: | ||
| + | DisplayPopup "Hmm, this is not normal" | ||
| + | exit | ||
| + | |||
| + | Example 8: Starts/Stop timeline | ||
| + | |||
| + | DefineMidiTrigger 0xB0, 0x00, " | ||
| + | InRangeTriggerCmd | ||
| + | InRangeTriggerCmd 64,127, " | ||
| + | |||
| + | |||
| + | |||
| + | </ | ||
beyond/pangoscript_commands.1590491224.txt · Last modified: (external edit)
