Max Speed Script (OP)
Just like when setting it on the Reindex API, requests_per_secondcan be either -1 to disable throttling or any decimal numberlike 1.7 or 12 to throttle to that level. Rethrottling that speeds up thequery takes effect immediately, but rethrottling that slows down the query willtake effect after completing the current batch. This prevents scrolltimeouts.
Max Speed Script (OP)
Just like when setting it on the _update_by_query API, requests_per_secondcan be either -1 to disable throttling or any decimal numberlike 1.7 or 12 to throttle to that level. Rethrottling that speeds up thequery takes effect immediately, but rethrotting that slows down the query willtake effect after completing the current batch. This prevents scrolltimeouts.
Grid integration allows you to use grid to visualize, control and execute teletype scripts. You can create your own UIs using grid ops, or control Teletype directly with the Grid Control mode. Built in Grid Visualizer allows designing and using grid scenes without a grid. For more information and examples of grid scenes please see the Grid Studies.
You can now select multiple lines when editing scripts by holding shift. You can move the current selection up and down with alt- and alt-. You can copy/cut/paste a multiline selection as well. To delete selected lines without copying into the clipboard use alt-.
Hold shift while making line selection in script editing to select multiple lines. Use alt- and alt- to move selected lines up and down. Copy/cut/paste shortcuts work with multiline selection as well. To delete selected lines without copying into the clipboard use alt-.
Previously, when pasting the clipboard while in script editing the pasted line would replace the current line. It will now instead push the current line down. This might result in some lines being pushed beyond the script limits - if this happens, use ctrl-z to undo the change, delete some lines and then paste again.
The new op family INIT features operator syntax for clearing various states from the unforgiving INIT with no parameters that clears ALL state data (be careful as there is no undo) to the ability to clear CV, variable data, patterns, scenes, scripts, time, ranges, and triggers.
The Turtle operator allows 2-dimensional access to the patterns as portrayed out in Tracker mode. It uses new operators with the @ prefix. You can @MOVE X Y the turtle relative to its current position, or set its direction in degrees with @DIR and its speed with @SPEED and then execute a @STEP.
Setting @SCRIPT N will cause script N to execute whenever the turtle crosses the boundary to another cell. This is different from simply calling @STEP; @SCRIPT N because the turtle is not guaranteed to change cells on every step if it is moving slowly enough.
These mods allow rhythmic division of control flow. EVERY X: executes the post-command once per X at the Xth time the script is called. SKIP X: executes it every time but the Xth. OTHER: will execute when the previous EVERY/SKIP command did not.
Individual lines in scripts can now be disabled from execution by highlighting the line and pressing ALT-/. Disabled lines will appear dim. This status will persist through save/load from flash, but will not carry over to scenes saved to USB drive.
W [condition]: is a new mod that operates as a while loop. The BREAK operator stops executing the current script BPM [bpm] returns the number of milliseconds per beat in a given BPM, great for setting M. LAST [script] returns the number of milliseconds since script was last called.
Temporal recursion now possible by fixing delay allocation issue, e.g.: DEL 250: SCRIPT SCRIPT KILL now clears TR outputs and stops METRO. SCENE will no longer execute from the INIT script on initial scene load. AVG and Q.AVG now round up from offsets of 0.5 and greater.
As I is now local to L loops, it is no longer usable across scripts or as a general-purpose variable. As IF/ELSE is now local to a script, scenes that relied on IF in one script and ELSE in another will be functionally broken.
WARNING: If you restore your scripts from a USB memory stick, please manually fix any changes first. Alternatively, incorrect commands (due to the above changes) will be skipped when imported, please re-add them.
Each time input 1 is triggered, the pattern moves forward one then CV 1 is set to the note value of the pattern at the new index. This is a basic looped sequence. We could add further control on script 2:
An internal metronome executes the M script at a specified rate (in ms). By default the metronome is enabled (M.ACT 1) and set to 1000ms (M 1000). The metro can be set as fast as 25ms (M 25). An additional M! op allows for setting the metronome to experimental rates as high as 2ms (M! 2). WARNING: when using a large number of i2c commands in the M script at metro speeds beyond the 25ms teletype stability issues can occur.
Grid operators allow creating scenes that can interact with grid connected to teletype (important: if your Teletype has a green PCB, grid must be powered externally, do not connect it directly to teletype! See the power section of our grid docs for external powering suggestions. Black PCB units are the only version capable of providing power to grid.). You can light up individual LEDs, draw shapes and create controls (such as buttons and faders) that can be used to trigger and control scripts. You can take advantage of grid operators even without an actual grid by using the built in Grid Visualizer.
All ops that initialize controls use the same list of parameters: id, coordinates, width, height, type, level, script. When creating multiple controls there are two extra parameters: the number of columns and the number of rows. Controls are created in the current group (set with G.GRP). To specify a different group use the group versions of the 4 above ops - G.GBT, G.GFD, G.GBX, G.GFX and specify the desired group as the first parameter.
Generic I2C ops allow querying and sending commands to any I2C enabled devices connected to teletype. Before you can send or query you need to set the I2C address of the device using II.A (you might want to place that in your INIT script so that the address is set when you load a scene).
If you do find yourself needing a variable, particularly one that is used to continue a calculation on another line, consider using the variable I. Unlike the other variables, I is overwritten whenever L is used, and as such, is implicitly transient in nature. One should never need to worry about modifying the value of I and causing another script to malfunction, as no script should ever assume the value of I.
You can simply use grid as an LED display to visualize your scene. Or make it into an earthsea style keyboard. You can create sequencers, or control surfaces to control other sequencers. The grid operators simplify building very complex interfaces, while something simple like a bank of faders can be done with just two lines of scripts.
Grid integration consists of 3 main features: grid operators, Grid Visualizer, and Grid Control mode. Grid operators allow you to draw on grid or create grid controls, such as buttons and faders, that can trigger scripts when pressed. As with any other operators you can execute them in Live screen or use them in any of your scripts.
The following code will create a pulse type button on a Parameter Page called 'Controls' with a scripting name of 'Startsearch' and the label 'Click to Start Search'. The following code can be entered in a Text DAT in the same Network as a Base COMP named base1 or it can also be entered in the Textport if base1 is created at the root (/) level:
The following code will create a float slider type parameter on a Parameter Page called 'Car Controls' with a label of 'Speed of Car' and a scripting name 'Speed'. It will have a slider minimum value of -2 and a maximum value of 2. The parameter will be clamped at a minimum of -10 and a maximum of 10 preventing the entry of lower and higher values. (These values are initially 0 and 1.)
Accessing the value of sliders is done by calling the parameter by its scripting name. In the example below two sliders are defined, and their values are accessed on every cook by adding the print() functions to the cook() callback:
All the attributes of the parameters are editable after the fact by accesing the Par Class. For example, the script below changes the labels of the two float parameter sliders to 'Float Slider 1' and 'Float Slider 2':
A set of commands located in a Text DAT that are triggered to run under certain conditions. There are two scripting languages in TouchDesigner: Python and the original Tscript. Scripts and single-line commands can also be run in the Textport.
This section covers some of the most common issues observed with the design and implementation of EEM scripts. For additional information on EEM best practices, see the EEM Best Practices document referenced under the References section.
If your device uses AAA, you must ensure that the EEM scripts configured on the device are either configured with an AAA user able to run the commands in the script, or that authorization bypass is configured with the command authorization bypass in the script definition.
By default, EEM scripts can run for a maximum of 20 seconds. If you design a script that takes longer to run, or has to wait between command execution, specify a maxrun value on the applet event trigger to alter the default execution timer.
It is also important to consider how often the event that triggers your EEM script can run. If you trigger a script from a condition that occurs rapidly in a short amount of time (for example, syslog trigger for MAC flaps), it is important to include a rate-limit condition on your EEM script to prevent an excessive number of executions in parallel and prevent exhaustion of device resources.
Due to the padding here, the numbered statements evaluate in the expected order. The increment of 10 between each label allows for additional statements to be inserted into the EEM script later where needed, without the need to renumber all subsequent statements. 041b061a72