Table of Contents

BEYOND OSC

BEYOND offer control by means of OSC protocol. BEYOND act as server, what meat that it execute commands (messages) sent by OSC Client. There are many OSC Client applications for various platforms. Typically OSC Client application allow to create or adjust User Interface that will generate the messages. BEYOND will receive and execute the message. BEYOND has ready for use OSC Server that do not require any configuration or settings. You (client application) need to send the message corresponding address and corresponding arguments. Information about OSC messages is below.

OSC Message

OSC Message contains 3 parts:

  1. Ordered List ItemAddress. Address is a string and define what functionality the message will have.
  2. Type Tag String. Type Tag String define the types of arguments that comes inside the message.
  3. Argument(s). the value that comes with message.

As example, for control of master position. The address is /beyond/master/livecontrol/position. Together with the address the OSC Client must send 2 or 3 values - X, Y (optional Z) axis. As example, in TouchOSC you will need to enter the address and define the value range (min, max). The value and its type will be added automatically by TouchOSC.

OSC in Object tree

To find OSC commands/addresses the easy way is to make usage of the Object tree. Open up the tools menu and click object tree to make it visible.

Once the Object tree is visible, you are able to browse the tree it self by double clicking on items.

Once you clicked on an address or command you can take the command from the OSC address bar and use that on various locations.

The OSC address bar with command is highlighted in the example below.

This OSC address can be used in many locations.

- Internally in the Pangoscript editor - In BEYOND Universe - At the midi controller configuration panels - In third-party OSC applications like Lemur, TouchOSC etc.

Note that not all third-party OSC applications will process OSC as they should. 
A known issue is that TouchOSC is not able to process OSC commands to use the 
cue grid to its full potential.

OSC to PangoScript GATEWAY

Server transform the OSC message to the command first and then the command goes to execution. The command appear in the system in the same way as it could be from the keyboard, or the mouse. This kind of servers also has fixed address and corresponding set of arguments. Actually, the address of such OSC server is a way to describe BEYOND command. And it was main intention - to give OSC the ability to do the same what the Script can do. Both parts (OSC and Script) produce a Command at the end, and why not to mix both worlds.

Address of message and number of arguments should correspond to the PangoScript command. Available following addressing:

/beyond/general/...
/beyond/master/...
/beyond/cue/...
/beyond/zone/...
/beyond/projector/...
/beyond/protrack/...

“general” use for variety of script commands. All others are for specific features of object, or for live control (see above)

The “general” serve contain embedded Scripter-object that always exists. Basically, you supply a command into embedded scripter and then it wait for the next command

AddressTypeCommentary
/beyond/general/CueDownii or iii
/beyond/general/CueUpii or iii
/beyond/general/PauseCueiii
/beyond/general/RestartCueii
/beyond/general/StopAllNow-
/beyond/general/StopAllSyncf
/beyond/general/StopAllAsyncf
/beyond/general/StopCueNowii
/beyond/general/StopCueSynciif
/beyond/general/StopZoneif
/beyond/general/StopZonesOfProjectori
/beyond/general/BlackOut-
/beyond/general/EnableLaserOutput-
/beyond/general/DisableLaserOutput-
/beyond/general/MasterPausei
/beyond/general/VirtualLJi
/beyond/general/VLJFXii
/beyond/general/BeatTap-
/beyond/general/SetBpmf
/beyond/general/SetBpmDeltaf
/beyond/general/BeatResync-
/beyond/general/OneCue-
/beyond/general/OnePer-
/beyond/general/MultiCue-
/beyond/general/Transitioni
/beyond/general/ClickSelect-
/beyond/general/ClickToggle-
/beyond/general/ClickRestart-
/beyond/general/ClickFlash-
/beyond/general/ClickSoloFlash-
/beyond/general/ClickLive-
/beyond/general/TimerBeat-
/beyond/general/AudioBeat-
/beyond/general/ManualBeat-
/beyond/general/ClickScrollZoomf
/beyond/general/ClickScrollSizef
/beyond/general/ClickScrollFadef
/beyond/general/ClickScrollVPointsf
/beyond/general/ClickScrollScanRatef
/beyond/general/ClickScrollColorf
/beyond/general/ClickScrollAniSpeedf
/beyond/general/ClickScrollRf
/beyond/general/ClickScrollGf
/beyond/general/ClickScrollBf
/beyond/general/ClickScrollAf
/beyond/general/SetLimiterProfilei
/beyond/general/SetLimiterPerZonei
/beyond/general/SetLimiterPerGridi
/beyond/general/SetLimiterFlashi
/beyond/general/SetLimiterHoldi
/beyond/general/SetLimiterBeami
/beyond/general/SetLimiterDMXi
/beyond/general/SetLimiterShowi
/beyond/general/MasterTransitionIndexi
/beyond/general/MasterTransitionTimef
/beyond/general/MasterTransitioni
/beyond/general/DisplayPopupANY TTS
/beyond/general/DisplayPreviewsi
/beyond/general/MasterSpeedf
/beyond/general/UnselectAllSmart-
/beyond/general/SelectSmartANY TTS
/beyond/general/UnselectSmartANY TTS
/beyond/general/ToggleSelectSmartANY TTS
/beyond/general/UnmuteAllSmart-
/beyond/general/MuteSmartANY TTS
/beyond/general/UnmuteSmartANY TTS
/beyond/general/ToggleMuteSmartANY TTS
/beyond/general/UnselectAllFixt-
/beyond/general/SelectFixtANY TTS
/beyond/general/UnselectFixtANY TTS
/beyond/general/ToggleSelectFixtANY TTS
/beyond/general/UnmuteAllZone-
/beyond/general/MuteZoneANY TTS
/beyond/general/UnmuteZoneANY TTS
/beyond/general/ToggleMuteZoneANY TTS
/beyond/general/MuteSelectedi
/beyond/general/UnselectAllZones-
/beyond/general/SelectZoneANY TTS
/beyond/general/SelectZoneNameANY TTS
/beyond/general/UnSelectZoneANY TTS
/beyond/general/UnSelectZoneNameANY TTS
/beyond/general/ToggleSelectZoneANY TTS
/beyond/general/ToggleSelectZoneNameANY TTS
/beyond/general/MuteSelectedZonesi
/beyond/general/SetGridSizeii
/beyond/general/MasterPauseTimei
/beyond/general/StoreZoneSelection-
/beyond/general/ReStoreZoneSelection-
/beyond/general/SelectGridi
/beyond/general/SelectTabNames
/beyond/general/SelectTabi
/beyond/general/SelectNextTab-
/beyond/general/SelectPrevTab-
/beyond/general/SelectPageName-
/beyond/general/SelectPagei
/beyond/general/SelectNextPage-
/beyond/general/SelectPrevPage-
/beyond/general/SelectAllCat-
/beyond/general/SelectCatNames
/beyond/general/SelectCati
/beyond/general/SelectNextCat-
/beyond/general/SelectPrevCat-
/beyond/general/FocusCellii
/beyond/general/FocusCellIndexi
/beyond/general/StartCell-
/beyond/general/ReStartCell-
/beyond/general/StopCell-
/beyond/general/ShiftFocusi
/beyond/general/MoveFocusii
/beyond/general/SelectCues
/beyond/general/StartCues
/beyond/general/StopCues
/beyond/general/LoadCues
/beyond/general/LoadWorkspaces
/beyond/general/SetPagei
/beyond/general/GetPage-
/beyond/general/SelectMidii
/beyond/general/MidiOutiii
/beyond/general/DmxOutAny TTS'ii', base channel, value, value, value… and so on.
/beyond/general/ChannelOutii
/beyond/general/OscOutAny TTSsii ClickCode:'OscOut “/beam1/xy”, -5, 100 - set beam 1 position to [-5,100]';),
/beyond/general/StopZoneByNames
/beyond/general/StopProjectorByNames
/beyond/general/ControlMaster-
/beyond/general/ControlCueii
/beyond/general/ControlZonei
/beyond/general/ControlTracki
/beyond/general/ControlProjectori
/beyond/general/ControlSmarti
/beyond/general/StopCodes

Supported Argument types

BEYOND support integer number (i), float point number (f), and string (s). Other data types ignored. You need to ensure that OSC client send correct type of argument to BEYOND.

Supported addressing schemes.

Characters: , / [ ] { } * ? ! ' ' # are used for address format and can not be used in names. These characters.has special functionality:

Extended syntax when use OSC servers in PangoScript. (not relating to OSC clients such as TouchOSC, Lemur and so on)

It is possible to use OSC syntax in PangoScript. You type an address and arguments. Scripter will analyze and supply for execution into BEYOND OSC servers. You can use variables of script inside address. Variable name should be inside < >

Example:

var MyVariable
MyVariable = 0
/beyond/zone/<MyVariable>/select 1

Other OSC Servers

Direct servers

This kind of server provide a direct access to internal object of BEYOND. No extra layers, or something in between. BEYOND receive the OSC packet, analyze the address and if the address point on direct server, the BEYOND execute it right after the address parsing. Such servers has fixed address part and number of arguments.

Server: DMX Input
AddressArgument type(sCommentary
/beyond/dmxfff..fGateway. array of f (floats) goes to DMX output. value 0..255. “-1” is special “undefined” state
Server: Beams
AddressArgument type(s)Commentary
/beyond/beamsfff..fGateway. Control beams. Works as brightness control per beam. 0 - off. 255 - on.
Server: Channels
AddressArgument type(s)Commentary
/beyond/channelsfff..fGateway. Control channels. Value range 0..1
Server: MULTI TOUCH interface
AddressArgument type(s)Commentary
/beyond/touch/xfvalue 0..1.
/beyond/touch/yfvalue 0..1.
/beyond/touch/zfvalue 0..1, means a pressure. 1 full pressure. 0 - off

Live Control Parameters

There are a few areas where used Live Control object:

/beyond/master/...
/beyond/cue/...
/beyond/zone/...
/beyond/projector/...
/beyond/protrack/...

example of full path to Live Control:

/beyond/master/livecontrol/size
/beyond/cue/0/0/livecontrol/size
/beyond/zone/0/livecontrol/size
/beyond/projector/0/livecontrol/size
/beyond/spatial/0/livecontrol/size
/beyond/smart/0/livecontrol/size

NOTE 1

/beyond/protrack/  - here can be used index or name of protrack-object
/beyond/zone/   - here can be used index or name of zone-object

In the table below a list of functions (ending name of the address):

FunctionTypeCommentary
sizef-400..400 - one size for all 3 axis
sizexf-400..400
sizeyf-400..400
sizezf-400..400
zoomf0..100
posxf-32768 .. 32768 . Coordinate for output 16 bit
posyf-32768 .. 32768 . Coordinate for output 16 bit
poszf-32768 .. 32768 . Coordinate for output 16 bit
anglexf-360*8 .. 360*8 . 8 rounds
angleyf-360*8 .. 360*8 . 8 rounds
anglezf-360*8 .. 360*8 . 8 rounds
rotoxf-360*4 .. 360*4 . 4 rounds per second
rotoyf-360*4 .. 360*4 . 4 rounds per second
rotozf-360*4 .. 360*4 . 4 rounds per second
brightnessf0..100
visiblepointsf0..100
colorsliderf0..255
anispeedf0..400
scanratef10..200. 100 default
redf0..255
greenf0..255
bluef0..255
alphaf0..255
fx1f-1..47. -1 means stop. 0..47 - effect index. 48 effects per row
fx2f-1..47. -1 means stop. 0..47 - effect index. 48 effects per row
fx3f-1..47. -1 means stop. 0..47 - effect index. 48 effects per row
fx4f-1..47. -1 means stop. 0..47 - effect index. 48 effects per row
fx1actionf0..100. effect action. 100 means fill action
fx2actionf0..100. effect action. 100 means fill action
fx3actionf0..100. effect action. 100 means fill action
fx4actionf0..100. effect action. 100 means fill action
sizeffsize by x,y axis. -400..400
posffposition by x,y axis. -32768 .. 32768
sizefffsize by x,y,z axis. -400..400
posfffposition by x,y,z axis. -32768 .. 32768
anglefffangle by x,y,z axis
rotofffrotation speed by x,y,z axis
fxfffffour FX indexes. -1 means stop. 0..47 - effect index. 48 effects per row

Server: MASTER

/beyond/master/livecontrol/…

Server: CUE

/beyond/cue/#/#/livecontrol/… require two indexes - page and cue

Server: ZONE

FunctionTypeCommentary
/beyond/zone/#/selectf0-undelect. 1-select, 2-toggle state
/beyond/zone/#/mutef0-default, unmuted. 1-mute. 2-toggle state
/beyond/zone/#/livecontrol/…

# is the index of the zone

Server: PROJECTOR

FunctionTypeCommentary
/beyond/projector/#/livecontrol/…
/beyond/projector/#/sizexf-100..100
/beyond/projector/#/sizeyf-100..100
/beyond/projector/#/posxf-100..100
/beyond/projector/#/posyf-100..100
/beyond/projector/#/swapxyf0-off, 1-on, 2-toggle
/beyond/projector/#/invxf0-off, 1-on, 2-toggle
/beyond/projector/#/invyf0-off, 1-on, 2-toggle

# is index of the spatial defined in UI

Server: ProTrack

FunctionTypeCommentary
/beyond/protrack/#/selectf0-unselect. 1-select 2-toggle state
/beyond/protrack/#/mutef0-default, unmuted. 1-mute. 2-toggle state
/beyond/protrack/#/livecontrol/…
/beyond/protrack/#/CODENAMECODENAMEis a name of “deamon” script defined inside protrack object. Function “start” the scripter

# is index or NAME of the protrack object defined in Setup dialog

Server: FIXTURE

/beyond/fixture/NAME/FUNCTION

NAME” is index or NAME of the FIXTURE object defined in Setup dialog. “FUNCTION” is name of function that exists in the Fixture

Server: MIDI DEVICES CONTROL

FunctionTypeCommentary
/midi/close-close all 4 ports
/midi/open-open all 4 ports
/midi/indexfset current device index, 0..3
/midi/sysexfff…fsend sysex to current (index) device
/midi/CODENAME-codename is name of script defined in “daemons” of the MIDI MAPPING. Works for current only
/midi/1/…-or /midi/<devicename>/…
/midi/2/…-or /midi/<devicename>/…
/midi/3/…-or /midi/<devicename>/…
/midi/4/…-or /midi/<devicename>/…
/midi/1/deviceins
/midi/1/deviceouts
/midi/1/sysexfff…f
/midi/1/CODENAME-codename is name of script defined in “daemons” of the MIDI MAPPING. Here the device index specified. so, no need to set pair-index.

Server: PROJECTION ZONE SETUP

FunctionTypeCommentary
/beyond/zonesetup/zonefset index of current zone
/beyond/zonesetup/nextzone-increase index (go to next zone)
/beyond/zonesetup/prevzone-decrease index (go previews zone)
/beyond/zonesetup/paramfset index of current parameter - size, pos, etc
/beyond/zonesetup/nextparam
/beyond/zonesetup/prevparam
/beyond/zonesetup/axf
/beyond/zonesetup/ayf
/beyond/zonesetup/bxf
/beyond/zonesetup/byf
/beyond/zonesetup/xfequal to ax
/beyond/zonesetup/yfequal to ay
/beyond/zonesetup/xsizef
/beyond/zonesetup/ysizef
/beyond/zonesetup/xpositionf
/beyond/zonesetup/ypositionf
/beyond/zonesetup/zrotationf
/beyond/zonesetup/xlinearityf
/beyond/zonesetup/ylinearityf
/beyond/zonesetup/xsymmetryf
/beyond/zonesetup/ysymmetryf
/beyond/zonesetup/xsymmetryoffsetf
/beyond/zonesetup/ysymmetryoffsetf
/beyond/zonesetup/xkeystonef
/beyond/zonesetup/ykeystonef
/beyond/zonesetup/xpincussionf
/beyond/zonesetup/ypincussionf
/beyond/zonesetup/xpincussionoffsetf
/beyond/zonesetup/ypincussionoffsetf
/beyond/zonesetup/xbowf
/beyond/zonesetup/ybowf
/beyond/zonesetup/xbowoffsetf
/beyond/zonesetup/ybowoffsetf
/beyond/zonesetup/xshearf
/beyond/zonesetup/yshearf

Server: Universe window

/u/ Layout Name / Object Name / Property Name

Universe window is the most flexible because the content defined exclusively by BEYOND User. The name of Layout, same as name of Object inside the Layout are completelly used defined.

FunctionTypeCommentary
/valuei,f,ii, evendefine value of object. Designed for sliders and buttons. An object such as XY Par require two coordinates, the OCS Client should send two integer of floats.
/xi,fequal to “value”, define the value of slider
/yi,fdefine Y value for object such as XY Pad
/visiblei,fcontrol visibility of object. Value above 0.01 will make it visible, below 0.01 - invisible
/selectedi,fcontrol Selected state of object. Value above 0.01 will make it Selected, below 0.01 - un selected. Used with Zone, Fixture objects in layouts
/minvaluei,fdefine minimum value of slider
/maxvaluei,fdefine maximum value of slider
/timeshifti,fdefine time shift property of component
/dropdurationi,fduration of drop effect in seconds
/radiusi,fradius of spatial effect
/captionsdefine caption text of object
/start-start script execution
/stop-stop script execution
/LabelName-This allow do a jump to Label defined in the scripts. Labels used with GOTO commands. You also can execute goto by means of this message

OSC to Script servers

This section assume that you already checked the information about BEYOND Commands. The Command of BEYOND contain information about the recipient of the command, code of operation, and the list of arguments. The Command may be addressed to various objects inside BEYOND such as Cue, Projection Zone, Master Live Control, etc. So, BEYOND has a gateway that allow transform OSC messages directly to the Command and send the Command to execution.

The initial addresses of gateway are below:

/cue
/zone
/projector
/master
/general

Lets consider for example Cue server.

/cue/

The addressing the cue we need to supply the page index and the cue index inside the page. The final address looks like this:

/cue/pageindex/cueindex/commandname

where: “pageindex” is number that define index of the page, “cueindex” is a number that define index of cue inside the page, “commandname” is the name of operator that can be found in document about the PangoScript.

What happens technically is this. The Command is an object with a few properties. The OSC server create Command obejct and start to initialize the properties of the object, one by one. “/cue” prefix tell that the recipient is cue. Page index, Cue index point on exact cue. So, we have two more numbers for Command object. After this, we have Command name as string. the Server find the command code by the command name and as a result initialize corresponding property of Command object. The list of arguments from OSC message directly goes into Command object, without analysis. So, we initialize the Command object by the data from OSC message and send to execution.

Exactly this is a purpose of the gateway - to transform OSC message to the Command.

The code of execution check all arguments and addressing and if something is not correct, then the Command may be blocked completelly. All will depends on exact situation.

Example of the OSC address for this server:

/cue/1/2/sizex (f)
/cue/0/0/position (fff) 

What commands can be served by /cue/ server? The most definitely is the Live Control group commands, and FX. The command like cue start, or cue stop, is an area of /general/ server