D-Mitri text commands

This section describes the various text commands that are accepted by CueStation. Text commands are used in various places, including port 18034, external commands, etc. Variables appear in brackets.
Note
Alias values can be included in any text command by prepending a dollar sign ($) to the alias's name, and the aliases will be expanded when the command is executed. For example, if there is an alias named Meyer with an associated value of 123 in the Active Config, the text command “recall cue $Meyer” is interpreted as “recall cue 123”.
Command | Description |
---|---|
go [on player N] | Equivalent to pressing a GO button in the Transport window. If (on player N) is specified, then the GO button will be pressed on Cue List Player #N; if not, it will default to Cue List Player #1. |
stop [on player N] | Equivalent to pressing a STOP button in the Transport window. if (on player N) is specified, then the STOP button will be pressed on Cue List Player #N; if not, it will default to Cue List Player #1. |
next [D] [on player N] | Moves the upcoming-cue position (aka the yellow bar) in the Transport window by D positions. For example, “moveby 1” is the same as “next”, and “moveby -1” is the same as “previous”. Attempts to move off the top or bottom of the list will move the yellow bar to the top/bot- tom of the list, so “moveby -99999” is a good way to “skip to the top” of the cue list. If no player ID is specified, the command will be applied to Cue List Player #1. If no delta is specified, a delta of 1 is assumed. |
moveby [D] [on player N] | |
prev [D] [on player N] | This works the same as “next” and “moveby”, except that the sense of the delta values is negated; e.g. “prev 1” will move the yellow bar up one in the Cue List, and “prev -1” will move the yellow bar down one in the Cue List. If no delta is specified, a delta of 1 is assumed. |
previous [D] [on player N] | |
top [on player N] | Moves the upcoming-cue position of specified Cue List Player to the top of the Cue List. If no player ID is specified, the command will be applied to Cue List Player #1. |
bot [on player N] | Moves the upcoming-cue position of specified Cue List Player to the bottom of the Cue List. If no player ID is specified, the command will be applied to Cue List Player #1. |
bottom [on player N] | |
recall (cue,subcue) D [on player N] | Recalls the specified cue or subcue. If the “on player N” suffix is not present, the recall will occur on Cue List Player #1. |
update (cue,subcue) D | Updates the control point values in the specified cue or subcue to the mixer's current state for those values. |
log (text) | Prints the specified text to the system log. The command word used determines the severity level at which the text is logged. |
warn (text) | |
error (text) | |
crit (text) | |
debug (text) | |
trace (text) | |
get [tag=] (addresses) | Requests the current values of the specified addresses. For example, “get input 1-8 level” will cause the current values of the first 8 input fad- ers to be printed. If an optional tag is specified (e.g. “get foo = input 1- 8 level”) then the returned values text will include the specified tag string (e.g. “foo”). |
set (addresses) = (values) | Sets the specified values to the specified addresses. The syntax is sim- ilar to what is seen in Mixer Parameter subcues. For example, “set input 1-8 level = +5.5” or “set output 5,7,9-11 mute = false”. You can specify optional wait and fade times like this: “set input 1 level = -50.0 waitTime=5.5 fadeTime=10.0” (which specifies a wait of 5.5 seconds followed by a fade over 10 seconds). |
increase (addresses) by (values) | Increases the specified addresses by the specified values. For exam- ple, “increase input 1-8 level by +5.5”. You can specify optional wait and fade times like this: “increase input 1 level by +3.0 waitTime=5.5 fadeTime=10.0” (which specifies a wait of 5.5 seconds followed by a +3dB fade over 10 seconds). |
decrease (addresses) by (values) | Decreases the specified addresses by the specified values. For exam- ple, “decrease input 1-8 level by +5.5”. You can specify optional wait and fade times like this: “decrease input 1 level by +3.0 waitTime=5.5 fadeTime=10.0” (which specifies a wait of 5.5 seconds followed by a - 3dB fade over 10 seconds). |
fade (addresses) (up/down/to) (val- ues) over (time period) | This command is a convenience synonym for the “set”, “increase”, or “decrease” commands described above. It can be used to more easily specify control point changes with fades. Some examples: “fade input 1 level to +5dB over 3 seconds” “fade input 1,3,5 level up 5dB over 3 seconds” “fade input 1-4 level down 5dB over 500 milliseconds” “fade input 1-4 level down 20dB” Note that if a time period is not specified, a fade time of 1 second will be used by default. |
subscribe (addresses) | Tells the system to send text messages whenever the specified control point(s) change. Also an initial update is always sent immediately after the subscribe command is received. Example: subscribe input 1-2 level Got: Input 2 Level = -inf Got: Input 1 Level = -inf |
unsubscribe (addresses) | Removes the specified addresses from the current subscribed- addresses set for this client. |
unsubscribeall | Removes all subscribed addresses from the subscribed-addresses set for this client. |
subscribeevent (pattern) | Tells the system to send text messages whenever the events whose event strings match the specified pattern occur. Example: subscribeevent hexbytes* Event: hexbytes unit 1 bytes F0 1F 7E 01 02 F7 |
unsubscribeevent (pattern) | Cancels a previously subscribed event pattern. (The string passed to this command should be one that was previously passed to “sub- scribeevent”). Note that wildcards specified in (pattern) are not expanded to match multiple previous patterns that were passed to “subscribeevent”; rather, at most only a single pattern will be unsub- scribed. Example: unsubscribeevent hexbytes* |
unsubscribeallevents | Cancels all previously created event subscriptions for this client. |
watch (nodepath) [quietly] | Starts watching the specified nodes in the project. Whenever a project node whose path matches (nodepath) is created, changed, or destroyed, update text will be generated to notify you about the change. Example: watch log/* log/I0: QNetLogEntry: name=[Received state #0 of primary database from the senior peer.] when=[2010/08/31 12:56:39] severity=[info] sourceName=[dcasld@Processor-1] msgSerNum=[0] sourceSer- Num=[1000] scloc=[JBTS] log/I1: QNetLogEntry: name=[Sending state #0 of primary database to peer 429-493-4527.] when=[2010/08/31 12:56:39] severity=[info] sourceName=[dcued@Processor-1] msgSerNum=[1] sourceSer- Num=[1000] scloc=[JBG8] If the “quietly” keyword is specified, then existing nodes won't be printed; only future updates will be printed. If you watch a node that has a child-nodes-index, then instructions for reproducing that index will be printed also. For example: watch default/cuelists/0 default/cuelists/0: QNetCueList: name=[Default Cue List] index/default/cuelists/0: Clear Index index/default/cuelists/0: Insert child I18 at position 0 index/default/cuelists/0: Insert child I5 at position 1 index/default/cuelists/0: Insert child I19 at position 2 [...] index/default/cuelists/0: Remove child I19 from position 2 index/default/cuelists/0: Insert child I19 at position 10 |
unwatch (nodepath) | Cancels a previously set watch path. |
unwatchall | Cancels all previous set watch paths for this client. |
print (nodepath) (maxdepth=D) | Prints all nodes matching (nodepath), and recursively prints their child nodes as well. You can optionally specify a maxdepth=D argument to limit the maximum depth of the recursion; by default it will recurse as far as it can. Example: print default/subcues/0 default/subcues/0: QNetSubcueHeader: name=[jr_FIRE DRILL!] type=[1] typeString=[Commands] default/subcues/0/scd: [External_Control / Print Message To Log]: enabled=1 waitTime=0 Cmt=[] tttMode=1 tttKey=[] user=0 |
ping [tag] | Sends a “Ping” to dmixerd which is immediately echoed back with a corresponding “Pong”. You can optionally specify a tag string, which will be included in the Pong result. |
projectping [tag] | This is similar to the “ping” command, except that the ping is routed through dcued and back, rather than just through dmixerd. This can be helpful when you want to be notified that dcued has finished process- ing a command that you previously sent it. |
heypython (slotindex) [message] | This command sends a text message to the Python script running in slot (slotindex) in the script execution window. The message can be any string you like; it will be passed in as the argument in a call to User- CommandReceived() in the Python script. The default implementation of UserCommandReceived() in the BasicClient class will try to execute the string as Python source code; however scripts can (and often do) override UserCommandReceived in a subclass of BasicClient to to handle the incoming text in a different manner. Some values for (slotindex) that have special meanings are: -1 = send to all python scripts (whether shown in the Script Execution window or not) -2 = send to all “foreground” python scripts (i.e. all scripts shown in the Script Execution window) -3 = send to all “background” python scripts (i.e. all scripts not shown in the Script Execution window) |
runpython (slotindex) (filename) [arguments] | Launches a new Python script process in the specified slot in the Script Execution window. A slotindex value of -1 will cause the script to be run “in the background” (i.e. not shown in the Script Execution win- dow). The filename should be the name of a python script in the Sup- port Files window, or in the templates folder. |
trigger (eventstring) | Sends a trigger-event to the CueStation system. Any triggers (previ- ously set up with the “External Control /Setup Triggers” command) that match (eventstring) will be activated. |
wait (time period) | Pauses the OSC parser for this client for the specified period of time. For example, “wait 5” will cause no more OSC commands to be exe- cuted after this one (for this client) until 5 seconds have passed. “Wait 100 milliseconds” would cause a 100 mS pause. If no argument is provided, then a wait time will be calculated so that command execution resumes immediately after the (“set”, “increase”, “decrease”, or “fade”) command most recently sent by this client fin- ishes its wait/fade execution. |
cancel (all) | Cancels any current time period for this client (caused a previous “wait” command) as well as any commands that had been queued up to exe- cute when the time period completed. If the keyword “all” is specified (i.e. “cancel all”) then all OSC clients in the system will have the “cancel” operation applied to them, rather than only the current client. |
osc (commandpath) [osc_args] | This command tells CueStation to execute an OpenSoundControl command that is specified in the comma-separated arguments in the text line. For example, to have CueStation execute a “Page Groups / Change Page” command that increments the current-page value of the first Page Group, you could enter this text command: osc /dcasld/changepage (int32)0, (int32)0, (int32)1, (int32)0, (int32)0 (See the “OSC” tab in the Command Subcue Editor for a template of the arguments to use for any given type of Command) Supported argument types (which should match the types shown in the Command Subcue Editor) and their values are as follows: (bool) — boolean value: true or false (float) — floating point value e.g. 1.2345 (int32) — 32 bit integer value: e.g. 123456 (int64) — 64 bit integer value: e.g. 12345678901234 (string) — character string value: e.g. this is a test. Can be “quoted”, but quotes are only necessary if you want leading or trailing spaces or a comma to be included in the string (blob) — a sequence of hexadecimal bytes, e.g. 0xF0 0x1F 0x7E 0x00 0xF7 (point) — a pair of floating point values, e.g. 1.5 2.5 (address) — a control point address, e.g. Input 5 Level (null) — OpenSoundControl NULL value (aka nil) |
enablemodule (modulenamestring) | Tells CueStation to enable, disable, or toggle the current enabled/dis- able status of the specified module or modules. Disabled modules will not pass audio, and will be considered inelegible when the job sched- uler is choosing modules to fill various audio processing tasks. (modu- lenamestring) can be the name of a CueStation module (as specified in the Mixer Configuration window) or a wildcard pattern matching multi- ple modules. |
disablemodule (modulenamestring) | |
togglemodule (modulenamestring) | |
setalias (name) = (values) | Tells CueStation to set, delete, or modify the specified Alias values (as seen in the Aliases tab in the (Active Config) in the Mixer Configuration window. These commands work similarly to the “External Control / Set Alias” command type. In particular: “setalias” will set the value(s) of an alias to the specified values, creat- ing the alias first if necessary. “deletealias” will delete any aliases whose names match the specified name pattern. “addaliasvalues” will add the specified values to existing aliases whose names match (namepattern), if they are not already present. An alias will be created first, if no matching aliases exist. “removealiasvalues” will remove the matching values from existing aliases whose names match (namepattern), if they exist. |
deletealias (namepattern) | |
addaliasvalues (namepattern) = (values) | |
removealiasvalues (key) = (valuepatterns) | |
setstatusupdates [true/false] | Tells CueStation to start (or stop) sending regular status-updates to this client. |
begin | This command causes the receiving command parser to enter batch- processing mode. In batch-processing mode, commands are not exe- cuted, they are merely queued up for processing later. When the matching “end” command is received, all of the queued up commands will be processed at once. This allows the entire command group to be sent as a single RepDB transaction, which can be more efficient than a large number of smaller transactions. Nesting is allowed; nested begin/ end commands will be ignored (only the outermost begin/end will have any effect). Example: begin set bus 1 output 1 level = 1.0 set bus 2 output 1 level = 1.0 set bus 3 output 1 level = 1.0 set bus 4 output 1 level = 1.0 end |
end | This command marks the end of a batch. There should be one “end” sent for every “begin” command sent. The end (if it is not nested inside another (begin, end) pair) will cause the gateway to finally execute any commands it had been queuing up. |
It is possible for a client to send ASCII text commands inside UDP packets to a CueStation system, even if the client does not know the IP address of any of the modules in the CueSta- tion system. To do this, the client just needs to know the CueStation system's system-name string. The client can then use a hashing algorithm equivalent to the one shown in the Python code below to compute the multicast IP address that corresponds to the system-name string, and send UDP packets to that IP address. The senior dmixerd peer will be listening to that multicast group and will receive and process the UDP packets.
# Given a CueStation system name as an argument, this script something or other # prints out the IPv6 multicast address that the senior # dmixerd peer will listen on for incoming OpenSoundControl # and ASCII text commands over UDP. import sys import socket systemName = sys.argv[1] print “For CueStation system name: “, systemName hash = 631741 # arbitrary magic starting number for c in systemName: hash = (hash*33)+ord(c) hash = hash % 18446744073709551616 # keep hash bounded to 64-bits s = “ff12:0000:0001:0000” for i in range(0, 16): if (i%4) == 0: s = s + “:” s = s + “%x”%((hash>>(60-(i*4)))&0x0F) print “IPv6 multicast address is: “, socket.inet_ntop (socket.AF_INET6, socket.inet_pton(socket.AF_INET6, s))