Complete Help Docs

Laser Show Technology for Lighting Professionals

User Tools

Site Tools


beyond:pangoscript_commands

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
beyond:pangoscript_commands [2020/06/11 19:20] – external edit 127.0.0.1beyond: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://wiki.pangolin.com/pangoscript-command-list.html|Click here to view the PangoScript command list.]] 
-|AddSms|AddSMS "This is my demo message"| + 
-|Angle|Angle 0,0,0|X,Y,Z angles in degrees| + 
-|AngleDelta|AngleDelta 0,0,0|increment X,Y,Z angles in degrees| + 
-|AngleX|AngleX 0|degree| + 
-|AngleY|AngleY 0|degree| + 
-|AngleZ|AngleZ 0|degree| + 
-|AnimateProp|AnimateProp ""0,1,1000|"variable", FromToDuration MS| + 
-|AnimatePropDelta|AnimatePropDelta ""10,1000|"variable", Delta, Duration MS| +---- 
-|AnimationSpeed|AnimationSpeed 100|speed in %Zero full stop.| + 
-|AnimationSpeedDelta|AnimationSpeedDelta 0| + 
-|AudioBeat|AudioBeat| +Information below is being rewritten 
-|Autostart|AutoStart| + 
-|BeatResync|BeatResync| +<code> 
-|BeatTap|BeatTap| + 
-|BlackOut|BlackOut| +==== Intro ==== 
-|Brightness|Brightness 100|0..100 (percents)| + 
-|BrightnessDelta|BrightnessDelta 0| + 
-|CaptureToClipboard|CaptureToClipboard | +Currentlythe main purpose of "scriptingis ability to add custom relation on various eventslike a MIDIDMXArtNetChannels. The script typically has a few linesand a line has one CommandCommand may have a parameters. Typically parameter is a number (constant)
-|ChannelOut|ChannelOut 1, 1000|set first channel to 1000 (max value| + 
-|ClickFXStopAll| + 
-|ClickFXTabMode|ClickFXTabMode 1|1-Master2-Cue3-Zone4-ProTrack| +==== Numbers ==== 
-|ClickFlash|ClickFlash  |optional argument1 or 2 (Grid number)| + 
-|ClickFxVlj|ClickFxVlj 1|Toggle first FX-VLJ | +Supported float point , integer and hexadecimal numbers. As example: 
-|ClickLCTabMode|ClickLCTabMode 1|1-Master2-Cue3-Zone4-ProTrack| +100 
-|ClickLive|ClickLive  |optional argument: 1 or 2 (Grid number)+-20 
-|ClickLockSize|ClickLockSize 1  |0,1,2 OffOntoggle+1.01 
-|ClickRestart|ClickRestart  |optional argument: 1 or 2 (Grid number)| +0xBF 
-|ClickScrollA|ClickScrollA -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| +All hexadecimal numbers much have 0x prefix, similar to C language, but without ending H 
-|ClickScrollAniSpeed|ClickScrollAniSpeed -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| + 
-|ClickScrollB|ClickScrollB -5|scroll speedrecommended -5..-1or 1..5. Zero will stop.| +There is not strict separation on integer and float point numbers. 
-|ClickScrollColor|ClickScrollColor -5|scroll speed, recommended -5..-1or 1..5Zero will stop.| + 
-|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 -5..-1, or 1..5. Zero will stop.| + 
-|ClickScrollHue|ClickScrollHue -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.+ 
-|ClickScrollHueShift|ClickScrollHueShift -5|scroll speed, recommended -5..-1, or 1..5. Zero will stop.| +==== Special characters (separators==== 
-|ClickScrollR|ClickScrollR -5|scroll speed, recommended -5..-1, or 1..5Zero will stop.| + 
-|ClickScrollSaturation|ClickScrollSaturation -5|scroll speed, recommended -5..-1or 1..5. Zero will stop.| + 
-|ClickScrollScanRate|ClickScrollScanRate -5|scroll speed, recommended -5..-1or 1..5Zero will stop.+ '.'';'',', ':', '!', '�', '''', '^', '+', '-', '*', '\', ' ', 
-|ClickScrollSize|ClickScrollSize -5|scroll speedrecommended -5..-1, or 1..5. Zero will stop.| + '`''['']''(', ')''{''}''?''%','|','&','=': 
-|ClickScrollVPoints|ClickScrollVPoints -5|scroll speedrecommended -5..-1or 1..5. Zero will stop.| + 
-|ClickScrollZoom|ClickScrollZoom -5|scroll speedrecommended -5..-1or 1..5. Zero will stop.| + 
-|ClickSelect|ClickSelect |optional argument: 1 or 2 (Grid number)+ 
-|ClickSoloFlash|ClickSoloFlash  |optional argumentor (Grid number)| +==== Predefined constants ==== 
-|ClickTCTabMode|ClickTCTabMode 1|1-Master, 2-Cue, 3-Zone, 4-ProTrack| + 
-|ClickToggle|ClickToggle |optional argument: 1 or 2 (Grid number)| + 
-|ClickTrack|ClickTrack  |optional argument1 or 2 (Grid number)| +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 "MyCode"|define name of | +ANY equal to numeric -1. Used in a few WaitFor command 
-|CodeShortcut|CodeShortcut "Ctrl+D"| +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 "MasterPause"I hope it should be handy to see ON or OFF instead of 0 or 1. 
-|ColorSliderDelta|ColorSliderDelta 0| + 
-|ControlCue|ControlCue 1,1| +A few examples of using commands: 
-|ControlFromFxTab|ControlFromFxTab| +  VirtualLJ off 
-|ControlFromLcTab|ControlFromLcTab| +  MasterPause Toggle 
-|ControlFromTcTab|ControlFromTcTab| +  WaitForMidi 0x9010Any 
-|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"or zone number 1...N| +bit OR: | 
-|CueDown|Cuedown 1,1|page 1..100, cue 1..100| +bit AND: & 
-|CueUp|CueUp 1,1|page 1..100cue 1..100| +bit XOR: ^ 
-|DecreaseTrigger|DecreaseTrigger 0,100,"MyLabel"|Min Value, Max Value, Label name| +bit right shift: >> 
-|DefineDmxTrigger|DefineDmxTrigger 1|Channel| +bit left shift: << 
-|DefineMidiTrigger|DefineMidiTrigger 0xC00x00|MIDI Cmmand, MIDI Data 1, Trigger Name (optional), MIDI Dev index from 0 to 3 (optional)but default any| + 
-|DefineTcTrigger|DefineTCTrigger "TC Test"|hour, minutesecond| + 
-|DefineTrigger|DefineTrigger "2+2"|expression...| +==== Operators ==== 
-|DeletePropAni|DeletePropAni|"variable", ["variable",..]| + 
-|DisableLaserOutput|DisableLaserOutput| +  
-|DisplayPopup|DisplayPopup "Hello world!"| + 
-|DisplayPopupOnTop|DisplayPopupOnTop "Hello world!"| +IF operator. 
-|DisplayPreview|DisplayPreview "Hello world!", 0x0000ff| + 
-|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 covered with bracketsMust be an expression with 
-|DropFX|DropFX 1,1, 1000|Layer, Index, duration ms| +numerical result that gives "0" or not a "0"Sofor numerical 
-|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 |ONOFFTOGGLE| + 
-|EnableFb3StyleDmxIn|EnableFb3StyleDmxIn 1|On(1), Off(0), Toggle(2)| +Compare operators are: ">" ">=" "<" "<=" "=" "<>"They produces numerical result "0" or "1"
-|EnableLaserOutput|EnableLaserOutput| + 
-|ExecCmd|ExecCmd "Blackout"| +You can combine comparing operations with "&" and "|" bit-wise operators (but be sure that left and right side are "0" or "1")It'recommended to cover complex operations into brackets like "if ((1>2) & ((3+2)>1))" 
-|Exit|Exit| + 
-|ExitBEYOND|ExitBEYOND|Exit from BEYOND| +operator will be executed if condition gets non-zero resultIf you want to place other operator after "if (condition) operator" it must be divided with ";" but it's better to place next operator on the next line ;-
-|FX|FX 0,0,0,0|One or more layers. 0 stop. Effect 1..100| + 
-|FXAction|FXAction 100,100,100,100|One or more layersSet effect action from 0% to 100%| +=== GOTO operator === 
-|FXCellClick|FXCellClick 1,1| + 
-|FXCellDown|FXCellDown 1, 1|Layer number1..4, Effect number| + 
-|FXClick|FXClick 1,1| +Syntax:  goto label 
-|FXScroll|FXScroll 1| + 
-|FXScrollDelta|FXScrollDelta 8| +"label" is  a name of position for a jumpThe label can be placed before any operator and separated by ":"  characterAs example: 
-|FXTimeScaleAx|FXTimeScaleAx 1,2,1|LayerMask (1,2,3), multiplier| + 
-|FXTimeScaleAxReset|FXTimeScaleAxReset 1,2|LayerMask (1,2,3)| +mylabel: WaitForBeat 4 
-|FXTimeScaleDeltaAx|FXTimeScaleDeltaAx 1,2,1|Layer, Mask (1,2,3), increment value+... do something... 
-|FXTimeSync|FXTimeSync 1,1|LayerSource (1-Master, 2-Own time)| +goto mylabel 
-|FocusCell|FocusCell 1,1|Column (1..10), Row (1..6)+ 
-|FocusCellIndex|FocusCellIndex 1|cell index1..60| + 
-|FocusProTrack|FocusProTrack 1|Track index/name| +Operator GOTO can work with the labels inside the string variablesIt means that you declare string variableassign a label name to variable, and then you a variable in GOTO
-|FocusProjector|FocusProjector 1|Projector index1..N.+Example: 
-|FocusZone|FocusZone 1|zone index1..N.| + 
-|GetFxControl|GetFxControl|| +var s 
-|GetLiveControl|GetLiveControl| +s="mylabel" 
-|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 will be Hello!| + 
-|HoldClick|HoldClick ON| + 
-|HtmlBody|HtmlBody| + 
-|HtmlClearBody|HtmlClearBody| + 
-|HtmlClearHead|HtmlClearHead| +=== VAR operator === 
-|HtmlHead|HtmlHead| + 
-|HtmlHide|HtmlHide| + 
-|HtmlUpdate|HtmlUpdate| +PangoScript allow define local variablesThe lifetime for the local variable defined by lifetime of the Scripter that execute PangoScriptAs soon as the Scripter freedall its local variables are removed as well. 
-|Hue|Hue 0| + 
-|HueDelta|HueDelta 0| +All variables must be declared before the usingNo need to specify the type of variableThe variable automatically adjust the type depending on valueInternally supported integerfloat and string variables. 
-|HueShift|HueShift 0| +The declaration start from VAR operation and the follow one or more variable namesAs example: 
-|HueShiftDelta|HueShiftDelta 0| + 
-|InRangeTrigger|InRangeTrigger 0,100,"MyLabel"|Min ValueMax Value, Label name| +var MyVariable 
-|InRangeTriggerCmd|InRangeTriggerCmd 0,100,"Blackout"|Min ValueMax Value, Command| +var a,b,
-|IncreaseTrigger|IncreaseTrigger 0,100,"MyLabel"|Min Value, Max Value, Label name| + 
-|InvertPlayersTime|InvertPlayersTime| +Before using the variable must be initialized by some valueOtherwise BEYOND will generate error and stop script executionExample: 
-|InvertProTrackTime|InvertProTrackTime| +var MyIntegerMyString 
-|InvertRotationX|InvertRotationX| +MyInteger = 10 
-|InvertRotationY|InvertRotationY| +MyString = "Hello!" 
-|InvertRotationZ|InvertRotationZ| + 
-|LessThanTrigger|LessThanTrigger 0,"MyLabel"|ValueLabel name| +All variables declared as VAR are local. 
-|LinePerCycle|LinePerCycle 24| + 
-|LoadCue|LoadCue "c:\MyAnimationFile.bani"|Enter correct file name!| + 
-|LoadCueFromBlob|<internal commmand>| +GLOBALVAR operator 
-|LoadPlaylist|LoadPlaylist "c:\MyPlaylist.BeyondSL"| +The variable can be declared as globalIn this caseit visible in ALL scripts of BEYOND
-|LoadWorkspace|LoadWorkspace "c:\MyWorkspace.BeyondWorkspace"|Enter correct file name!| + 
-|LoadZoneFromBlob|<internal commmand>| + 
-|MakeSecuredFile|MakeSecuredFile "Input file name""Output file name", ClientHardwareSerial| + 
-|ManualBeat|ManualBeat| + 
-|MasterAudioVolume|MasterAudioVolume 100|in percents| +==== General functions ==== 
-|MasterAudioVolumeMute|MasterAudioVolumeMute 1|On(1)Off(0), Toggle(2)| + 
-|MasterClockShift|MasterClockShift 0|in seconds| + 
-|MasterCueLcSpeed|MasterCueLcSpeed 100|in percents| +intstr(value:number):string - transform number to string 
-|MasterCueSpeed|MasterCueSpeed 100|in percents| +value - number or float number 
-|MasterEffectClockShift|MasterEffectClockShift 0|in seconds| +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 string 
-|MasterPause|MasterPause Toggle |ONOFFTOGGLE| + 
-|MasterPauseTime|MasterPauseTime 1000|time in milliseconds| +abs(value:number):number value by modulus 
-|MasterShowBrightness|MasterShowBrightness 100|in percents| +value integer or float number 
-|MasterShowSpeed|MasterShowSpeed 100|in percents| +result - same type as argument. result is absolute value 
-|MasterSpeed|MasterSpeed 1|From zero to one| + 
-|MasterTransition|MasterTransition ON| +int(value:number):integer - return integer part of float value 
-|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,3|quad-spline between point 1,2 and 3| +value - float 
-|MeshPoint|MeshPoint -100,-100, 0, "LeftBottom"+ 
-|MeshPointChan|MeshPointChan 1,0,0| +round(value:float):integer - return rounded float point value (to integer) 
-|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,4|cubic-spline based on 4 points1,4 bases, 2,3 "handles"| +sqr(value:number):number - return a square of argument 
-|MeshTriangle|MeshTriangle 1,2,3| +value - a float point number or integer 
-|MidiOut|MidiOut 0x900x40, 0x7F| + 
-|MidiOutLong|MidiOutLong 0x900x40, 0x7F| +sqrt(value:number):float - return a square root of argument 
-|MidiSysexAdd|MidiSysexAdd  "F0477F|add data to Systex bufferstring must represent sequence of hex valuesIn addition, you may use integer parameters| +value - a float point number or integer 
-|MidiSysexSend|MidiSysexSend|send prepared sysex buffer| + 
-|MidiSysexStart|MidiSysexStart |clear Sysex buffer| +cos(value:float):float co-sinus 
-|MoreThanTrigger|MoreThanTrigger 0,"MyLabel"|ValueLabel name| +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..4Mask (1 is clock2 is beat, 3 is clock and beat), Value of multiplier| +sin(value: float):float - sinus 
-|MultiCue|MultiCue| +value - a float point number or integerangle in radians 
-|MuteAllProTracks|MuteAllProTracks| + 
-|MuteProTrack|MuteProTrack 1|index(esor name(s)| +tan(value:float):float - tangents 
-|MuteSelected|MuteSelected| +value - a float point number or integer. angle in radians 
-|MuteSelectedZones|MuteSelectedZones OFF|ONOFFTOGGLE| + 
-|MuteZone|MuteZone 0|index(esor name(s)| +arcsin(value:float)float - arc sinus 
-|MuteZonesOfProjector|MuteZonesOfProjector 1|projector index1..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: float):float - arc cosinus 
-|OscOut|OscOut "/beam1/xy"-5, 100|set beam position to [-5,100]| +value - a float point number or integer. angle in radians 
-|OscOutTTS|OscOutTTS "",""|Address, Type Tag String, Arguments (optional)+ 
-|OutOfRangeTrigger|OutOfRangeTrigger 0,100,"MyLabel"|Min Value, Max Value, Label name| +arctan(value: float):float - arc tangents 
-|OutOfRangeTriggerCmd|OutOfRangeTriggerCmd 0,100,"Blackout"|Min Value, Max ValueCommand| +value - a float point number or integer. angle in radians 
-|Password|password "enter pasword here"| + 
-|PasteToCue|PasteToCue| +arctan2(dxdy:float):float - arc tangents 
-|PauseCue|PauseCue 1,1, TOGGLE|page, cue, action (ONOFF, TOGGLE)| +dx, dy - .... 
-|PlayListFirst|PlayListFirst| + 
-|PlayListLast|PlayListLast| +min(a,b:number):number - return a minimum of two numeric values 
-|PlayListNext|PlayListNext| +a,b  float or integer 
-|PlayListPlay|PlayListPlay| +  
-|PlayListPrev|PlayListPrev| +max(a,b:number):number - return a maximum of two numeric values 
-|PlayListSetPos|PlayListSetPos 1| +a,b  float or integer 
-|PlayListSetTime|PlayListSetTime 0| + 
-|PlayListStop|PlayListStop| +pi:float - return PI value - 3.1415926... 
-|PlayTimeline|PlayTimeline| + 
-|PlayersDisk|PlayersDisk 10.1| +invert(value:number):integer - invert value. Boolean operationbut can be used with float point numbersIf value more than 0.5 then function return 0otherwise return 1. 
-|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&timecalls now() function of Delphi 
-|PositionDelta|PositionDelta 0,0,0|X,Y,Z | + 
-|PositionIndex|PositionIndex 1,0|one axiz only: 1 is X, is Y, is ZSecond paramater is Value, 0 center, 100 is max| +tickcount: integer - return number of millisecond from start of PC. 
-|PositionX|PositionX 0 |-100..100| + 
-|PositionY|PositionY 0 |-100..100| +hms(hourminute, second):integer transform hour, minute and second into seconds. 
-|PositionZ|PositionZ |-100..100| + 
-|PreviewMaster|PreviewMaster| +GetYear:integer - function return current year by PC clockResult 
-|PreviewNxN|PreviewNxN 1|1 - laser, 2 - 2x2, 3 - 3x3, 4 - 4x4| + 
-|ProTrackDisk|ProTrackDisk 1, 0.1| +GetMonth:integer - function return current month by PC clock 
-|ProTrackDiskShift|ProTrackDiskShift 0.1| + 
-|ProTrackResetJump|ProTrackResetJump| +GetDay:integer - function return current day by PC clock
-|ProTrackSetJump|ProTrackSetJump| + 
-|ProTrackSetLoop|ProTrackSetLoop| +timestr(now:float) :string 
-|ProjectionZonesDialog|ProjectionZonesDialog| +now - is variable representing time. Function return string with time in short format such as "11:53", without seconds 
-|PulseEvent|PulseEvent "MyEventName"| + 
-|QLog|QLog "My message to QLog tab"+timestrlong(now:float):string - 
-|RGBA|RGBA 255,255,255,255|R,G,B,Alpha0..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 current cell| +datestr(now:float):string - �������� ������ ����, � ��� ��� - 
-|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 FB4Thanks.| + 
-|RefreshDmxIn|RefreshDmxIn|activate update of DMX IN reactions, independently on data changed or no| +datestrlong(now:float):string - ������� ������ ����, ���� - 
-|RegisterOscFeedback|RegisterOscFeedback "/beyond/master/brightness", "master.brightness"| +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:float):string - long version day of the week 
-|ResetMasterFX|ResetMasterFX| + 
-|ResetMidiFeedback|ResetMidiFeedback| +==== String functions ==== 
-|ResetOscFeedback|ResetOscFeedback| + 
-|ResetPosition|ResetPosition| + 
-|ResetProTrackFX|ResetProTrackFX| +uppercase(string):string  transform input string to upper case. Result is a string. 
-|ResetRotation|ResetRotation| + 
-|ResetRotationX|ResetRotationX| +lowercase(string:string):string transform input string to lower case. Result is a string. 
-|ResetRotationY|ResetRotationY| + 
-|ResetRotationZ|ResetRotationZ| +crlf:string - return a stringline separator (13,10) 
-|ResetZonesFX|ResetZonesFX| + 
-|Restart|Restart| + 
-|RestartCue|RestartCue 1,1|page, cue+ 
-|RestorePlayer|RestorePlayer| +==== Clock And Metronome ==== 
-|ResyncByCueClick|ResyncByCueClick On |options: OnOffToggle| + 
-|RotoSpeed|RotoSpeed 0,0,0 |rotation speed by X,Y,Z axisdegree.| + 
-|RotoSpeedDelta|RotoSpeedDelta 0,0,0|increment of rotation speedX,Y,Z axis.| +b2s(beats- transform beats to seconds 
-|RotoSpeedX|RotoSpeedX 0|rotation speeddegree| + 
-|RotoSpeedY|RotoSpeedY 0|rotation speed, degree| +b2ms(beats- transform beats to milliseconds 
-|RotoSpeedZ|RotoSpeedZ 0|rotation speed, degree| + 
-|RunApp|RunApp "C:\Windows\Notepad.exe"""|full exe file nameparameters| +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 1|zone index, 1..N.| + 
-|SelectCat|SelectCat 1|category index1..N.| + 
-|SelectCatName|SelectCatName "Graphics"|define correct Category name.| +There are a few functions for access of incoming data 
-|SelectCue|SelectCue "Cue01"|Enter correct Cue name!| + 
-|SelectFixt|SelectFixt 0|index(esor name(s)| +Dmx ( ChannelOutputMinOutputMax ) 
-|SelectGrid|SelectGrid 1|1-main grid2-grid at bottom. 0-recently active| +Parameters: 
-|SelectMidi|SelectMidi 1|select MIDI device pair, 1..4.| +Channel - index of DMX channelacceptable value from to 2048 
-|SelectNextCat|SelectNextCat| +OutputMinOutputMax - defines the range resulting value of the functionOupout value will start from OutputMin and increase up to OutputMax 
-|SelectNextCatGrid1|SelectNextCatGrid1| +result  = OutputMin +  (DmxChannelValue / 255) * (OutputMax-OutputMin) 
-|SelectNextPage|SelectNextPage| + 
-|SelectNextPageGrid1|SelectNextPageGrid1| +Example
-|SelectNextTab|SelectNextTab| +  Position Dmx(10-100100)Dmx(11, -100, 100)Dmx(12-100100
-|SelectNextTabGrid1|SelectNextTabGrid1| + 
-|SelectPage|SelectPage 1|tab index1..N.| +in this example we use Position command that has 3 arguments - X,Y,Z and we use DMX IN values (three channels10,11,12), and map the values range -100 to +100. 
-|SelectPageName|SelectPageName "Graphics"|define Page name!| + 
-|SelectPrevCat|SelectPrevCat| +Dmx Channel 
-|SelectPrevCatGrid1|SelectPrevCatGrid1| +or 
-|SelectPrevPage|SelectPrevPage| +Dmx( ChannelOutputMinOutputMax) 
-|SelectPrevPageGrid1|SelectPrevPageGrid1| +Parameters: 
-|SelectPrevTab|SelectPrevTab| +Channel - index of DMX channelacceptable value from to 2048 
-|SelectPrevTabGrid1|SelectPrevTabGrid1| +Result of the function is value of DMX channel as it iswithout 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| +OutputMinOutputMax - 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...range 
-|SelectTab|SelectTab 1 |tab index1..N.| +result  = OutputMin +  (ChannelValue) * (OutputMax-OutputMin
-|SelectTabName|SelectTabName "Graphics"|define Page name!| +Example: 
-|SelectZone|SelectZone 1|zone index1..N.| +  DisplayPopup Dmx(10) // display the value of 10th DMX channel. 
-|SelectZoneName|SelectZoneName "Main Graphics"|enter Zone name| + 
-|SetActiveGrid|SetActiveGrid 1|or | +Note: version with min/max used for simplification of use of function in operators where you may need to transform DMX value range (0..255to some other range. As example Size operatoryou may want to use size range like 0...100or 10...100or -100..100
-|SetAttractionSlider|SetAttractionSlider 10| + 
-|SetAudioGain|SetAudioGain 10|1..15| +Channel ( Channel, OutputMin, OutputMax ) 
-|SetAudioInGain|SetAudioInGain 10|1 is min15 is max10 default| +or 
-|SetAudioInRelease|SetAudioInRelease 75|is min, 99 is max (slowest75 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  = OutputMin +  (ChannelValue) * (OutputMax-OutputMin) 
-|SetCueCaptionColor|SetCueCaptionColor 1,20x0000FF |page 1cue 2color (windows24bit color)| + 
-|SetDmxEditorChannel|SetDmxEditorChannel 1128| +If function has one argument then result is normalized channel value (range from to 1) 
-|SetDmxToChannelRatio|SetDmxToChannelRatio 0|0..100| + 
-|SetEffectChannelAction|SetEffectChannelAction 0 |0..100| +Example: 
-|SetFFTToChannelRatio|SetFFTToChannelRatio 0|0..100| +  Size Channel(10, 5, 100)ChannelIn(105, 100)ChannelIn(105, 100)
-|SetFX|SetFX 1, 1|Layer number1..4, Effect index: 1..100| + 
-|SetFX1MSL|SetFX1MSL 1| +in this example we use Size command that has 3 arguments - XY,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 normalizedthe range from 0 to 1. 
-|SetFXAction|SetFXAction 1100|Layer number: 1..4Action 0..100 percent| + 
-|SetFXAction1|SetFXAction1 100|Action 0..100 percent| + 
-|SetFXAction2|SetFXAction2 100|Action 0..100 percent| +CC (ChannelController, OutputMin, OutputMax) 
-|SetFXAction3|SetFXAction3 100|Action 0..100 percent| +Get a value of of MIDI controller. BEYOND memorize all values of incoming MIDI controllers (Contrl Change Messageand you can get an access to it. 
-|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  = OutputMin +  (ChannelValue/127) * (OutputMax-OutputMin) 
-|SetFXAction7|SetFXAction7 100|Action 0..100 percent| + 
-|SetFXAction8|SetFXAction8 100|Action 0..100 percent| + 
-|SetFXMul|SetFXMul 11,1|Layer number: 1..4, Multiplier - default value for clock and metronome| +ExtValue( OutputMin, OutputMax ) 
-|SetFXMulAx|SetFXMulAx 1, 3, 1|Layer number: 1..4, Mask (1 is clock2 is beat3 is clock and beat), Value of multiplier| +There are a few pretty big tables of code-sources. A tables such as DMXArtNetControlChange, PitchBand, NoteOn initiated by channel/message that has a value. This function allow get access to the channel that intiate the code. Better explain on example. Lets say I want to connect DMX channel to Master Live Control, Position X. In this case, code that will do ths is this: 
-|SetFXMute|SetFXMute 1, 0|Layer number: 1..4, 0-Off, 1-On, 2-Toggle| +    PositionIndex 1, ExtValue(-100,100) 
-|SetFrictionSlider|SetFrictionSlider 10| +In this example PositionIndex is a live control command, see below. is index of axis. And finally ExtValue() is a fuction that take DMX channel value in map to rangle -100 to 100. 
-|SetGrid1MSL|SetGrid1MSL 1| + 
-|SetGrid1Page|SetGrid1Page 1| +ExtDelta( Delta ) 
-|SetGrid2MSL|SetGrid2MSL 1| +Function equal to ExtValue but made specially for MIDI encodersThere are many controlled with wheels and knobs that generate Control Change message and the data2 value is 00 or 7F. That is allno values in between. For such cases has a sense to use "delta" version of commands and ExtDelta() for getting exact value of delta. Function return -Delta or +Delta. Only two valuesno exceptions. Example of use 
-|SetGrid2Page|SetGrid2Page 1| + 
-|SetGridSize|SetGridSize 8,5| +PositionDelta 0, ExtDelta(1), 0   // move vertically. 
-|SetGridView|SetGridView| + 
-|SetLimiterBeam|SetLimiterBeam 5| +another example: 
-|SetLimiterDMX|SetLimiterDMX 5| + 
-|SetLimiterFlash|SetLimiterFlash 4| +AngleDelta 0,0ExtDelta(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. NoteMaxValue included into the range 
-|SetLimiterProfile|SetLimiterProfile 1| + 
-|SetLimiterShow|SetLimiterShow 2| +RandomIn( MinValueMaxValue ) 
-|SetLocation|SetLocation 10,0,0|set one of 256 positions/locations (index 1..256, X,Y,Z as normalized values (0..1)| +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 CODEtable.. When BEYOND receive OSC message and supply it into interpreter to executionthen we can supply up to 10 parameters with OSC messageBEYOND put them into local arrayand you may use it inside the Code. Notedata is there only during execution of current script. As soon  we exit from execution of this scriptdata will be lost. OK, parameter index is from up to 10. BEYOND check how many parameters the OSC message hasand if you will try to access non existing paramater then script will stop with error. Soif OSC message has parametersthen you can use index from to 3Accepts fi, and s type of OSC parameters. You can freely mix float and integer. 
-|SetProTrackZones|SetProTrackZones 11|Track index/nameZone name(es)/index(es)| + 
-|SetSliderMSL|SetSliderMSL 1| +ParamRangeMinValue, MaxValuefunction return TRUE (1 if the first parameter inside the specified range. 
-|SetTimelineView|SetTimelineView| + 
-|SetTransitionIndex|SetTransitionIndex 2| +ParamRange(ParamIndex MinValueMaxValue) function return TRUE (1)  if the specified parameter (pram index) inside the specified range (from MinValue to MaxValue) 
-|SetTransitionTime|SetTransitionTime 0.1| + 
-|SetUCenterPage|SetUCenterPage 1|set first page| +GetTransitionNameindex 
-|SetUEditPage|SetUEditPage 1|set first page| +function return stringthe name of transitionIndex is number of transitionRange 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 pairValue range 1..4. 
-|SetWorkspacePageCount|<internal commmand>| + 
-|SetZoneMeshPointPos|SetZoneMeshPointPos 11,10,0|Zone indexX node indexY node indexX coordinate (-32K..32K)y coordinate| +ObjectExistsAObjectName  - function get object name a s string and return 1 if object existsor zero if object is not found. 
-|SetZoneMuteMSL|SetZoneMuteMSL 1| + 
-|SetZoneSelMSL|SetZoneSelMSL 1| + 
-|ShiftFX|ShiftFX 11|Layer 1..4delta| +==== Timecode input ==== 
-|ShiftFocus|ShiftFocus -5|go back and forth on N cells| + 
-|ShowHint|ShowHint "Hello!"|show hint window in center of main window| + 
-|ShowItNowSMS|ShowIsNowSMS 1| +GetTimeCode - return latest timecode value as a float point valuevalue 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( PageIndexCueIndex) - function return if cue is currently playing in the Gridotherwise return 0. Indexing of page and cue starts from 1. 
-|SizeZ|SizeZ 100| +Example: CuePlaying(1,1) //return state of first cue on a first page. Notefunction is not applicable for ProTracks and DMX server. 
-|Sleep|Sleep 1000| + 
-|SoloProTrack|SoloProTrack 1|index(es) or name(s)| +CueEmpty(PageIndexCueIndex- 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, CueIndex)  - return cue caption color in GDI format. Format is 24bit RGB, red is LSB. Overall formula Blue*256*256 + Green * 256 + Red. Indexing of page and cue starts from 1. 
-|StartCode|StartCode "MyCode"|put YOUR name of code| + 
-|StartCue|StartCue 1,1| + 
-|StartPrevious|StartPrevious|"Back" button| +==== Misc ==== 
-|StartTalkClient|StartUdpTalkClient| + 
-|StartTalkServer|StartUdpTalkServer| + 
-|StopAllAsync|StopAllAsync 0.5|duration in seconds| +GetBeyondBuild - return integer valuebuild of BEYOND application
-|StopAllNow|StopAllNow|no arguments| + 
-|StopAllSync|StopAllSync  0.5|duration in seconds| +GetMidiDeviveIndex - return current MIDI device index associated with this scriptBEYOND 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.  Indexing from 1. Layering introduced because BEYOND has big number of functionsand at the same timeMIDI device has limited number of sliders and buttons. MIDI settings allow to organize several layersand as a resultMIDI controller will do several functions (depending on current layer). GetMidiDeviceLayer return currently active layer of MIDI device associated with this script
-|StopCode|StopCode "MyCode" |put YOUR name of code| + 
-|StopCue|StopCue 1,1| +==== User Interface ==== 
-|StopCueNow|StopCueNow 11|page 1..100cue 1..100| + 
-|StopCueSync|StopCueSync 110.5|page 1..100cue 1..60time 0..+ 
-|StopCueType|StopCueType 255 |Mask: 1-Image2-Timeline4-DMX8-Sequence16-Beams, 32-Capture| +GetLcTabMode:integer - function return mode (destination of control) of Live Control tab. Basicallyit tell what button selected - MasterCueZone or ProTrack 
-|StopFX|StopFX|One or more layers0 stopEffect 1..100| +Values are: 
-|StopFxCell|StopFXCell|Layer indexoptional Cell index (relative, take into account scrollbar)| +- Master 
-|StopOnBlackout|StopOnBlackout 1| +- Cue 
-|StopProTrack|StopProTrack 1|index(es) (1..N) or name(string). Can be used more than one argument| +- Zone 
-|StopProTrackFX|StopProTrackFX 11|Track index/name and FX line index(es)Counting from 1If no arguments at all - stop all FX on all tracks| +4 - ProTrack 
-|StopTalkClien + 
-|StopTalkServer|StopUdpTalkServer| +GetTcTabMode:integer - function return mode of Time Control tab.Constant is same as in  GetLcTabMode 
-|StopTimeline|StopTimeline| + 
-|StoreZoneSelection|StoreZoneSelection| +GetFxTabMode:integer function return mode of  FX tab.Constant is same as in  GetLcTabMode 
-|StrobeSpeed|StrobeSpeed 0.2|periodflicker per second| + 
-|StrobeSpeedDelta|StrobeSpeedDelta 0.1|periodflicker per second| +GetGrid1Mode:integer function return currently selected click mode of main GridResult is one of following values 
-|SynchronizePlayerToBeat|SynchronizePlayerToBeat On |options: OnOffToggle| +0 - Select mode 
-|TapByCueClick|TapByCueClick On |options: On,OffToggle| +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:integer - function return currently selected click mode of secondary GridConstants same as for function GetGrid1Mode 
-|TimelineLastTab|TimelineLastTab| + 
-|TimelineMarker|TimelineMarker| + 
-|TimelineNextEditPoint|TimelineNextEditPoint| +==== Timeline mode functions ==== 
-|TimelineNextMarker|TimelineNextMarker| + 
-|TimelineNextTab|TimelineNextTab| + 
-|TimelinePlay|TimelinePlay| +GetTimelinePos:float - function return time position of current timelineValue in secondsFractional part contain millisecond part
-|TimelinePlayFromMarker|TimelinePlayFromMarker ""| + 
-|TimelinePrevEditPoint|TimelinePrevEditPoint| +GetTimelineDuration:float - function return duration of current timelineValue in secondsFractional part contain millisecond part
-|TimelinePrevMarker|TimelinePrevMarker| + 
-|TimelinePrevTab|TimelinePrevTab| +GetTimelineOnline:integer function return 1 when "Enable laser outputis enabled in Timeline modeotherwise return value is 0
-|TimelineQuickSave|TimelineQuickSave| + 
-|TimelineSetPos|TimelineSetPos 10|jump to second 10| +GetTImelinePlaying:integer function return 1 when timeline is currently playing, otherwise return value is 0. 
-|TimelineSetTabIndex|TimelineSetTabIndex| + 
-|TimelineSetTabName|TimelineSetTabName "MyShow"| +GetTimlineTabIndex:integer. Timeline editor can work with multiple timelines. Function return index of currently selected timeline. 
-|TimelineSetViewRange|TimelineSetViewRange 1,5|from s to 5 second| + 
-|TimelineShiftViewRange|TimelineShiftViewRange 1|one second shift| +GetTimelineTabName:string - function return tab name of currently selected timeline. 
-|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 number1..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|"SWAPbutton| +Sender - who initiated the command 
-|ToggleSelectFixt|ToggleSelectFixt| +Server - who is recipient / server of the command. As example - zone, cue, masterand so on 
-|ToggleSelectProTrack|ToggleSelectProTrack 1|index(es) (1..N) or name(s)| +Server index - index of serverof there are many such serversAs example - Projection Zone 
-|ToggleSelectProjector|ToggleSelectProjector 1|index(es) (1..N) or name(s)| +Command - the command itself 
-|ToggleSelectZone|ToggleSelectZone 1|zone index1..N.| +Arguments - depends on exact commands
-|ToggleSoloProTrack|ToggleSoloProTrack 1|index(es) or name(s)| + 
-|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 casecommand will have such values 
-|ToggleUEditPage|ToggleUEditPage 1|Relative command+1 means next page-1 means previous| +Sender - BEYOND set it automaticallyno 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-means previous| +Command - Size 
-|ToggleUToolPage|ToggleUToolPage 1 |Relative command. +1 means next page-means previous| +Arguments - 50,50,50 
-|Transition|Transition Toggle |ONOFFTOGGLE| + 
-|UnMuteZonesOfProjector|UnMuteZonesOfProjector 1|projector index, 1..N.| +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 index1..N.| + 
-|UnSelectZoneName|UnSelectZoneName "Main Graphics"|enter Zone name| + 
-|UnSoloAllProTrack|UnSoloAllProTrack| + 
-|UnSoloProTrack|UnSoloProTrack 1|index(es) or name(s)| +==== WaitFor command group ==== 
-|UnmuteAllProTracks|UnmuteAllProTracks| + 
-|UnmuteAllZone|UnmuteAllZone| + 
-|UnmuteProTrack|UnmuteProTrack 1|index(esor name(s)| +Sleep Time 
-|UnmuteZone|UnmuteZone 0|index(esor name(s)| +Parameters: Time measured in milliseconds 
-|UnselectAllCue|UnselectAllCue| +Purpose: Allow to pause execution to defined time 
-|UnselectAllFixt|UnselectAllFixt| +Example 1: Sleep 100 // this will cause pause in execution on 1/10 of a second
-|UnselectAllProTracks|UnselectAllProTracks| +Example 2: 
-|UnselectAllProjectors|UnselectAllProjectors| +MidiOut 0x900x40, 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 of FX-VLJ 1..4and action: ONOFFTOGGLE| + 
-|Version|version|remote server will get exe file version| + 
-|VirtualLJ|VirtualLJ Toggle|ONOFFTOGGLE| + 
-|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 "MyEventName"| +TimelineMarker 
-|WaitForHotKey|WaitForHotKey|waiting for hotkey assigned to this script in Code-tab| +Add timeline marker. There are 3 modifications 
-|WaitForManualBeat|WaitForManualBeat 1| +TimelineMarker (no arguments- add marker at current position and current color 
-|WaitForMidi|WaitForMidi 0x90-1-1| +TimelineMarker Color addmarker with specified color at current time position 
-|WaitForPageChange|WaitForPageChange| +TimelineMarker ColorTime add marker with specified color at specified time 
-|WaitForTC|WaitForTC 15,30,0,0|hoursminutes, 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,00,00|hours, minutes, seconds, ms| + 
-|WaitForTimerBeat|WaitForTimerBeat 1| + 
-|Write|write| + 
-|WriteLn|writeln "Hello world!"| + 
-|ZoneFXTimeScale|ZoneFXTimeScale 1,2,1|LayerClock multipler, Metronome multiplier| +==== Property Animation ==== 
-|ZoneFXTimeScaleDelta|ZoneFXTimeScaleDelta 0,0,0,0 | + 
-|ZoneFXTimeShift|ZoneFXTimeShift 1,2,1|Layer, Clock multipler, Metronome multiplier| + 
-|ZoneFXTimeShiftDelta|ZoneFXTimeShiftDelta 0,0,0,0 | +Property animation designed for linear change of property from one state to another during some period of time. Technicallythis is sort of micro script, but BEYOND does this job automaticallyInternally BEYOND has internal list of the tasks for object property animationThe 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,  StartValue, FinishValue, DurationMS, FinishEvent 
 +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, stringSpecify name of Event that will be activated at the end of animation. Action equal to call of PulseEvent() procedure
 + 
 +Exmaple: 
 +AnimapeProp "Master.Brightness", 100, 0, 1000 
 +// command change value of Master brightness from 100% to zero during 1000 ms (one second) 
 + 
 +Example2 : 
 +AnimapeProp "Master.Brightness", Master.Brightness, 0, 500 
 +// command change value of Master brightness from current value to zero during 500 ms (0.5 second) 
 + 
 + 
 +AnimatePropDelta PropertyNameTotalDelta, DurationMS, FinishEvent 
 +PropertyName - string that contain complete name of object and its propertyThe property must be numeric. 
 +TotalDelta- numberSpecify how much will change the value of specified property 
 +DurationMS - duration of animation in milliseconds 
 +FinishEvent - optional parameterstringSpecify name of Event that will be activated at the end of animationAction equal to call of PulseEvent() procedure
 + 
 +Example: 
 +AnimatePropDelta "Master.Brightness", -25, 300    // decrease master brightness on 25% during 0.3 second 
 + 
 +Example 2: 
 +AnimatePropDelta "Master.Color"-32b2ms(1)    // shift color "slider" of master on 32 during beat 
 + 
 +DeletePropAni PropertyNamePropertyNamePropertyName,,,, 
 +Commamd delete existing animation-tasks from the poolIf no one parameter specified then command delete ALL tasksCommand can contain one or more names of properties
 +PropertyName - string that contain complete name of object and its propertyThe property must be numeric
 + 
 +Example1
 +DeletePropAni   // delete all 
 + 
 +Example2: 
 +DeletePropAni "Master.Brightness"  
 + 
 +Example3: 
 +DeletePropAni "Master.Brightness" "Master.Color"
 + 
 + 
 +==== MIDI Surface Layer (MSL) ==== 
 + 
 + 
 +BEYOND offer more functions that can be mapped to MIDI sliders/buttons of overage MIDI console hasThe soluion is map a few function to one slider, and enable only one of themFor making this possible BEYOND intoduce conception of "layers"You organize some set of functions grouped into layers, and after that you can change the layer, what give quick access to the groups of functions
 + 
 +MIDI Sufrace Layering allow connect multiple BEYOND features to one MIDI command (message). Layeing work with Main GridSecondary GridSufrace Buttons, Surface Sliders, FX and Zone selectionCurrently available 12 layersCounting starts from 1 and up to 12The function of BEYOND may belong to more than one layerIn this case this function stay active in all layers where it enabled. If the function of BEYOND is not enabled in current layerthen it will not react on assigned MIDI messagesame as will not generate a feedback messages. 
 + 
 +Simplified Layer control. 
 + 
 +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=
 +Midi2.Layer=10 
 +Midi3.Layer=
 + 
 + 
 +Detailed control. 
 + 
 +Each table has own Layer property that you can control independently. 
 + 
 + 
 + 
 +==== Triggers ==== 
 + 
 + 
 +"Trigger" is a special mode for the scripter. The trigger as two part - Definition and Action. The the Definition part you define the type of the triggerrange of values and labels for corresponding sections of code. In the Action part has one or more code sections that will be activated - depending on the definition. Lets talk a bit more about when trigger may be in help and why it done this way. 
 + 
 +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 reactionIf the is not the same as "if value is in range then we do something". No., It is like - we do it every time as value come into the rangeThe next time it will happen when the value will go out of range and back to the range
 + 
 +No doubt it is possible to make a trigger by means for "standard" PangoScrtipt commands, but it require much more complex script code, more lines, and at the end it will be more slowThe Trigger use a hybrid methodYou define what to check and the rangesand BEYOND software do the idle job for you - BEYOND read the state and compare with rangestake care about the state and other things. All it done in native code. If you will do it all in PangoScript then it will require much more CPU time. So, this part can be more optimal. What say in PangoScript is a reaction (action). You need to define a section(sof code that will be activated. 
 + 
 + 
 +Trigger definition commands 
 + 
 +DefineDmxTrigger ChannelIndex - this command set the scripter into trigger mode, and define that trigger react on DMX channel number "ChannelIndex " 
 + 
 +DefineMidiTrigger Message, Data1 - this command set the scripter into trigger mode, and define that trigger react on MIDI message. You need to specify the message n 
 + 
 +DefineTrigger String-Expression, Caption - this command set the scripter into trigger mode, and define that trigger depends on expressionThe expression is math formulait has a syntax of string. The dumb exampe: DefineTrigger "2+2" In this example 2+2 is expression. But, according to syntax of this command we put expression inside "..". The Caption is just text string for PangoScript tab 
 + 
 +The top level logic of these command is this. The most possiblethe triggers will work with  MIDI and DMX consoles. The trigger must be fixand effectivebecause it will work on a high speedbecause we have a trigger specially made for MIDI and DMX. BEYOND precalculate values and do it all in native code. Butnot doubt will appear a need in some universal methodand in this case will help universal command DefineTrigger. This command work with expressionit is more slow because BEYOND need to calculate expression all the time, but it is very flexible, and work for all types of input dataYou can use objects, variables, functions, expression and so onIt can work with AudioKinect 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 commandsexamples and logic after that. 
 + 
 +InRangeTrigger MinValueMaxValue, LabelName 
 +The action will be activated when values comes in range between 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 
 + 
 +InRangeTriggerCmd MinValueMaxValueCommand 
 +The action will be activated when values comes in range between MinValue and MaxValue. When it happen the scripter execute Command. 
 +MinValue - numbera minimum value of the range 
 +MaxValue - numbera 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 - numbera 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 MinValueMaxValueLabelName   
 +The action will be activated when value decrease and stay in range of MinValue and MaxValueWhen it happen the scripter does goto to LabelName
 +MinValue - numbera minimum value of the range 
 +MaxValue - numbera maximum value of the range 
 +LabelName - string that contain label name 
 + 
 +About the logic 
 + 
 +The most simple is InRangeTrigger commandWhen values comes in range, then something happenWe can define a few ranges, and when value comes into the range then something will happenWhat will happen? We considered a few optionsand appeared that in simplest case one simple command will be enoughI meanBlackout, or EnableLaserOutput, or StopAllCue , who knowsIn many cases one command will be enoughButwhat is not enough? I this case we should do goto to a second of code. In factyou simply put a name of labeland BEYOND will do a goto (this process is optimized too). Sowe have two options Command or Label for Goto. 
 + 
 +There is inverted version of InRangeTrigger - OutOfRange triggerThe only different is goes to be activated when value goes out of rangeAll the rest is equalThere in Min and Max valueand there version of command for Command and for Label. 
 + 
 +The third variation of trigger allow define reaction on the increase or decrease of the value. it work like this: scripter memorize current value, and if the new value is bigger (or smallerthan current state then it active the trigger Command IncreaseTrigger create a reaction when new value is more than current. Command DecreaseTrigger create a reaction when new value is less than current.  
 + 
 +No doubtwe can add more commands, add more functionality to triggerThe range oriented commands is a classic. The increase/decrease has a practical use too
 + 
 +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, the trigger is only a way to do some action, we need define what it will do. 
 + 
 +Example 1: Enable/Disable laser output from MIDI 
 + 
 +DefineMidiTrigger 0xB00x00, "Enable Laser test" 
 +InRangeTriggerCmd 0,63,"DisableLaserOutput" 
 +InRangeTriggerCmd 64,127,"EnableLaserOutput" 
 + 
 +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, "Enable Laser test" 
 +DefineMidiTrigger  is  command 
 +0xB0, 0x00 - this is slider parameter 
 +"Enable Laser test"  - this is optional parameter - caption of this scripter 
 + 
 + 
 +InRangeTriggerCmd 0,63,"DisableLaserOutput" 
 +InRangeTriggerCmd - command, define the range and command 
 +0,63 - the range 
 +"DisableLaserOutput- command as string. 
 + 
 + 
 +InRangeTriggerCmd 64,127,"EnableLaserOutput" 
 +InRangeTriggerCmd - command that define second range 
 +64,127 - second range 
 +"EnableLaserOutput- command that will be executed. 
 + 
 + 
 + 
 +Example 2: Same as example 1, but with goto 
 + 
 +DefineMidiTrigger 0xB0, 0x00, "Enable Laser test 2" 
 +InRangeTrigger 0,63, "D1"  // D1 is a name of  label, see below 
 +InRangeTrigger 64,127, "D2" // D2 is a name of  label, see below 
 +exit /we need to exit because we should stop script execution after the declaration 
 + 
 +D1 // this is label used 1st range 
 +DisplayPreview "Disable" // visual indication in Preview panel 
 +DisableLaserOutput // Commamd 
 +exit // we should stop script execution, otherwise it will do below 
 + 
 +D2: // this is label used 2nd range 
 +DisplayPreview "Ensable// visual indication in Preview panel 
 +EnableLaserOutput 
 +exit // we should stop script executionThis 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 
 +2Ensure that label name in code and in definition is the same. Otherwiseit will not workLabel is case sensitive
 + 
 +And general advice - use DisplayPreview, DisplayPopup or qlog for debug purposeIt might be good idea to create a trigger definition with all jumpsand put inside commands like DipsplayPreview only, without real functionalityOnce you see that the logic works finethe put there the rest of code. 
 + 
 + 
 +Example 3: Slider at first time do Enable Laserand and second time Disable Laser 
 + 
 +This code based on previous, but it use variableVariable organize a 
 + 
 +DefineMidiTrigger 0xB00x00, "Enable Laser test 3" 
 +InRangeTrigger 64,127, "Trick1" 
 +var counter // declare variable 
 +counter=0 // initialize variable 
 +exit 
 + 
 + 
 +Trick1: 
 +DisplayPreview Counter  // debug action 
 +if (Counter=0) EnableLaserOutput  // action when Count is 0 
 +if (Counter=1) DisableLaserOutput // action when Count is 
 +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 4but with Goto 
 + 
 +DefineMidiTrigger 0xB0, 0x00, "Enable Laser test 3
 +InRangeTrigger 64,127, "Trick1" 
 +var counter 
 +counter=
 +exit 
 + 
 +Trick1: 
 +DisplayPreview Counter 
 +Counter=(Counter+1) % 2 
 +if (Counter=0goto When0 
 +if (Counter=1goto 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 triggerIt means thisYou can do goto by means of script commandBut trigger engine use the same gotoLook a the codecomments below 
 + 
 + 
 +DefineMidiTrigger 0xB00x00"Enable Laser test 3" 
 +InRangeTrigger 64,127"Trick1" 
 +InRangeTrigger 0,63, "StopIt" 
 +exit 
 + 
 + 
 +Trick1: 
 +DisplayPopup "Yes" 
 +Sleep 1000 
 +DisplayPopup "No" 
 +Sleep 1000 
 +goto Trick1 
 + 
 +StopIt: 
 +DisplayPopup "I dont care
 +exit 
 + 
 +Two rangesand main action in range of 64..127. The main action is after label Trick1. It has a dead loop. At leastit 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 "Master.BPM" // expression... 
 +InRangeTrigger 0,50,"WhenSlow" 
 +InRangeTrigger 250,500,"WhenFast" 
 +exit 
 + 
 +WhenSlow: 
 +DisplayPopup "Heydont sleep" 
 +exit 
 + 
 +WhenFast: 
 +DisplayPopup "Hey, too fast!" 
 +exit 
 + 
 +This example use simplest expression - read the value of object property - Master.BPMand 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 sensebut it it easy to testbecause you can see BPM value on toolbar and have the slider that control it. 
 + 
 +DefineTrigger "Master.BPM" // expression... 
 +OutOfRangeTrigger 60,250,"WhenOutOf" 
 +exit 
 + 
 +WhenOutOf: 
 +DisplayPopup "Hmmthis is not normal" 
 +exit 
 + 
 +Example 8: Starts/Stop timeline 
 + 
 +DefineMidiTrigger 0xB00x00"Timeline control" 
 +InRangeTriggerCmd  0, 63"StopTimeline" 
 +InRangeTriggerCmd 64,127, "PlayTimeline" 
 + 
 +  
 + 
 +</code>
beyond/pangoscript_commands.1591896057.txt · Last modified: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki