Advanced user guide · build 2026-10-30 (web) · generated 2026-10-30 13:33

Enzyme User Guide

The full reference: every workspace, setting and behaviour, the edge cases, and every OSC address. It assumes you have run a media server or a playback system before. Enzyme Essentials, in the same docs folder, is the short version: read it first, and come here for the detail.

1

Starting up

You receive a folder with Enzyme.app, Enzyme Shell.app, a demo-media folder and a demo-generators folder. Keep them together; the app looks beside itself for the folders. Enzyme.app is the engine and, on a normal day, everything you need. Enzyme Shell.app is the shell alone, for a laptop that controls an engine on another machine.

  1. The first time only, macOS asks because the build is not notarised. On macOS 15 or later, open Enzyme.app; when macOS says it cannot be opened, go to System Settings › Privacy & Security and press Open Anyway beside it. On earlier macOS, right-click Enzyme.app, choose Open, then Open again. After that, double-click as usual.
  2. The windows appear: the shell, where you work, and a region window for each screen the show sends to, which is the picture that goes to that screen (the demo has two). If you only see a picture, press Shift-Option-U on it and the shell comes back.
  3. The demo show loads with a looping clip and a bars pattern. It is there so you can see something move before you add your own material.
Closing the shell does not stop the picture. Enzyme asks whether you want the engine to keep running. If you say yes, the outputs stay up and you can open the shell again later.

The shell on another machine

The shell and the engine talk over the network, so the shell can run on a laptop while the engine drives the screens. On the engine machine, under Machine › This machine, set Shells from to Network, and turn off Shell at launch if that machine should show nothing but its outputs; both take effect when the engine is next started. On the laptop, open Enzyme Shell.app: it connects to the engine it last used, and shows an address box when it cannot, where you type the engine's address and port once. The first row of Machine › This machine says which machine this shell is on and which engine it reaches. Engine name there is what the shells call this engine on the band and in lists (empty, the machine's own name), saved at once; the band's on … chip opens the Recent engines this shell has used, to turn to another in one click.

Engines found on the network. An engine with Shells from on Network announces itself on the show network (DNS-SD over multicast DNS, the way Bonjour printers do), and a shell lists the engines it hears: the band's on … chip lists them under On the network, above the engines used lately and the address box, and the address box on the connect screen has the same list under it. Each shows its name and address, whether it leads or follows in a pair, and whether it asks for a control key; hold the pointer over one for its build and its show. One of another build that this shell could not talk to is greyed, and says why. An engine set to This machine is never announced, and one that is shut down leaves the lists at once (one that crashed, within about two minutes). The Found… buttons beside Backup at and Leader at under Machine pick from the same list. Finding is a convenience, not the way in: multicast does not cross a router or another VLAN, some show networks block it, and a switch that snoops IGMP with no querier on the network stops passing it after a few minutes (the Network health list under Machine warns of that one). When an engine is not listed, type its address: that always works.

The control key. With Shells from on Network, anything on the show network that reaches the engine's address can control it: open and save shows, take layers, shut it down. A Control key, under Machine › This machine, closes that: type a key and press Enter, and from then on a shell or a tool on another machine must give it before it is let in; one without it is told so and closed, and hears nothing of the show. The key is proved, not sent: the engine asks a new question on each connection and the answer shows it was known. A shell on the engine's own machine is never asked (anything there could read the key from the machine's settings), and that is where a key is set the first time, or cleared when it is forgotten; a shell on another machine that got in with the key can change or clear it too. A shell remembers the key for each engine: when an engine asks, the connect screen has a Control key field, and the band's engine chip has one for the engine in use. Scripts take the key in the environment variable ENZYME_KEY. A backup engine offers its leader its own key, so give the pair the same one. Connections already open when the key is set stay open. The key is not encryption: what passes after it is plain, and it does not cover OSC, Art-Net or sACN, which anything on the network can still send. Keep the show network apart from any other.

Builds. A shell, a backup or a tool must be the same build of Enzyme as the engine, near enough: one that speaks another version of the protocol is refused, and the connect screen says it is a different build. A backup refused by its leader this way, or for its key, stays following and never goes live beside it; Machine says why.

A shell on another machine is sent fewer pictures a second than one beside the engine, so a slow link is never a problem for the show; Preview rate under Machine › This machine changes it. Add folder, Open, Save as… and the other file buttons open a browser of the engine's own disk, with Home, each volume and Root to jump to, since a path on the laptop would mean nothing to the engine. Saving there takes a name a Mac and a Windows PC would both accept, and asks before it replaces a show already there.

The shell's look and language

Under Machine › This machine, Skin chooses Studio, the shell's own dark grey; Console, black with hairlines and an amber timecode for a dark room; or Contrast, black with white text and brighter edges for a bright room or a tired eye; a box beside it draws Live mode in Console whatever the skin. All three show the same things in the same places. Help text is Reduced unless you choose Full: Reduced leaves out the lines that explain how a panel works, for an operator who knows Enzyme, while what is there, what is wrong and what an empty panel needs first are still shown, and every hover still says what a control does. Full puts the explanations back on the panels. The screenshots in this guide show Reduced. Saved for this shell. Values as chooses how a layer's opacity, colour, mask, key and blur read and are typed on the strips and in the clip inspector: Natural is what each means (brightness −100 to +100%, contrast and the colour gains 0 to 200%, the rest as a percent), Percent is the desk fader's place, and DMX 8-bit and DMX 16-bit are the number a desk sends on the layer's channel, so a value read off a strip can be typed straight into a cue. The value itself is the same whichever you pick, and each shell keeps its own choice. Language is beside it: English is built in, and a translation is a file named by its language tag (ar.ftl, de.ftl) in an i18n folder in this machine's Enzyme support folder, made by copying and translating the i18n/en.ftl that ships with the build. Anything not translated stays English, and numbers and timecode stay in Western digits in every language.

2

What is on the screen

Above everything is a menu bar: File, Edit, Show, Window and Help, drawn inside Enzyme's own window rather than at the top of the Mac's screen, with each item's key written beside it. Everything in it is also a key or a button somewhere in the shell, so the menu is the place to look when you have forgotten one. Help › About Enzyme shows the version, your licence and the third-party notices.

The strip under it never changes. From the left: whether you are in Edit or Live mode, the show's name (a dot after it means unsaved changes), the timecode, what the transport is doing, the current and next cue, whether a lighting desk is connected, and warnings. A number in red up here is worth a look; section 12 says what each one means. When the engine refuses an edit, its reason appears in this strip in amber for a few seconds and then goes; nothing pops up over your work.

Anything with nothing in it yet says what to do first, in one dim line, with the button beside it: a timeline with no cues offers + Cue at playhead, a bank with no tiles offers Rescan, a show with no banks points at Show. Read that line before looking for a menu.

Under it are nine tabs, the workspaces, in the order they are used most, on Cmd-1 to Cmd-9 (Ctrl on Windows, where Option, in the keys below, is Alt). A digit on its own is only a digit, so typing a number never changes the tab:

KeyWorkspaceWhat you do there
Cmd-1TimelineBuild the cue list: place clips, add cues, decide what happens at each one.
Cmd-2LayersPlay clips by hand and see what every layer is doing right now.
Cmd-3MediaSee your clips as numbered tiles, bank by bank.
Cmd-4MappingsEach raster's size and place on the canvas, and where layers land on it. The rasters are listed down the left.
Cmd-5VideoWhere each raster's regions are sent (a display, NDI, Syphon, or any combination) and where inputs come from (cameras, capture boxes, NDI sources, Syphon servers, web pages).
Cmd-6PixelsLED fixtures driven over DMX from a region of a raster: where each sits, its colour profile and the universes it goes out on.
Cmd-7ControlLighting desk patch, timecode in and out, OSC, and the outboard devices a cue can switch.
Cmd-8ShowSave and open shows, name and rate, what happens at start, content and generator folders and their families, the self-test and the change log.
Cmd-9MachineThis shell and this engine: where it listens, who may connect, bind and ports, skin, keys, language, licence, log and diagnostics.

Most days you will live in Layers and Timeline. Mappings, Video and Show are for the get-in; Control is for whoever brings the lighting desk, and Machine is the box itself.

Right-click a tab for that tab's shortcuts without going to it: add a cue at the playhead or clear the timeline while you are patching, open the DMX monitor or add a layer while you are on the timeline, re-lay the patch from anywhere. The list is short for now and grows as the tabs do. Edits are greyed out in Live mode.

3

Who is in charge of each layer

The picture is made of layers stacked on top of each other, like sheets of acetate. The one idea to hold on to: every layer has exactly one owner at a time.

Timeline: the cue list drives it DMX: the lighting desk drives it Manual: you drive it, by hand

Whoever owns a layer sets everything about it: which clip, how bright, where it sits. Nobody else can nudge it. That is deliberate. It means a fader on the desk can never fight a cue, and you can always tell why the picture looks the way it does by reading the owner badge at the top of each strip in Layers.

Owners change in three ways: you click an owner button at the foot of a strip, a cue in the timeline hands a layer over, or the lighting desk asks for it on its own channel. The strip always shows the other owners' values greyed out, so you can see what would happen if you handed to the timeline or the desk.

Taking a layer by hand changes nothing on screen. However the layer gets to Manual (its button, a cue, the desk, OSC), it keeps exactly what it was showing: the same clip at the same frame, the same opacity, place, size, colour and mapping, with a clip's keyframes and fade held where they stood. Its manual controls start from there, so you carry on from the show's picture rather than from wherever the manual controls were left. A clip that was playing plays on (looping if it looped); one whose timeline was stopped or holding waits, paused, on its frame. Because nothing changes, Live mode does not ask first.

The order of the layers

The layers are a stack. Layer 1 is at the back and each one after it draws in front, so the higher the number the nearer the front. The Timeline shows the stack as an editor does: the top row is the layer in front and the bottom row is the back. The strips in Layers run in number order from the left, so the last strip is the one in front.

  1. To reorder, drag a row by its name in the Timeline. A blue line shows where it will drop. Up is towards the front. Or right-click the row and choose Move row up or Move row down. Layers follows at once.
  2. Reordering changes what is in front, so it changes the picture. It is one undo, and it is refused in Live mode like any edit.
  3. Two things follow the order and one does not. Layer numbers in OSC (/layer/2) count places in the stack, so they move with it; a layer named in an address (/layer/imag) stays with the layer of that name. The lighting desk patch does not: a desk fixture goes on driving the layer it drove. When you want the desk's fixtures in the new order, press Re-lay patch under Control, which is a separate step on purpose.
  4. A layer's name follows its place while it is the default: moved to third, "Layer 2" becomes "Layer 3", and the layers it passed are renamed to match. A name you type stays with the layer wherever it goes (right-click the row in the Timeline, or double-click the name on its strip). The same goes for timelines (their place among the tabs), sections (their place in time, so splitting one renames those after it), cues (their number, so Renumber turns "Cue 3" into "Cue 5"), rasters (their place), regions (their bank 0 tile, which stays when they are restacked) and manual recalls made with New recall… (their bank and tile). A recall stored with no name is named after its layers, and a Take cue after the layers it takes, and both follow those layers' names. Clear a name, or type it as the default, to give it back to its place. Any name that reads as a default (Layer 4, Cue 7) is taken for one wherever it is, so a show saved with its layers' default names out of step opens with each named for its place. A raster or region sent out as NDI, Syphon, Spout or a pixel map keeps its name, so whatever receives it does not lose it, and the log says so. One Undo takes back a move and the names that followed it.

Showing only the layers you are working on

The Timeline and Layers each have a menu in their header, Rows and Strips, with a tick for every layer, and the Live screen has the same menu, Filter, beside its Layers tab. Untick one and it is not drawn there. The three keep separate choices, so the Timeline can show only the layers the cue list drives while Layers shows only the ones the desk or you drive. Only timeline layers, Only DMX and manual layers, Only DMX layers and Only manual layers set that up in one click, by who owns each layer at that moment.

  1. Hiding is a view. A hidden layer plays on and its clips are still moved by edits that move everything. Nothing is sent to the engine and nothing is saved in the show: each shell remembers its own choice for each show.
  2. The menu says how many are hidden. It turns amber when a hidden layer that belongs in that view is on screen: for the Timeline, a layer the cue list is driving; for Layers, one the desk or you are driving; on the Live screen, any hidden layer on screen. That happens when a cue hands a layer to a different owner after you chose what to hide, and a click on the menu brings it back.
  3. In the Timeline, right-click a row for Owner (hand the layer to a timeline, the desk or you, as the strip's buttons do), Rename…, Hide this row and Tall row: twice the height, with each clip's picture at its left and room for its file name, in this shell only (All rows tall and All rows short in the Rows menu do every row). The Rows menu's Clip labels chooses what every clip's label reads, Name, File or Name and file; it is saved with the show, so every shell shows the same, and a clip's hover always gives both. A layer's name can also be changed by double-clicking it on its strip in Layers. Show all in either menu brings everything back.
  4. Groups. Right-click a row and choose New group from here: a header appears above it, and the group runs from that row down to the next header. Click the header to fold the group away to its header line, or to open it again; right-click it to rename or remove it. Like hiding, it is a view kept in this shell for this show: the layers play on, and moving rows works between the ones on screen.
  5. The Timeline's Rows menu also has Add layer: a new layer owned by that timeline from the start, in front of the others (the top row), and patched for the desk like any new layer. One undo takes it away.
4

Getting your clips in

Enzyme plays these kinds of file, in .mov, .mp4 or .m4v:

  • HAP (HAP, HAP Alpha, HAP Q, HAP Q Alpha, HAP R) is the performance codec. Every frame stands on its own, so scrubbing, reversing, retriggering, speed changes and timecode lock all cost the same as playing forward, and a 4K clip is as easy as HD. Ask for HAP for anything that will be driven hard.
  • H.264 is the convenience codec: the file the editor already has, decoded by the Mac's own hardware. It plays forward, backward, at any speed and scrubs, with the decoder working harder in reverse. At HD it is smooth both ways whatever the file's keyframe spacing; at 4K, playing backwards faster than 1× on a file with keyframes ten seconds apart drops frames. If a 4K H.264 clip must run backwards, ask for a keyframe every second (-g 30 in ffmpeg or Shutter Encoder's GOP setting) or for HAP.
  • HEVC (H.265) plays the same way where the machine decodes it, which every recent Mac does.

DXV and NotchLC are not played. To convert to HAP for free: Shutter Encoder (Mac and Windows), AVF Batch Exporter (Mac), or Adobe's HAP exporter in Media Encoder; Jokyo HAP Encoder and AfterCodecs are the paid ones. ffmpeg does it with -c:v hap -format hap_q. Resolume Alley converts to DXV, not to HAP.

Still pictures are tiles too: PNG, JPEG, TIFF, TGA, BMP, GIF, WebP, EXR, HDR and SVG, on the Mac and on Windows alike. A still has no length of its own: it shows for as long as its clip, and a new clip of it takes the default length. Transparency in a PNG, TIFF, TGA, WebP or SVG shows the layers beneath. A 16-bit TIFF or PNG keeps its depth, and EXR and HDR keep what is brighter than white. An SVG is drawn sharp: one smaller than 1920 pixels on its longer side is drawn up to that, a larger one at its own size, its text in the machine's fonts. A GIF or WebP that moves shows its first frame. A picture larger than 16384 pixels a side is refused, and HEIC (iPhone photos), AVIF and Photoshop files are not read: export them as JPEG, PNG or TIFF.

Clips live in folders on your drive, and Enzyme reads them where they are. It does not copy or move anything.

  1. In a project made with New project the content folder is there already: its media folder. Otherwise go to Show (Cmd-8) and press Add folder… under Content folders, and pick the folder that holds your clips. A show can have several; they are searched in their order and share one set of bank and tile numbers. The last folder added is where a new show on this machine starts.
  2. Each subfolder becomes a bank, and each file inside it becomes a tile. Go to Media (Cmd-3) to see them, with a picture of each clip.
  3. To choose the numbers yourself, start the name with three digits, 001 to 999: a folder called 004 Song A is bank 4, a file called 012 Opening.mov is tile 12, and 310 Encore is bank 310, so a show can be organised by hundreds. The digits, and a dash after them, are not part of the name: 004 - Song A is called Song A. Anything without a number is placed automatically from 1000 upwards, in the order you would read the names (clip 2 before clip 10, capitals ignored), and keeps that number for good. Media shows a bank's tiles a hundred to a page, ten across, 1–100 to 901–999, then Automatic for 1000 and up; in a narrow window the tiles stop shrinking and the grid scrolls sideways. A show saved before 7 October 2026 had its automatic numbers from 256: they move up to 1000 and up when it opens (256 becomes 1000), along with the clips, recalls and pins that use them; programming on a desk, in OSC or MIDI that dials one needs changing by hand.
  4. Making and naming banks. Remove bank…, beside a bank's name above its tiles, removes a media bank with its tiles, its live inputs going to those without a tile, after asking; it is greyed, naming the tiles, while a clip, a manual recall or a pin uses one, and a rescan brings back any whose files are still in a content folder. A generator bank has the same, refused while a clip uses one of its tiles. + Bank, under Rescan in Media, takes a number (the lowest free one to start with) and a name, and makes the bank with its folder on disk, 012 Name in the first content folder, so files you put there land in it. A bank's Name field, above its tiles, renames the bank and its folder on disk; a numbered folder keeps its number. Type the name and press Enter (Escape or a click elsewhere keeps the old one), and Enzyme asks first, since this is a change on disk. Enzyme closes that bank's clips, renames the folder and opens them again; if a folder cannot be renamed, nothing is. The rename is not an undo step (Undo never brings back the old folder name): rename again to go back. Both are greyed in Live mode.
  5. An unnumbered folder into a numbered bank. A folder without a number arrives as an automatic bank, 1000 or above, out of a desk's reach. Above its tiles, Put the folder … in bank takes a bank and a first tile: Move to bank puts its tiles there (a numbered file keeps its number where that is free, the rest follow from the first tile) and the show remembers it, so files added to the folder later land there too, carrying on after the last. Clips and recalls that use its tiles move with them. The folder on disk is not touched. The bank it went to says New files in the folder … land here from tile …. The button is greyed, saying how many, when the tiles would not all fit by 999.
  6. New versions of a file. End a name with a version number, 012 Opening_v02.mov beside 012 Opening_v01.mov (or Opening v2.mov beside Opening.mov), and the next scan adds it to the same tile as a new version rather than giving it a number of its own. Names match ignoring capitals, with underscores, dashes and spaces alike (Big Loop.mov and Big_Loop_v2.mov are one tile), and a tile you have renamed still gains versions of the file it came from. It does not go live by itself: select the tile in Media, and under Versions the live one is named, with a list of them all beside Take live, the newest picked to start with. A tile that arrives with several versions at once is named without the number (Opening, not Opening_v01), held by the file with no number or else the lowest, and starts on the highest. A version whose file is no longer in any content folder reads not found in red in the list and cannot be taken live. Remove version takes the picked one off the list (never the live one: take another live first), and the Inbox offers Forget for every version whose file is gone, as one undo step. Nothing on disk is touched, and nothing is judged gone while a content folder itself is not found, so an unplugged drive never empties a tile. Rescan to check again after deleting or restoring files.
  7. The Inbox. Under the banks in Media, the Inbox lists what a scan would not decide for you. A file whose number another tile already has offers Add as version of that tile, which does not go live, and Make room, which moves that tile, with the clips and recalls that use it, to the next free number in its bank (the button says where) and gives the new file its number, as one undo step; it is orange when a desk uses that number. Otherwise rename the file. A new file with the same content as a clip the show has lost (moved or renamed on disk) is held back rather than given a tile: Relink points the lost clip at it, keeping its number, cues and versions, and Add as new tile gives it a tile of its own. A file renamed but keeping its number (005 Intro.mov to 005 Intro final.mov) is offered Relink too, beside Add as version. While the file is still in its tile's bank folder, two more buttons may show. Relink and rename the file on disk to… asks first, then renames the file on the engine's disk so its name starts with the tile's number (Opening.mov becomes 005 Opening.mov; a version number stays), then relinks it; it never replaces a file already there, and if the rename cannot be done (the name taken, a read-only drive, a file open elsewhere on Windows) it relinks under the old name and says why. Undo takes back the relink but not the rename: the file keeps its new name. Relink and move to shows when the new name asks for another free number in the same bank (005 Intro renamed 007 Intro): the tile moves there as it is relinked. It is orange, with a tooltip, when the desk has dialled the old number this session or it is pinned, as cues calling it would then find something else. Pin for the desk, on a tile's menu, marks it as one a desk cue depends on: it carries a P, and moves to it are warned about; Unpin takes that back. Automatic tiles (1000 and up) have no number to rename to. Every Inbox button is greyed in Live mode. A tile you Clear comes back on the next Rescan while its file is still there, at the number its name gives, with its versions. On a Mac or Windows PC a file renamed only in capitals or accents is the same file, as the drive treats it.

Swapping a file everywhere it is used. Select a tile in Media and the inspector's Where it is used counts the clips that show it on this timeline and on all of them, and the manual recalls that put it on a layer. Under Replace with…, Timelines chooses This one, named on the button (the timeline the Timeline tab shows), or All; Only on limits it to one layer (in the recalls too), In section to clips that start in one section of this timeline, and the two timecode fields to clips starting from one time and before another. Manual recalls takes the recalls as well, all of them or those in a range of banks and tiles (a blank end is open); the count says what is within the limits. Pick a Bank and then a Tile in it (the bank starts as the tile's own), then Replace: those clips show it instead, keeping their place, fades, settings, keyframes, generator and effect, and in those recalls only the stored tile changes, all as one undo step. Only what is stored changes: a layer playing the tile now keeps it, and a desk cue or OSC that dials it by number dials the same number. Clips that follow a master are left alone: they show whatever their master shows.

Several tiles at once. In Media and Generators, Cmd-click adds a tile to what is picked or takes it out, Shift-click picks every filled tile from the selected one to the one you click, and Cmd-A picks every tile of the bank in view; Esc drops the group and keeps the selected tile. Picked tiles are edged in blue, the selected one more strongly, and the inspector's Tile section acts on all of them: Pin N (or Unpin N when all are pinned), Clear N tiles…, and Move N…, by a typed address or by clicking the tile where the first of them goes. A group moves whole, keeping its gaps: 1/1, 1/2 and 1/5 sent to 3/10 land on 3/10, 3/11 and 3/14, and a run can shift along onto its own slots. If any tile would land on a tile outside the group, in a bank that is not there or past tile 999, nothing moves and the band says why. As with one tile, timeline clips follow their tiles, and the confirmation warns when the desk has used one of the addresses.

A tile's own controls. The inspector's Name renames a tile, media or generator; the file on disk keeps its name. Show in Finder opens the file's folder with it picked out, when the shell is on the engine's own machine. Send to layer, in the inspector or on a right-click of the tile, puts it on a layer's manual controls: a layer the timeline or the desk is driving is taken by hand first, keeping its opacity, place and every other value, and the tile then replaces what it was showing (Live mode asks first, since the picture changes). Move to takes a bank and tile typed as 4/12 (a bank that is not there yet is offered: name it and press Make bank … and move…, which asks first as every move does and makes it with its folder on disk, as + Bank does); or leave it blank, press Move… and click the empty tile it goes to, in any bank or on any page (Esc cancels). The clips and manual recalls that use a tile move with it, so they play the same file after a move, and one Undo takes the move back; a desk or OSC cue dials by number and does not. Rescan sits above the list of banks, and past a hundred banks the list shows a page at a time, as the tiles do. A generator tile has the same Move to and Clear tile… as a media tile, its clips, recalls and transitions moving with it, and shows its values in each slot's units; a tile made from an ISF file starts on the DEFAULT values its file gives.

Live inputs: cameras, SDI, NDI, Syphon and web pages

Anything your Mac sees as a camera can be a layer: a USB capture box with an SDI or HDMI input, a webcam, or a virtual camera from another program. Under Video (Cmd-5), on the Inputs side, press + Camera and pick the device, or + SDI input and pick a Blackmagic device's input (a DeckLink card or an UltraStudio box; the format follows the signal), or + NDI source and pick one of the sources Video can see on the network, or + Syphon source and pick another application's Syphon server on this Mac (Resolume, TouchDesigner, MadMapper; the frames come straight from the GPU), or + Web page and type an address: the system's web view renders the page at the size and rate you set, so a scoreboard, a dashboard or an HTML lower third becomes a layer. Reload beside it loads the page again while a layer shows it. It appears as a tile in an Inputs bank in Media, and you play it like any clip: pick the tile in a strip or put it on the timeline. The device switches on while a layer shows it, and Video and the tile say what it is sending. The first time, macOS asks whether Enzyme may use the camera; say yes, or every input reads "access denied". SDI needs Blackmagic's Desktop Video driver on the engine's machine (on a Mac, allow its system extension, then start the engine again); Video's Inputs side says which version it found, or that it is missing. An unplugged device or a lost signal is said on the tile and tried again. An interlaced signal, such as 1080i, is deinterlaced: the first field of each frame is kept and the lines between are made from it, so nothing that moves is combed, for half the vertical detail. Two identical boxes keep their inputs when they are plugged in again the other way round.

Media
Media. Banks down the left; bank 1, Demo, its tiles numbered and pictured, a hundred to a page, with Remove bank… beside its name. The picked tile on the right: its file, size, rate, sound and timecode, its versions, where it is used, and Replace with…. The numbers matter because a lighting desk dials clips by bank and tile.
Adding a folder never renumbers what is already there, so a cue list or a desk programmed against a number keeps working. Removing a folder asks first and tells you how many tiles are only found in it; they stay, missing, with their addresses and names, until you remove them. Only a Rescan you press takes tiles away, and only automatic ones (1000 and up) whose files are all gone from a bank folder that is still there, when no clip or recall uses them and they are not pinned, with any bank that leaves empty; the band and the Inbox say how many, and Undo brings them back. Opening a show takes nothing away. A numbered tile, 1 to 999, which a desk may dial though no cue names it, is never taken by a scan, nor is a tile whose bank folder has gone (a sync not finished, a drive unplugged), and nothing goes while a content folder is not found: each stays, missing, until you remove it (Remove bank… does a whole bank). A file that is only a cloud drive's placeholder (Dropbox or iCloud, online only) is not opened; the Inbox says to make it available offline.
5

Playing a clip by hand

This is the fastest way to see something on screen, and how you check content on the day.

  1. Go to Layers (Cmd-2). Each column is a layer.
  2. At the foot of a strip, click Manual. The strip turns green and its controls wake up, holding exactly what the layer was showing: the same clip at the same frame, playing on, with the same values. Nothing on screen changes, so it never asks first, in Live mode or Edit.
  3. Under Media, pick the folder, then the file.
  4. Press Play. Loop plays it round and round. Pause freezes where it is; Stop goes back to the start; Skip to end goes to the last frame and holds it.
  5. Drag Opacity to fade it, Speed to slow it down or run it backwards (negative numbers play in reverse), and the position, scale and rotation boxes to place it.
  6. Under Colour, brightness, contrast and gamma, then the colour itself, which reads three ways: RGB (the red, green and blue gains, 1 normal, up to 2), HSI (hue in degrees, saturation, intensity, with a colour wheel under them: hue round it, red at the top and clockwise, saturation out from white at the middle; click or drag on it, and Larger opens a bigger one in a window of its own. What you type or pick stands, an intensity of nought keeping its hue and saturation) or XY (a CIE xy point, with a small chart of the Rec. 709 triangle to click or drag in, and an intensity). It is only how the row reads and sets the colour, remembered on this machine: what the layer keeps is always the gains, so a keyframe or a desk sees the same whichever form set it. The clip editor and a track's override read the same way.
  7. Clear, beside Copy and Paste, puts a manual layer back to its defaults with nothing on it and opacity at zero; Revert paste brings back what it had for a minute.

The top of every strip shows the layer's picture. Src, on its corner, shows its source as it plays, before its colour, geometry and effect, so a layer at opacity zero can be checked before it goes up. Out shows its Output instead: the layer's own finished picture, with its colour, geometry, key, mask and effect, on its content canvas when it has one, as bank 0's Layer Output tile has it. That is the layer before a mapping puts it into regions, not what a screen shows (the Monitor's Outputs view shows that). Each strip keeps its own choice, remembered by this shell for the show; Strip previews: all Source and all Output, in the Strips menu, set every strip at once. The pictures are made only for the strips on screen while Layers is open. Under the source's name are its own time as timecode and, for a file, the frame it is on and its frame rate.

Layers
Layers. A strip for each layer, its owner's badge at the top and the owner buttons at the foot. LED Screens 2 is in Manual, edged green, with its full set of controls; the others show, read-only, what the LED Screens Demo timeline sends them. Store recall, DMX monitor and Blackout are on the bar above.

Retrigger is for fader work. Choose Play or Loop on the "Retrigger at 0" row and the clip goes back to its start whenever opacity is at zero, then plays from the start the moment you bring it up. Fade down, fade up, and the clip starts fresh every time.

A clip that has played to its end stays on its last frame. Push speed negative and it runs back from there; push it positive from the start and it runs forwards. Speed is live at both ends, so a "reveal then undo" is one fader move.

TC on the same row locks the clip to the show's incoming timecode: type a start address, and the clip's in point lands on that timecode and runs with it, holding its first frame before the start and its last after the end. Speed is ignored. With no timecode coming in the picture holds and the strip says so.

In and Out, under the play rows, are the part of the clip the layer plays: Play runs from In and stops at Out, Loop goes round between them, and Stop goes back to In. Type each as a timecode; leave Out blank to play to the end of the clip, and clear In to start at the top. They are the same in and out points a desk sets on the layer's In point and Out point channels, a recall keeps them with everything else on the strip, and Capture manual state makes them the clip's in point and length. Position, under them, is a slider along the file that follows the picture: drag it to put the clip there, playing on from there if it plays and holding there if it is stopped or paused.

Several layers can play the same clip at once, each at its own point and speed.

Copying a layer's settings

Every strip has Copy and Paste menus under its mapping. Copy takes everything, or just one group: source, play, opacity and blend, geometry, colour, mask and key, generator values, or mapping. Paste puts the copied groups onto the strip's manual settings, and only those groups, so you can copy the colour from one layer onto three others without touching anything else. Paste goes only onto a layer you drive by hand: on a strip the timeline or the desk is driving it is greyed, and Cmd-V there says to take the layer by hand first (which keeps what it shows), since settings waiting on that layer would be replaced when it was taken. Cmd-C and Cmd-V do the same for the selected strip; on the Timeline, Cmd-V pastes copied clips, and Shift-Cmd-V pastes settings onto the selected clip. Copying from a layer the timeline or the desk is driving takes the look it is showing right now. The copy is plain text on the clipboard, so it works between two shells, between two machines, and into a note. If a paste was a mistake, Revert paste appears in the strip for a minute. The same menus are in the timeline's clip inspector, so a look can go from a strip onto a clip and back.

Manual recalls: a look stored to bring back

A recall keeps the manual layers' settings, every layer's owner, or both, at a bank and a tile, as media is numbered, and brings them back from the desk, OSC or the shell. Recalls are part of the show file; firing one changes nothing in it.

  1. Store. In Layers, Store recall opens a row under the header. Choose what to store: Manual layers (the settings of every layer set to Manual), Manual layers showing (only those above nought, so a layer faded out is left alone when it fires), One layer, or Ownership (every layer's owner and no settings). Set the Bank and Tile; the row says what the tile holds already. Then Store onto an empty tile, or Merge or Replace on a recorded one: a merge replaces the stored layers' entries and keeps the recall's other layers, and an ownership store merged in keeps its settings, so one tile can carry both. Undo takes back any of them. Storing changes the show, so it waits for Edit mode.
  2. Look and fire. Media has a third tab, Manual Recalls: banks on the left, the tiles, each with a picture of what firing it gives: the engine's own render of the recall fired, remade after each store and blind edit (with no undo step of its own), and the selected tile on the right with what it holds, its name, a Move to another bank and tile, Duplicate and Delete. Fire, or a double-click on a tile, fires it now; the dot marks the one fired last. A recall keeps each layer's settings but not the order of the layers, so once they are reordered its picture shows the old stacking: the tile then carries an orange ↕ and the inspector says so, and the blind editor's If fired now shows what it gives. A recall stored without a name is named after its layers ("Background, Logo"); the line along the bottom of a tile, L1 L3, is the places they have now.
  3. What firing does. The ownership first, if the recall holds it: each layer goes to its stored owner, and one taken to Manual keeps what it showed. Then each layer with settings that is Manual moves to them by the Transition stored with them: values that move smoothly (opacity, position, scale, rotation, crop, colour, mask, key, blur, the generator's and effect's values, audio level) glide over its time; play mode, speed, blend, key mode, LUT, sweeps and a tile picker's choice of tile change at once; a different file, generator, effect or mapping crossfades, the old picture going out in its own place. A Cut, or a time of nought, snaps. A recall never takes a layer to Manual by itself: a layer it holds settings for that is not Manual is left alone, and the band names it. An owner that cannot be taken (the desk, for a layer with no fixture patched) is left as it is, and the band says so. Setting a value by hand while the layer glides (a strip, the desk, OSC) sets that value; the others glide on from where they were.
  4. Edit blind. In the tile's inspector, Edit blind opens the recall in a violet editor with a strip for each layer it holds, the same controls as Layers. Changes go into the recall, on undo, and never to the screens. Add layer puts another layer in as it is live, Remove takes one out, and From live copies a Manual layer's settings off the screens. The ownership row changes or takes out single layers' owners. If fired now, under the bar, shows each raster as firing the recall now would leave it, drawn by the engine from the recall as it stands and never sent to the screens, so a change shows there as you make it. Fire sends it live; Done closes it, keeping the changes; Cancel puts the recall back as it was when the editor opened and closes it, as one more undo step, so Undo brings the changes back.
  5. From a cue. In a cue's editor, tick Recall and set the bank and tile: the cue fires that recall when it is reached or fired, as the desk would, and never again when the playhead is located back over it.
Manual Recalls
Manual Recalls. Bank 1, Looks: two snapshots of LED Screens 2. The picked recall's inspector says what it holds and the owner it sets, with Fire, Edit blind, Duplicate and Remove.
Edit blind
Edit blind. Recall 1/2 in the violet editor: If fired now shows each raster as firing it would leave them; the ownership row, then a strip for the layer it holds. Nothing here reaches the screens until Fire.

OSC script recalls. A recall can hold OSC messages instead of a stored look. On an empty tile, New recall… (in the inspector, or on a right-click of the tile) makes a blank recall; set its Type to OSC script and Edit script opens its rows. Each row is one message as Companion would send it, /layer/2/opacity 0 3 or by the layer's name, /layer/imag/opacity 0 3, with an optional note. Rows are checked as you type: a tick when the engine takes the message, the reason in red when it would not. Typing an address suggests the ones the show has. The arrows move a row, Copy puts a copy below it and × removes it; a row is kept when you leave it, and Undo takes a change back. Copy as text copies the script one message to a line, a note after #, and Paste text… adds lines copied from QLab, Companion or another script.

Firing a script runs its rows in order, at once, exactly as the same messages arriving over OSC would: a value fades by its layer's transition unless the row ends with snap or a number of seconds, and a row for a layer that is not Manual changes its manual settings but shows nothing (the band names those layers). A row can set an owner, move a transport, change a region's look or fire another recall; a recall fired by a script fires no other, and none fires itself. Rows name layers, timelines, rasters, regions and groups by their places as you type them, but each row follows its layer if the layers are reordered. A row whose layer has been removed is shown in red and skipped when the script fires. The OSC monitor lists a fired script's rows under recall and its bank and tile. Store, Merge and Replace never write over a script, and changing a recall's Type back keeps what the other type held. The desk, OSC, cues and the shell fire a script as they fire any recall.

Braces make one row run a message for several things: /layer/{1,4,5}/opacity 1 snap sets layers 1, 4 and 5, /layer/{1>6}/opacity 0 layers 1 to 6, and a list and ranges mix, {1>3,7}; a range can run down, {6>1}. The messages run in the order written, all at once when the script fires. Braces work for layers, timelines, rasters, regions and groups, and in any other number in an address, /layer/1/generator_{1>4} or /audio/bus/{1,2}/mute; where there are braces in two places, the first changes slowest. Braced layers, timelines, rasters, regions and groups follow a reorder as single ones do: the row then shows their new places, as a range where three or more are in a row and as a list otherwise. Regions in braces need one raster, and groups in braces one region. The editor checks every message a row makes and names the first the engine would not take. If one of the things in braces has been removed, the row is red; when the script fires the others still run and the band names the one that did not (line 3, item 2). Copy as text and Paste text keep the braces. Braces are for scripts only: OSC arriving over the network does not open them out.

Rows for other machines. A row can go somewhere other than this engine. Its To column, at the left of the row, picks This engine, one of the show's OSC destinations or one of its devices (both set up under Control). A row for a destination is sent there exactly as typed, the way a cue's OSC send is: /cue/{1>3}/go for a lighting desk or /cue/intro/start for QLab. It is that machine's message, not Enzyme's, so only its address is checked (it starts with /, and its braces are right) and nothing is suggested; braces open out as they do for the engine's rows, and numbers in it are the other machine's, so they never follow a reorder here. A row for a device picks one of the device's commands. A row whose destination or device has been removed from the show, or whose command has gone from its device, is red, and is skipped when the script fires. Firing runs every row in order in the same moment: the engine's rows as before, and the others sent as they come. The OSC monitor's Sent tab lists a destination's rows under recall and its bank and tile, and a message that could not go (the destination's name never found) is said on the band. A device's reply goes to the change log as a cue's does. In edit mode each such row has Send, to try it without firing the recall. Add from library…, under the rows, opens the same starter commands as a cue's Sends tab (Commands for other show equipment): a click adds a row to that family's destination, with the command's address and arguments to edit and its name as the row's note, and a family the show has no destination for offers one at 127.0.0.1 on its port. As text, a row for a destination or device starts with its name in brackets: [Desk] /cue/{1>3}/go, [Projector] Shutter close; Copy as text writes them so, and Paste text… takes them back, a name the show does not have leaving the row red until it is put right. With two engines, only the one that is live sends these rows, as with cues: a backup following its leader sends nothing.

From the desk, patch the show's Recall fixture (Control, + Recall fixture): five channels, the bank and the tile at 16 bits and a trigger at 8. The trigger fires the recall at the bank and tile when it reaches full having been at nought, so the bank and tile can be scrolled with the trigger held at full and nothing fires. Over OSC, /recall 3 12 fires bank 3 tile 12.

6

Putting the picture on a screen

Mapping in Enzyme is built from regions and rects (rectangles).

Regions are the outputs. Any region can be sent to a display, NDI or Syphon, or used as a source for a layer (bank 0). A region does not have to be sent anywhere: it can simply mark out an area, for rects to land in, for the regions stacked above it to take, or for LED fixtures to be mapped from. Regions belong to rasters, and rasters sit on canvases. A raster is a picture at a size and frame rate you choose, at a place on a canvas; a new one has one region, the whole of it, sent to a window.

A mapping draws a layer onto one of these: a canvas, a raster, each raster, or a content canvas of its own. That is the mapping's source, and every rect in it shares it. Layers, clips, desks and OSC pick mappings by number, never a canvas or a raster directly.

A rect takes part of that source, its Source Rect, and puts it in a region, all of it or part of it, its Destination Rect. One mapping can have many rects, into many regions.

Layers mix in the region. Everything landing in a region is drawn in layer order, layer 1 at the back. Say layer 1's mapping has rects into regions A and B, and layer 2, an overlay, has a mapping with a rect into region B only: region A shows layer 1 alone, and region B shows the overlay over layer 1. A region with nothing landing in it is black.

Regions stack. The regions of a raster are stacked, 1 at the bottom. Where they overlap, a region shows its own content over what the regions beneath it show. With region 3 sent to a display and region 4 to NDI, region 3 sends what is in regions 1 to 3, and region 4 sends that and its own content too. A region whose Background is Black shows only its own.

To get a layer to a region:

  1. Create a mapping and choose what it draws onto.
  2. Put the layer on the mapping: the mapping list on its strip, or Apply to.
  3. Add a rect with + Rect and pick its destination region.
  4. Size the Source Rect and the Destination Rect as you want. A new rect starts with the whole source in the whole region.

The steps below go through the Mappings tab in full.

  1. Go to Mappings (Cmd-4). On the left is the Maps column. At its top are + Canvas, + Raster, + Region (in the raster picked) and + Mapping; a new raster is called Raster and its number (the first not taken), a new region Region and the bank 0 tile it is given, and a raster goes on the canvas in view, right of the rasters there. Below them the column is split in two, each half scrolling on its own and the line between them dragged to give either more room: each canvas with the rasters on it and their regions under them (a region sent somewhere is marked ↗) above, the mappings below. A click picks; the inspector on the right and the canvas in the middle follow the pick. Cmd-click adds a thing to the pick or takes it away, and Shift-click picks a run, among things of one kind (canvases, rasters, regions, mappings, or the rects of one mapping, in its list); on the canvas Shift-click adds a rect or a region. With several picked the inspector lists them, and dragging any of them on the canvas moves them together, each staying in its own region or raster. Right-click anything, in the list or on the canvas, for its menu: Duplicate (a rect as Duplicate rect, a region in its Duplicate window, a mapping as New from this), Rename (its name in the inspector, ready to type), + Region on a raster, + Rect on a mapping, and Remove…, for everything picked when the thing is one of them, greyed with the reason where it cannot go (Default, the last raster or canvas, a canvas with rasters on it, a mapping in use or not the last). Several removed together take one confirm and one undo; Delete or Backspace does the same for picked rects or regions. Once something is removed the pick steps back to what held it: a rect's mapping, a region's raster, a raster's canvas.
  2. Pick a raster to set its size to match the screen or LED processor it feeds, for example 1920 by 1080 (with Lock aspect beside it on, a width typed brings the height with it at the raster's shape, and the other way round), the Canvas it sits on, and its place there, Canvas X Y. On the canvas a picked raster drags by its body, or any raster by its name strip (top right), snapping to the edges of the others. Its regions are listed under it; Remove raster… takes it away and its windows close, greyed, saying why, for the last one.
  3. Which display each region goes to is set under Video (Cmd-5): Window while you are setting up, or Full screen and the display by name for the show. A region's inspector says where it is Sent to, with Open Video beside it.
  4. The display is picked whatever the mode: Full screen fills it, Window opens the window on it, and None keeps it, so turning the region back to Window or Full screen goes to the display it had. A display that is not connected now (unplugged, switched off, or a show made on another machine) stays picked, greyed in the list with not connected and an orange ⚠ not connected beside it; it is never swapped or cleared for you. Until it is back a full-screen region stays in a window and a window stays where it is, and the list still offers the displays that are there, to pick one in its place.
  5. A show starts with one canvas, Canvas. Add another for a place with no geometric relation to the first, a floor beside a wall or a foyer beside the stage: a layer drawn onto it lands at its own origin, and a generator there is made at its size alone. Pick a canvas to rename it and see the rasters on it; Remove canvas is greyed, saying why, while a raster sits on it, and for the last one. Canvases are not tied to machines: one may span several machines, and a machine may have rasters on several.
  6. In the middle is the canvas in view, the picked thing's: its rasters at their places with their live pictures and their regions. The header names the pick, and with several canvases a list there shows another.
  7. Mapping 1, Default, draws onto each raster so every raster shows the whole picture once: a rect over each region where nothing beneath it already shows the layers (all of the lowest region, all of a region whose Background is Black, only the strips of a region over others that no region beneath covers, and none for one wholly over others, which shows them), each piece following its place so they line up. The core keeps it in step as rasters and regions come, go, move, restack or change Background, and it is greyed in the list. A show saved before 14 October 2026 gets this Default when it opens, and the open notice says so: its Default drew a layer twice where regions are stacked, so a fade looked stronger there. New from this makes a copy of any mapping to edit; New empty makes one drawing onto the canvas in view, with no rects yet. Remove… beside them is greyed, saying why, for Default, while any layer or clip uses the mapping, and for any but the last.
  8. Pick a mapping and its Draws onto chooses its content map, and Fit how the layer sits on it: Stretch fills it; Best fit, Fit width and Fit height keep the picture's shape and centre it; No scaling, a new mapping's, puts it one to one in the middle of the map. The layer's own position then moves it on the map, and its scale grows or shrinks it about its own centre, never towards a corner, so a picture across several screens moves and scales as one. A canvas or a raster is not a picture of its own: nothing its size is drawn, each rect's piece is worked out from where the layer sits, so a canvas can be as wide as you like and costs nothing. A content canvas is a real picture of the size you give (16,384 a side at most): the layer, with its effects and geometry in its pixels, is drawn onto it. Used by and Apply to are as before, and its rects are listed, each picking itself.
  9. With a mapping or one of its rects picked, the Source panel above the canvas shows the content map it draws onto, whatever kind: the source side, at the map's own shape, with the live picture of the layers on that mapping placed as the engine places them, and every rect's Source Rect on it, the picked one in orange with handles. Drag a Source Rect there, or its handles to size it, snapping as on the canvas to the map's edges and centre lines, the rasters and regions on it and the other rects' Source Rects (Snap turns that off; Shift or Lock aspect keeps its shape). It can be dragged past the map's edges, as typed values can: where it takes from no picture (past a content canvas's edge, or on a canvas or raster map past where any layer reaches) nothing is drawn, so the region's Background shows there, and snapping to the edges brings it back; a part that follows its destination is shown dashed: one whose position follows moves with its rect, and one whose size alone follows keeps the rect's size and still drags here. The canvas below is then the destination side: the regions, and each rect where it lands. For a mapping drawing onto each raster the panel shows the raster of the rect picked (each raster has the picture at its own shape). A canvas or raster map is not a picture of its own, so its picture here is drawn small for this panel alone, only while it is shown, and never on a backup or a node. Source in the canvas header shows or hides the panel; drag its lower edge to size it, and this shell remembers both.
  10. + Rect, beside a mapping's list of rects, asks which region and makes a rect there taking all of the mapping's content map into all of the region, stretched; it is greyed on Default, saying why. A rect can have a Name, at the top of its settings (Enter or a click away keeps it): it is then called by it on the canvas, in the Source panel, in the mapping's list of rects, in a region's Rects in it and on the Layers boxes, where it is otherwise "rect" and its number; Duplicate rect names the copy "copy" after it. Its settings then come in two parts. Source Rect: a new rect's is all of the map; tick Position as destination and its position is where its region sits on the content map, plus where the rect sits in the region; tick Size as destination and its size is the Destination Rect's own size in pixels, changing as the rect is resized. With both, a picture across several projectors lines up, blend overlap included, with nothing typed. What does not follow, its Pos or its Size, is set by hand, in the map's pixels or 0 to 1 (All of it takes the whole map), and untick either and it keeps the value it was showing. On a content canvas, which has no places for regions, the position is always set by hand, but the size can still be the destination's: a piece of the picture one to one, moved about by hand. Destination Rect: In, the region it lands in, any region of the show on any canvas (moved to another, it stays where it is on the canvas if that is inside the new region, fills the new region if it filled the old, and otherwise keeps its place, pulled and if need be shrunk inside the new one); Fit to all of its region or its Source Rect's size, a map pixel to a raster pixel; its Region X and Y, width and height; then Rotate, Picture (how the source sits in the destination, the same five choices as Fit), Flip, for a mirror or a rear-projection screen, and opacity.
  11. What a click on the canvas can pick depends on what is picked. With a mapping or one of its rects picked, only that mapping's rects are clickable: regions and rasters are drawn but a click on them does nothing, so working on a mapping never drops you out of it by accident. Leave it by picking a canvas, raster or region in the Maps list, or with Escape on the canvas (back to the canvas in view). With a canvas, raster or region picked, only regions and rasters are clickable, and rects are drawn but not. A click picks the smallest thing under it; click again on the same spot and it picks the next, out to the raster (with several under the pointer, hovering says how many). Right-click lists every rect of every mapping under the pointer; choosing one takes you into its mapping with it picked, and below the list are the actions for the thing under the pointer. A raster's name strip picks the raster on the first press and moves it on a drag once it is picked. Only the region picked alone has live keystone corners, grid points and mask points: other regions show theirs, inert, and a double-click on one picks that region (a double-click anywhere else frames the raster). The arrow keys nudge the last point dragged only while its region stays picked. A drag moves only what is picked already, so a stray press moves nothing: click a rect, then drag it. Drag its middle out of its own region and let go over another, lit as you drag, and it moves into that region where you let it go (inside its own region it stays there, whatever smaller regions are stacked over it); part of a rect hanging past its region is dimmed, as nothing is shown there. A picked rect shows its Source Rect dashed orange where its content map lies on this canvas, joined to its Destination Rect, which has a handle at each corner and in the middle of each edge: drag one to size it, snapping to the rasters' and regions' edges (Snap, on the canvas's inspector, turns that off); Shift, or Lock aspect under its width and height, keeps its shape. Lock aspect is one setting for the whole Mappings tab, shown beside the size of a rect, a region and a raster alike. Duplicate rect copies it beside or under itself in its region, or onto itself when the region has no room, and picks the copy. With more than one rect, Arrange all sets every Source Rect at once: Same picture in each gives each the whole content map; Each follows its destination lets one picture run on across them all.
  12. Layers in the canvas header draws where every layer is now, a dim box for each of its rects with its name and mapping; it is off unless you turn it on, and this shell remembers.
  13. A wide canvas, eight 4K rasters in a row say, is a thin strip when it all fits. The zoom slider in the canvas header, with − and +, goes from 1× to 64×; Cmd-scroll or a pinch zooms about the pointer; a plain scroll or the bars at the edges move about; Fit brings the whole canvas back, Frame with a raster's name (Fit raster when narrow) frames the selected raster, greyed until one is picked, and a double-click on a raster frames that one.
  14. On several machines each machine draws only the pieces landing in its own regions, from its own playback: no picture crosses the network between them. A content canvas is drawn whole on each machine that shows any of it, and a generator drawn onto a canvas is made at the canvas's size on each machine that shows any of it, so give a floor its own canvas rather than drawing it with the wall's.
Mappings
Mappings. The Maps column on the left: the canvas, its rasters and their regions (↗ marks a region sent somewhere), the mappings below. On the canvas, the LED screens raster with region 0/113, Main Screen, picked, with its handles; its inspector on the right: place and size, keystone and what it moves, soft edges, mask, background and stack, where it is sent, and the rects that land in it.
Full screen is one to one from the top left of the display, so a 1920×1080 raster on a 4K screen is not stretched. Press Escape on a full-screen window to get it back as a window.
A show saved before content maps (14 October 2026) opens converted, and the notice says how, mapping by mapping: a mapping whose rects each showed the whole picture over a raster draws onto that raster (or each raster); one whose rects took their source from where they landed draws onto the canvas, at No scaling (a picture smaller than the canvas, which used to sit at its top left, is now in the middle); one that cropped the layer's own picture draws onto a content canvas the size of that picture; a content canvas is kept. A rect on the canvas becomes one rect in each region it covered, taking the matching part, so each region shows what it showed. A layer's position and scale now move it on its content map rather than in each rect, which changes a picture only where a layer was moved inside rects that cut it.

Sending to NDI or Syphon

Under Video, in Rasters, tick Send as NDI on a region and it appears to any NDI receiver on the network as "Enzyme" and the raster's and region's name, at full or half size and every frame or every other; the row shows how many receivers have it. NDI needs its runtime on the engine's machine, and Video's first line says which version it found or where to get it. To keep NDI on the show network's wired card and off WiFi, choose the card under Machine › NDI network card: sending, receiving and finding sources all use that card alone, any discovery servers and groups set in NDI Access Manager still apply, and the choice takes effect from the engine's next start. To hand a region to another application on the same machine with no network and no copy, tick Share as Syphon, instead or as well: it appears under the same name, and the row says whether anything is taking it.

Video
Video. Each raster's regions on the left, each with its Display (Window, Full screen or None, and which display), its Stage, Send as NDI and Share as Syphon, and Close all windows at the top; the inputs on the right, + Camera, + NDI source, + Syphon source, + SDI input and + Web page, each saying what it can see (the NDI sources found on the network are blanked here).

Projectors: regions, keystone, soft edges and masks

  1. Under Regions, a new raster has one region, the whole raster, named after it and sent to a window; it can be resized, moved or removed like any other. Add regions for the areas inside the raster that matter: each LED panel, say, or the part a projector owns. Those are drawn dashed on the canvas, and rects land in them. Click a region on the canvas, or in the Maps list, to pick it: it turns solid with handles and its inspector shows all of it, and you can drag it, or its handles to size it, snapping to the raster's edges and the other regions. Shift, or Lock aspect beside its W and H, keeps its shape as for a rect: a corner sizes it from the opposite corner, an edge about the middle of the other way, staying inside the raster (where the room runs out, both sides stop together). With Lock aspect on, a W or H typed brings the other with it.
  2. To make more regions like one you have, right-click it, on the canvas, in the Maps list or in its raster's Regions, and choose Duplicate…. A small window offers Place: In place (the same place and size, the default), or Above, Below, Left or Right, the first copy touching the region on that side in the raster's pixels and each next one touching the last, so Right with 3 Copies makes a row of three to its right. A copy that would fall past the raster's edge is not made (regions are never shrunk to fit): the window says how many fit, and greys Duplicate, saying why, when none do; a raster takes 64 regions at most. The copies stack directly above the region, the first just above it, and are named after it, "copy 1", "copy 2", on from the numbers already taken. Each keeps the region's keystone, soft edges, mask, panels, background and look, and gets its own bank 0 tile while there is one of the nine free; it is sent nowhere, and the region's pixel map, its desk fixture and the rects landing in it stay with the region. A Duplicate is one undo. The window stays open, moving on to the last copy made, so pressing Duplicate again makes more; this shell remembers the place and count you last used.
  3. Regions stack, and the list runs as the stack is seen, the top region first and the bottom last. Stack ▲ and ▼ move one up or down, or drag a region's row in the Maps list up or down among its raster's regions, a blue line showing where it will go (a region stays in its raster, and keeps its bank 0 tile wherever it goes); one higher up takes the picture beneath it, keystoned, blended and masked as the regions below left it, so the region sent to a projector goes above the quadrants it takes. Its Background is Beneath (that picture) or Black, for a door, a gap or a panel that should stay dark. Over a Beneath region's part where a region beneath already shows a layer, a rect of the same layer draws it a second time over it: invisible at full opacity, but a fade or an alpha shows stronger there, or as a ghost. The region's and the rect's inspectors say when one of your mappings does that ("Layer 2 is drawn twice here"); set the region's Background to Black, or remove one of the rects.
  4. Any region can be sent on its own: under Video, each region of a raster has its own Display, NDI and Syphon rows, so one LED panel can feed its own processor or a corner of the wall can go to a confidence monitor. It sends its area as the stack stands at its own place in it, the regions beneath it and itself and never a region above it, under the raster's name and its own ("Main wall - Panel 3"). Regions composite on the way up: to keystone a projector's quadrants, put the quadrants low in the stack and the region sent to the projector above them, where it takes them all. The Mappings canvas shows the whole stack, every region included.
  5. Every region sent to a display has a window of its own, the lowest one included; press F on it to fill its display. Preview window, beside a raster's name in Video, opens a window of the raster's own picture, its regions laid flat at their places before their keystones, soft edges and masks, for line-up and checking; it is the engine's, not saved with the show, and opens in Live mode too.
  6. Each region has a Look, folded under it: intensity, opacity, red, green and blue, brightness, contrast, gamma, colour temperature and tint, on its own picture before its keystone. Intensity takes the region towards black; Opacity lets what is beneath it show through instead: the regions under it, and under the lowest, black. Set it there and it is saved with the show. A lighting desk can drive it too: in Control, + Region fixture patches a small fixture for any region (24 channels in Full, 12 in Standard, 8 in Basic; the channels are in DMX personality.md). Patching changes nothing on screen: a value takes over from the saved look only when the desk moves that channel, and the Look's title turns orange while a desk or OSC holds it; Release gives the saved look back. OSC drives the same values, see the appendix.
  7. Line-up pattern, at the foot of Regions, puts a pattern on every region of the raster in place of the show: a white border on the region's outermost pixels (a missing edge on the wall means that edge is off it), a grid in two greys, the diagonals and the largest circle that fits (a keystone that is right makes the circle round), colour bars and a grey scale, and the region's name and size. Give a region its Panel size, the width and height of the LED tiles it is built from, and the grid is the panels themselves, each numbered from the top left, so a tile in the wrong place or a seam in the wrong pixel shows at once. The pattern goes through the region's keystone, soft edges and mask, and to every destination of the raster; the switch is orange while it is on.
  8. A region shows only the rects that land in it, drawn over its background (the picture beneath, or black) and bent with it by its keystone, soft edges and mask; its inspector lists them under Rects in it, each picking itself. A rect lands in one region and shows there, and in any region stacked above it that takes it, and nowhere else, so a panel or a projector can carry its own picture inside a larger wall.
  9. Keystone, for a projector that is not square to its surface, lives on a region: a 4K raster split into four projector feeds gets four (one region a quadrant), a single projector the whole-raster region. Tick Keystone and drag the four corner handles inward until a grid on the wall is square (arrow keys nudge the last handle by a pixel, Shift by ten). Tick Line-up pattern (above) and set it looking at the wall. A corner only moves inward: outside the region is another projector's pixels.
  10. For a surface that is not flat, a bowed wall or a cyclorama, choose a 3×3 or 4×4 grid instead of Corners and drag the inner points to bend the picture there. Going from 3×3 to 4×4 keeps what you set; Reset puts the corners back and the grid flat.
  11. Moves, under the keystone, says what a region's keystone, soft edges, mask and look act on. Everything beneath, the usual, takes the regions stacked under it with it: the region is one output of the whole stack. Its own picture shapes only what is mapped into this region and lays it over the regions beneath, which keep their own keystones, and outside its corners they show through. That is one projector onto two faces of a cube: two regions over the whole raster, each pinned onto its face, the upper one set to Its own picture, and a region over both sent to the projector. Where the faces meet, a mask on the upper region trims the seam along the edge.
  12. Where two projectors overlap, tick Soft edges on each region and give the overlapping edge a width in pixels, the same on both sides of the seam, and a gamma: about 2.2 matches a projector, so the two ramps add up flat. Adjust it on a grey picture until the seam goes.
  13. Mask keeps a polygon dark, the proscenium or the band: tick it, drag its points on the canvas (+ point and − point add and remove), set its Feather, and tick Outside to darken everything but the inside instead. It stays on what it hides whatever the keystone does.

The frame rate

Under Show › Frame rate is the rate the engine renders at and every raster is sent at: 50 or 60 for most shows, 25 or 30 where the content is. Each frame is rendered once, and a display shows it at its own refresh, so a 120 Hz monitor on the desk costs nothing extra. It is the first thing to look at when a show is heavy: a lower rate gives the machine more time for each frame, and it carries more layers. Layers that cannot be seen (at nought, or wholly behind an opaque clip) cost almost nothing; they go on playing, and are there at once when uncovered. Timecode rate, under it on the Show page, is what the desk's H M S F, a timeline's timecode start, and timecode in and out count in, with a Drop frame tick at 29.97 and 59.94. It is separate from the frame rate: a show can render at 60 and count timecode at 25. Changing it keeps every clip's in point at the same place in its media, and a running LTC in or out picks up the new rate at once; a timeline whose timecode start the new rate cannot say (frame 28 at 25) refuses the change.

Locking to house sync (genlock). Where the screens must be in step with a house reference, so no frame is shown twice or skipped against a camera or another source, the display is locked to the reference first, outside Enzyme: on a Mac, set the display to Genlock in System Settings, Displays, Refresh Rate; on Windows it takes a professional graphics card with a sync card (NVIDIA RTX A4000 and above with Quadro Sync II, set in NVIDIA Control Panel, Synchronize displays; AMD's Radeon Pro cards with theirs), the house sync into the sync card and the display's refresh at the house rate. An ordinary GeForce or Radeon cannot lock. Then under Machine › This machine, set Render clock to that display: the engine makes each frame on the display's vertical blank in place of its own timer. A raster window must be full screen there; Machine says locked and the rate in green, or why not in orange (no raster full screen there, or it stopped presenting), and the timer takes over until it is back. Set the frame rate to the house rate, or a whole fraction of it: 25 on a 50 Hz reference makes a frame every other blank.

The output stage

Under Video, each raster's All sinks of this raster has a quarter-turn rotation, brightness and gamma, and a Delay in show frames, up to 30, for an LED processor or a projector slower than the rest: that screen, and anything sent or shared from it, runs that many frames behind. Depth is 10-bit or 8-bit: ten bits stops a slow fade or a sky banding on a big wall, where the display, cable and graphics path all take it; where they do not, eight are sent and the panel says so. Dither, on unless you switch it off, adds grain too fine to see, which hides any banding that is left; a level already exactly on a step, a test pattern say, passes untouched.

A setting changed in All sinks of this raster is made on every destination of the raster at once, each keeping the rest of its own stage. Each destination also has a stage of its own, under its row in Video: a projector hung upside down is flipped there without turning the NDI feed, and an LED processor's delay is that processor's alone. There too is Colour temperature, in Kelvin, with a Tint from green to magenta: 6500 K is the picture's own white and changes nothing; lower warms it (tungsten light is about 3200 K), higher cools it. Match a projector's lamp to the LED wall beside it, or warm the feed to a broadcast truck without touching the wall. Neutral white puts it back.

Lookup tables. Put .cube files (as Resolve and other grading and calibration tools export them, 3D or 1D) in one of the show's content folders and they join the show by themselves, numbered in the order they were found. Under a destination's Stage › Lookup table picks one for that destination: a projector's or an LED wall's calibration, or a look for one feed. It is applied last, to the colour after everything else in the stage. The row says how many points a side the table has, or why the file could not be read; a file saved again is read again, and a table that loaded once stays in use if a later save is broken.

Sound

A clip's sound plays with its picture. Under Show › Audio out chooses the Device it plays on (the machine's default output, or any interface the machine lists, Dante Virtual Soundcard included); the device is saved with the show, so a show taken to a machine with the same interface plays without setting up, and one the machine lacks shows red and is silent. Media marks a file with sound with a speaker on its tile, dim when its sound is of a kind Enzyme does not play. A file that carries timecode shows the timecode of its first frame at the foot of its tile (TC 10:00:00:00), read when the file joins Media: from its timecode track, as cameras and editing programs write one, or failing that from LTC heard on any of its sound channels in its first 10 seconds. The panel's Timecode row says which, and the channel LTC was on.

Enzyme plays uncompressed sound in a movie (what most HAP exporters write: 16 or 24 bit, or float), and AAC, ALAC and MP3 through the system's own decoders, as it does H.264. A file's first eight channels are kept. Sound files are clips too: WAV, AIFF, M4A and MP3 in a content folder join Media like movies, with a speaker and no picture, and a layer playing one draws nothing and plays its sound, so a song, a voice-over or a stinger sits on a layer of its own and is cued, owned and faded like any clip. On the timeline every clip with sound shows its waveform, as the clip plays it (from its in point, at its speed, looping if it loops), so a cue can go on a beat by eye.

Each layer's sound goes to one of eight buses, chosen on its strip (Bus), by the desk's Audio routing (slot 60) or over OSC. Under Audio out, each bus has a name, a device (the show's, or another the machine has), the device channel it starts on and how many channels it is: 1, 2, 6 or 8. Bus 1 might be the PA on channels 1 and 2 of a Dante interface, bus 2 the foldback on 3 and 4. A mono clip plays on its bus's first two channels, a wider clip channel to channel as far as the bus goes (5.1 on a six-channel bus, one to one; stereo on it, its first two), and a one-channel bus hears every channel together. Several buses can share a device, and several devices can play at once, each kept in time with the picture by itself. A bus's level and mute, beside its meter, are live like the master's. Out of the box every bus is on the show's device, channels 1 and 2. LTC out can go on a bus's first channel, picked in Control's LTC out device list, so the timecode leaves on the same interface as the sound. An interface that is unplugged mid-show, or that the system loses, is let go and opened again within a few seconds of its return, for sound, LTC in and LTC out alike; until then Show (sound) and Control (LTC) say which device stopped and why.

A layer's Audio level, on its strip, on the desk (slot 59) or over OSC, sets how loud it is, and the clip's fades and a transition's crossfade apply to the sound as to the picture. Opacity does not: a black picture can carry sound, and a desk fading a layer's intensity leaves the PA alone. The desk's Audio routing (slot 60) at Off silences a layer. Sound plays while a clip runs forwards; stopped, paused, holding, scrubbed or running backwards it is silent, and every start, stop and jump fades over a few milliseconds, so nothing clicks. At a speed other than 1 the sound keeps its pitch: it is time-stretched, natural from about 0.75 to 1.5, audibly working out to 0.5 and 2, and past that it plays but promises nothing. The strip's Pitch sets With speed instead, for the tape effect, and a clip carries the choice with its other settings; on the desk, Audio routing 1 to 8 keep the pitch and 9 to 16 are the same buses with it (personality version 6; export the GDTF file again), and over OSC it is /layer/N/audio_pitch keep or speed. Master and Mute audio (AUDIO MUTED while on), beside the meter, act on all of it at once, live (also on the Live screen, and as /audio/master and /audio/mute); they are not saved with the show. Under Audio out, a count of dropouts since the engine started means the sound ran dry: a slow disk or a busy machine. Occasional is fine; constant means the content drive is too slow. A sound file that stops answering (a drive gone, a file damaged) silences its own clip only, and Messages names it.

The sound keeps time with the picture by itself, on any interface, and through a locate, a Go or a loop. What it cannot know is how late the picture is on the screen: a display's processing, a projector's, an LED wall's. A/V offset, in milliseconds, holds the sound back by that much (or brings it forward). Set it by eye in the room with the Sync generator (generator bank 9): a white flash and a beep together on every beat of the layer's time; put it on a layer, play it, film the screen and a speaker together on a phone, and move the offset until they land on the same frame. A bus can be held back further with its own delay, for a PA further down the room than the screen (about 3ms a metre). A backup engine stays silent while it follows and sounds the moment it goes live.

Pixel mapping LED fixtures

Battens, tubes and pixel tape can play the picture too. Under Pixels (Cmd-6), pick a region and Add a pixel map to this region: its fixtures read that region's picture where they sit and are sent their levels as DMX, over Art-Net or sACN. For a rig that is only pixels, make a raster of a small size shown on no display, map layers onto it as onto any other, and put the pixel map on it.

Add fixtures adds so many of a Kind of fixture: one the show already has, or new, from a channel order (RGB, GRBW and so on; W is white, H warm white, C cool white, A amber, L lime, N cyan; type any order of your own), 8 or 16 bits, and a Line of so many pixels or a Grid. Every fixture made here or imported from GDTF leaves its kind in the list, so the next ten battens are two clicks; Save as a kind on a fixture puts it there as it is now, and Kinds of fixture is the list, to take one off. The copies are set out in a row, in a column or as an array of so many across, addressed one after the other; drag each into place on the picture, and drag a line's ends or a grid's corner to size it. Pick several with Cmd-click or Shift-click in the list or on the picture, or drag a box on the picture: rightwards picks what lies wholly inside it, leftwards what it touches. The picked move together, are removed together, and a group, profile or level set on one is set on them all; a size handle dragged with several picked scales the whole set about the far corner of its bounds, the spaces between the fixtures scaling with them. The side column drags wider at its edge. Above the picture, Snap sets the grid a dragged fixture lands on, 2, 4, 8 or 16 pixels or a number of your own (the dragged fixture snaps and the others picked keep their distances from it), and ↗ Own window puts the picture in a window of its own, as large as you like, while the column stays in the tab; Bring it back in either place returns it. The side column's Colour section (Match by eye, the meter and its white ladder, the profiles and the cameras) has ↗ Colour window to the same end, so the column keeps to placing and patching fixtures while a type's colour is worked on beside it. Both windows' places are remembered between runs. The ringed pixel is the first. The fixture list is a table: each fixture's Universe and Address are fields in its row (drag, or type and press Return), with its kind or GDTF mode and where its channels end beside them. Renumber all addresses the whole list again, in list order, from a universe and channel. A profile's Built of table says what each emitter is made of: a row an emitter, a column a channel, its own channel at 1 and the rest at 0 unless you say so, for a red that wants a little white with it or a white made of warm and cool; it applies raw and calibrated. Number boxes throughout the shell carry a small tag after them where the number alone does not say what it is: 8b or 16b for a DMX byte or word, 0–1 for a fraction, ±1 for a signed one. A pixel is never split across two universes, and a fixture that shares channels with another turns red. The white ladder, under the meter's section, makes Enzyme's whites read true on a meter: type the whites your gaffer asks for (2700 3200 4000 5000 5600 6500 by default), and the picked fixture's type shows each in turn through its profile; read each with the meter, and Enzyme moves the type's target at that white by what the reading was off, so the next time it sends 3200 K the meter reads 3200 K; climb again to check, and each rung should pass (six mireds, 0.15 of tint). The fixes live in the type's profile, apply to whites and near-whites only, calibrated colour only, and Forget takes them off. How each white is built, under the profile, lists the level the solver gives every emitter for each of those whites, with the ladder's fix. A white emitter's level there can be dragged: it is pinned at that white and the solver fills the other emitters to hold the colour, so more white LED means less red and blue; pins run straight between pinned whites and fade out at the next white with none; a white the pins put out of reach says unreachable, one that has to dim to fit says by how much, and Light shows the mix's brightness against the solver's own. Fixtures only: a screen has no spare channel. A device (an LED wall's processor, a projector) has the same ladder under its stage in the Video section: Climb the ladder (ended, like every test, by going Live) shows flat white at each Kelvin on the raster, read on the screen with the meter where the camera looks, and the device's white balance is moved at that white by what the reading was off; How each white is built there shows the red, green and blue gains the device gets for each white.

To is the node's address, which is the kindest way to send; left blank, Art-Net is broadcast and sACN goes to each universe's multicast group. Sync sends a sync packet after each frame so many universes change as one. Give the pixels universes that the desk patch does not use; the tab warns when they share one, and in orange when two pixel maps do. A new map starts on the universe after every map's.

Each pixel is drawn in the colour it is being sent. Test sends something else in place of the picture, to prove a patch on site: a Chase through every fixture in address order, everything at Full, one emitter alone (a wrong channel order shows as the wrong colour), or Identify, which flashes the fixture picked. A test is never saved with the show: it ends when the shell that started it goes, and when the engine goes into Live mode.

Colour is Raw or Calibrated. Raw is plain: red to red, green to green, blue to blue, taken to light with Gamma. White decides what a white emitter is given: replace takes the part the three colours share out of them (cleaner, cooler running), add leaves them alone (brighter), off keeps it dark. Warm/cool shares it between a warm and a cool white, and amber is given part of what red and green share. The region's look, and its desk fixture, dim and colour the whole map; a Group dims and warms the fixtures put in it (intensity, colour temperature and tint; the colour is always the picture's; its max is a ceiling on the intensity whatever a desk or OSC asks, for a rig that must not run flat out), and a desk can drive it: in Control, + Group fixture patches five channels for a group (intensity and colour temperature at 16 bits, tint at 8; six channels in Full, three in Basic). As with a region, a value takes over only when the desk moves that channel, the group shows in orange what a desk or OSC holds, and Release gives the saved look back; a fixture's own level trims one that sits bright. A backup engine sends sACN ten lower in priority and stays silent on Art-Net until it takes over. The pixels run about a frame behind the display.

Calibrated sends each fixture the mix of its emitters that makes the picture's colour. White comes out the white you choose (White is, a colour temperature and a tint; 6500 K is the picture's own) in place of the fixture's native blue-white, a white emitter is given all it can take, a warm and a cool white share a neutral between them, amber takes the yellows and oranges, and saturated colours stop overshooting on LEDs more saturated than the picture. Bright white runs white as bright as the fixture makes it and dims a saturated colour it cannot make that bright, keeping its hue; true colours keeps every colour in its proportion to white, which holds white down. Mix matters on a fixture of five emitters or more, where many mixes make the same colour: fewest emitters makes each from three (the most saturated light, the least power), all emitters from every emitter that can take part (a fuller spectrum, kinder to skin and to a camera), brightest from the three that make it on the least drive, so white runs as bright as it can. Like daylight and like tungsten mix from every emitter that can take part but lean on the mixes whose light at the white comes nearest the spectrum of daylight, or of a tungsten lamp, at the White is setting, by the spectral similarity index: what a film light's quality setting does. They go by the emitters' measured spectra, which a GDTF file gives where the maker measured them; without them a fixture is mixed as all emitters. Calibrated colour costs some brightness, so both modes stay. A fixture with fewer than three kinds of emitter (a tunable white) is left to the raw rules.

What calibrated colour goes by is the fixture's profile, under Fixture profiles: each emitter's colour as CIE x, y and its brightness beside the others, the fixture's own dimmer curve, its power limit (below 1 when the fixture holds back with everything on), and a level for the type. Profiles are kept with the show, and a fixture picks one by name. Each says where its numbers came from: typical, maker's, matched by eye, measured, or measured and verified. Without a profile a fixture goes by typical values for its kind of LED, which get it roughly right and will not make two types agree: match it by eye, or measure it with a colour meter, where it matters. A profile saves as a file of its own (Save as a file…) for a colleague to load (Load a profile file…).

Match by eye is for live events, and needs no instrument. Pick a fixture and press Match this type: every fixture of its type is shown a colour, and so is the reference you choose under Against: the screen (a region of a raster, which shows the colour over the show while the match runs), a fixture type already matched, or a light of your own. Trim until the two agree, a step at a time: White (warmer or cooler, greener or pinker, and the level), Brightness (one level on a mid grey, so two types look as bright), and if you like Red, Green and Blue, where letting in a little of the other two pulls an LED's primary, nearly always more saturated than the picture's, back to the reference's without moving white. That trims how the picture's primary is sent, not what the LED is: the LED's own colour is in the profile's table, set by the maker's file, the meter or by hand, and the primary step says so, with a button that opens the profile. Shown at dims the white and the primaries where full is too bright to judge. The match is a correction kept in the profile, raw or calibrated alike, and Done marks the type matched by eye (a measured type stays measured). Match this unit does the same for the picked fixture alone against a neighbour: its own unit white and level, for the one that sits off the rest. About two minutes a type.

A camera sees narrow-band LEDs differently from an eye or a meter, so a rig that looks right can look wrong on the monitor. Add a camera under Cameras, then match by eye with the camera's monitor as the reference and For set to that camera: the trims are kept with the show, one a fixture type, on top of the profiles, which stay true. One camera is in use at a time; switch with the camera, or choose No camera.

Measure with a meter is for film. Pick a fixture and press Measure this type. Before you start: the fixture warm (Warm up runs the type at half white for fifteen minutes, with a countdown), the room dark, and the meter on the fixture's axis at a distance you keep. Choose how many lower levels each emitter is read at for its curve (2, 4 or 8; the count of readings and the time are shown) and press Start reading. The type shows each step in turn: each emitter alone at full (type the meter's x, y and lux) and at each lower level (lux), then everything on. Next takes a reading; one that cannot be right stops with the reason (no light, a colour no light can be, a level that did not fall, the same as another emitter, far dimmer than the rest, which is the room), and you read it again or Keep it anyway. At the end Enzyme shows each emitter's colour, brightness and curve, the type's curve and its power limit, and says when the curves differ or everything on disagrees with the emitters alone. Save to the profile puts them in it, marked measured, with the readings, the meter and who.

Then Check the profile, with the map Calibrated: the type shows white, two greys and the primaries through the profile. Read the white and the grey and press Check: each is given in Kelvin and tint, and how far from the White is setting in mireds and tint, with the grey's light against what was asked. Within 6 mireds, 0.15 of tint and a tenth of the light both pass; Record the check marks the profile measured and verified, with the date, the meter and who. A verified profile from a GDTF file can be saved back out as GDTF with the measured colours in it.

Import GDTF…, under Add fixtures, reads a fixture type from its GDTF file. Choose the DMX mode and how many, and the fixtures arrive with their pixels in the mode's own order and arrangement (a batten as a line, a panel as a grid), the mode's other channels held while the map sends (a shutter and the rest at the maker's defaults, and the master dimmer at full unless Master dimmer under Send is from Enzyme: then the group's intensity and the fixture's level go to the master, at 16 bits where the mode has them, and the pixels carry the colour at full, for finer fades near black and the fixture's own dimmer curve), and a profile of the maker's emitter colours where the file has them, marked maker's (worked out from the emitters' measured spectra where the maker gives those). Some modes do not drive the LEDs at all: the fixture mixes its own colours and its red, green and blue channels are colours in a colour space the file names. Such a mode gets a profile of that colour space, named for it, so Calibrated sends the fixture the picture's colours in the space it expects. A mode that cannot be pixel mapped says why: more than one start address, more than one universe, cells that differ. UV and the other colour emitters Enzyme has no kind for (it has red, green, blue, white, warm and cool white, amber, lime and cyan) are left dark. The file is copied into a fixtures folder beside the show. A placed fixture can be put into another of its file's modes from the GDTF mode picker in its settings: it keeps its place and its address and takes the mode's channels, pixels and profile; with several fixtures of that type picked, they all change, and a fixture named for its old mode is renamed. Held channels, below the picker, lists the mode's other channels by their own names (a shutter, a strobe, a colour crossfade) with the value each is held at while the map sends, so a fixture whose mode wants a crossfade pushed to its colour end, or a shutter opened, can be told so; a value set there goes to every picked fixture in the same mode, and the master's row is greyed while the master is from Enzyme. Each channel is Held at its value or, unticked, let go: Enzyme sends 0 on it and keeps the value, so where a node merges Enzyme's Art-Net with a desk's highest takes precedence, the desk has the channel (a shutter, a strobe, the master when it is not from Enzyme) and Enzyme the pixels.

Save as GDTF…, on a profile that came from a GDTF file, writes the fixture type back out with the profile in it: the emitters' measured colours and brightnesses, as a new fixture type that names the maker's as the one it came from, with a revision saying what was done. Everything else in the file is kept. Only a profile marked measured has its emitter data written: a match by eye is a correction, not what the emitters are, so the file keeps the maker's data and says so.

Dither moves 8-bit levels between the two nearest steps from frame to frame, so a slow fade near black is not seen to step. Some fixtures shimmer with it; 16-bit fixtures need none.

7

Building a cue list

The Timeline (Cmd-1) is a clock with clips laid along it and cues marking the moments that matter. During the show you press Go and the timeline runs to the next cue, then does whatever that cue says: keep going, hold and wait for you, jump somewhere, or loop until you press Go again.

How long the timeline is

The timeline runs to the end of its last section, and the ruler always shows thirty seconds of empty space beyond whatever is on it, so you can drag the playhead past the end and place something there. To set the length outright, click the section bar under the ruler and set the section's Start and Length, both typed as timecode so they land on a frame; the end is shown beneath. Every timecode field takes a short entry, filled out with zeros (10:23:23 is 10:23:23:00, 10 is 10:00:00:00), or a length in units (10h, 10m, 10s, 12f, 1h30m); click into one and the mouse wheel steps it a frame at a time. A cue's time and a clip's start also take a time against their neighbours: +3s puts a cue three seconds after the cue before it, and a clip three seconds after the end of the clip before it on its layer (+0 butts it on); -2s puts a cue two seconds before the cue after it, and ends a clip two seconds before the next clip starts. The units are the same, and a bare +3 is seconds. With several cues picked, +3s spaces them three seconds apart in turn. The same editor sets what happens when the section runs out: hold stops the playhead and freezes the clips under it (one ending exactly there keeps its last frame); continue runs into the next section; restart section goes back to its start and plays it again until you press Go; loop clips until Go stops the playhead but keeps the files under it playing until you press Go, each as if it played on its own by its own play mode: a clip set to loop loops between its in and out points, one set to Hold plays to its out point (or the file's end) and keeps its last frame up there, and one set to Release goes off there. How they look stays as it was at the end: a clip you faded out by the end stays out, and fades, keyframes and transitions set after the end wait for Go. The clips play on at that point however the playhead comes to stand there: skipped to a cue or a section start there, or held by a Hold cue fired there, as well as by the section running out. + Section adds a minute after the last one; + Section at playhead starts one at the playhead, splitting the section there if there is one, its first part running straight on into the new one so the show plays as before. On the section bar itself, drag a section's middle to move it and either end to resize it; it snaps as a clip does (Option for none) and stops against its neighbours, since sections never overlap. Right-click the bare section bar or the ruler for + Section here, which fills up to a minute or to the next section. The same menu, and a right-click on bare track, offers Insert time… and Remove time…, at the playhead (exactly, on its frame) or at the time clicked: type a length in seconds or as a timecode. Inserting moves everything that starts at that point or later on by that much and stretches a section running across it; a clip running across it stays where it is, unstretched. Removing pulls everything after the gap back and shrinks a section reaching into it, and is refused, naming the culprit, if a clip or cue starts inside the gap; a clip that only reaches into it is trimmed. Keyframes belong to their clip and move with it. Either is one undo step. With more than one section, a row above the cue list filters it to the cues inside one section, with the count on each button.

A timeline as a cue list: cue by cue

A timeline that is mostly cues, with little or nothing to play in time, can run cue by cue: right-click its tab, Runs, Cue by cue (or Setup, beside At start). Then Go no longer plays through the time between cues. From a hold, Go fires the next cue at once, wherever it sits, and a Hold cue holds there, so one Go is one cue. After a Continue cue, time does run as on any timeline, and the gap to the next cue is the wait before it fires: put the next cue three seconds on and it follows three seconds later. A run of Continue cues plays as a timed sequence until it reaches a Hold. The cue editor shows a Continue cue's wait as Continue after, in seconds; type a new wait and the next cue and everything after it move by the difference, so their own waits stay. The cue lists say "continue 3.0 s". Go during a wait fires the next cue at once. New cues on a cue-by-cue timeline go a second after the cue at or before the playhead and hold, and any cue less than a second after them moves on to keep the list readable. Clips on such a timeline play while time runs and loop at its holds. It keeps no time for timecode: its sections run free, and the TC lock and the lock cues are greyed. On the Live screen the timecode panel becomes Cue list, showing which cue it is on of how many, and Next shows a time to go only during a wait. Skip, Stop and Reset work as on any timeline: the cue you skip to stands by, and Go fires it. Because one Go is one cue and the picture may not change at once, each Go lights the Go button pale green for a moment, on the Timeline and on the Live screen, and the current cue's row flashes green in the cue list; it does on a timeline that runs on time too. A Go from the desk, OSC or another shell flashes the same, and a skip or a locate does not.

A timeline drawn as a list: the cue list view

Right-click a timeline's tab and tick Cue list view to draw it as a list rather than along time: a row for every cue, every section start and every clip start, all the same height, with a column for each layer holding the clips that start on each row. A row with no cue reads no cue. Each clip is a box with its name and in fade · length · out fade; × and a time mark a transition, a diamond marks keyframes, and a box is edged red while it is on screen. The next cue to fire by itself counts down (in …) and the current one shows how long it has run. In Edit mode, drag a clip to another row to start it at that row's time, or to another column to move it to that layer; double-click a cue's name or time (a timecode, or +3s and −2s as anywhere) or a clip's name to type it; right-click a cue, a clip or an empty cell for the same menus the lanes have. Trims and keyframes are still edited on the lanes. The choice is per timeline and this shell's own, not saved with the show, and the Live screen's Timelines tab draws such a timeline the same way, to read only.

Finding your way along it

The lanes show the whole timeline until you zoom. Cmd-scroll or pinch over the lanes zooms about the pointer; the −, + and Fit buttons in the transport bar do the same from the middle. Scroll sideways to pan, or drag the bar under the tracks; a click beside its thumb jumps there. The ruler relabels itself as you go in, down to one second. A click or drag on the ruler snaps the playhead to a nearby clip, section or cue edge; hold Option to scrub freely, or untick Snap the playhead to edges in the ruler's right-click menu. [ and ] step the playhead to the previous or next edge of anything on the timeline: a clip's start or end, a section's edge, a cue. They are locates, so they work in Live mode too, as Home does. Follow keeps a moving playhead in view by paging the window along when it runs off the edge; a still playhead never pulls the view back, so a paused show can be scrolled anywhere. Find playhead brings it back into view once, wherever you have scrolled to. To go to a time, click the big timecode in the transport bar, type the time as HH:MM:SS:FF and press Enter; it is the timeline's own timecode, as its ruler shows it, counting from its TC start. ◀ Skip and Skip ▶ either side of the play buttons move to the previous or next cue and hold there without firing it, as the arrow keys do. The cue you land on stands by: it shows as the next cue, and the next Go fires it (its sends, its commands to other timelines, its Then) and plays on, as a lighting desk's or QLab's Go fires the cue standing by. A Hold cue skipped to does not hold that Go again. When there are more layers than fit, the tracks scroll up and down under the ruler, section bar and cue row, which stay put.

Placing a clip

  1. Drag the ruler at the top to put the red playhead where the clip should start.
  2. Click the layer's track. It lights up, with a blue bar at its edge and a dot by its name: that is where the clip goes. Press the big blue + Clip at playhead button at the bottom left and choose its folder and file. With nothing chosen the clip shows tile 1 of bank 1, so you can lay clips down first and fill them in afterwards; right-click bare track for + Clip here, which does the same at the pointer. To place a clip that plays a master's settings instead, pick the master under Follower of; it lands at the playhead with the master's length and fades.
  3. A clip can have a Name of its own, typed in its inspector: saved with the show and kept when its file is replaced, so everyone calls it the same. Left empty, it goes by its tile's name, shown grey. Typed with several clips picked, it names them all.
  4. Select the clip and the inspector along the bottom is in three parts. On the left: when it starts and how long it plays, both typed as timecode so the clip lands on a frame, with the seconds beside them ("to section end" runs it to the end of its section; "to file length" gives it the file's whole run from its in point, the thing to press after swapping the file), where in the file it starts as a timecode, fades in and out, and a mapping preset. On the right: the same controls a layer strip has, editing this clip's own settings: source, what it does when its file runs out before the clip ends (At file end: Loop repeats the file to the clip's end; Hold keeps the last frame up until the clip ends; Release goes off as the file ends), speed, opacity, position, size, colour, mask, key, blur and the generator values with their sweeps. A clip carries everything the layer shows while it plays, and whatever it is set to, its picture goes off when the playhead leaves the clip. A clip that starts exactly where a stopped or held playhead stands waits until the timeline moves, as the cues there do; on a cue-by-cue timeline held at a cue, a clip laid at that cue plays. Held mid-show (a Hold cue, a Hold section end, a pause or a skip), a clip that ends exactly at the playhead keeps its last frame up until Go, so a butt join does not flash to black; Stop and Reset still take it off. On the far right, what it plays: the tile's picture, file, size and codec, length and frame rate, or for a generator its family and name.
  5. If that layer is not currently owned by the timeline, Enzyme offers to add a cue that hands it over, now or later. Say yes unless you have a reason not to.
A clip picked
A clip picked. Under the lanes: its name, start, length, in point, fades and mapping, Free-running, keys and Master on the left; its own settings, the strip's controls, in the middle; what it plays on the right.

Moving and trimming a clip

Take a clip by its middle and drag it along the track; take either end and drag to trim it. The cursor shows a hand over the middle and a double arrow over the ends. The clip is drawn where it would land, with the moving edge's timecode above it, and the edit happens when you let go, as one undo step. The moving edge snaps to cues, section edges, the ends of other clips and the playhead; hold Option to drag freely. Everything lands on a frame, and a trim always leaves at least one frame. Trimming the start keeps the picture at every moment the same, so the clip's in point moves with it. Start, length and in point can still be typed in the inspector when a drag is not precise enough. Fades are drawn on the block: the part still fading in or out is shaded above a ramp, with its length written on it when there is room, and in Edit mode the hovered or picked block has a handle at each top corner that drags its fade's length, snapping to cues and edges (Option for none); every picked clip takes the same length. Where butted clips meet, the span over which the later one comes in is shaded and crossed, as an overlap is, and its hover says by what transition and over how long; a small pill at the start of a clip's name line gives how long it comes in over, and one at the end its fade out.

To work on several clips at once, Cmd-click them one by one, Shift-click to pick every clip starting between the selected one and the one you click (along one track, or across the rows between the two), or drag a box on bare track or the cue row: everything it touches is picked, clips and cues alike, and Cmd adds the box to what is picked already. Drag any picked clip and the group moves together by the same amount, snapping as one, in one undo step; typing a new start for one of them in the inspector (or a new time for one of several picked cues) moves the rest with it too. Cmd-← and Cmd-→ (Ctrl on Windows) nudge what is picked a frame, ten with Shift: the selected section, else the picked clips, else the picked cues; with nothing picked the arrows skip cues as usual. Delete asks to remove what you picked last. A right-click on a clip offers a one-second Fade in or Fade out (or takes one away), Cut, Copy, Paste, Remove… and Keyframes…, all acting on the picked clips. It also offers, for the clip clicked: Split at playhead, which cuts the clip in two at the playhead with nothing on screen changing (the second part carries on in the file where the first had got to, the fades stay at the outer ends, and every keyframe curve runs on through the cut, an eased one exactly); Change media tile from here (Change generator tile from here on a generator clip), which splits it there and gives the part after another tile from its start (the tile picked in Media, or one typed as bank/tile, of the clip's kind, a movie for a movie and a generator for a generator; its keyframes for a generator or effect of another family go, since a slot there is another setting); and Join with next, which makes the clip and the one end to end after it on its layer one clip, their keyframes one curve, so a split joined again is as it was. Join says why when it cannot: other tiles, a file that does not carry on, a fade where they meet, different settings. Cmd-C copies the picked clips and Cmd-X cuts them; Cmd-V pastes them as new clips at the playhead, the first on the selected row and the rest keeping their spacing and rows below it, or right-click bare track for Paste here. Copied clips stay in this shell; Shift-Cmd-V pastes copied settings onto the selected clip instead.

Editing several clips at once. With several clips picked, the inspector says how many, and what you change there is set on all of them in one undo step, each keeping the rest of its own. On the left that is the fades, the length, the mapping preset, Free running and Fixed to the timeline; a field the picked clips disagree on is marked mixed beside the selected clip's value. A typed length goes to every clip from its own start, and To section end or To media length gives each clip its own section's end or its own file's length; a clip the new length would run into the next clip on its row keeps its length, and the band says how many did. On the right, a value moved on the strip (opacity, geometry, colour, At end and the rest) is set on every picked clip, or on its master for a follower, leaving its other values as they are; the note above the strip names the settings the clips differ in, shown as the selected clip has them. The source stays each clip's own, generator and effect values go only to clips of the same family, and the in point, keyframes and following stay one clip at a time.

To another layer. Drag a clip up or down and it moves to that row, keeping its time, settings, keys and followers; drag one of several picked clips and they all move by the same number of rows. Clips land only on rows on screen, and only where nothing else is: if one would go past the top or bottom row or over a clip already there, the cursor says no and they stay on their own rows. Option-↑ and Option-↓ move the picked clips a row from the keyboard.

The outputs show whatever the playhead is on, so to see the clip you are editing press Playhead to clip in its inspector, which locates to its start. To watch the result without turning to the screens, press V for the Monitor, a window of its own a frame or two behind the screens with three views: Content maps, each mapping's content canvas with every layer on it composited as the engine makes it (the rasters as they sit on the show's canvas when no mapping has one); Rasters, the rasters one by one; and Outputs. Outputs shows what one region sends, as its window, NDI or Syphon gets it: pick the region (one sent somewhere is marked ↗; one sent nowhere can be picked too) and you see the regions up to it in the stack, its keystone, soft edges, mask and look, the line-up pattern when it is on, then its sink's colour, turn, lookup table and dither, after the sink's delay, on its side if the sink turns it. Where a region's sinks send it differently, a second list picks which; a line under the picture says which delay it is after, or that its sinks are off. The picked region and view are remembered by this shell. The picture comes only while the Outputs view shows it, never from a backup engine. It follows you to any workspace, and making it bigger makes the pictures sharper.

The Monitor
The Monitor (V), a window of its own, on its Stage view: the LED Screens view, each region pinned where it hangs, drawn from the same pictures as the outputs. Below it, the view's size, backdrop, foreground and house lights, then where it is sent and its placements.

Editing while the show runs: detached

Detach, on a timeline's toolbar (or its tab's right-click menu), takes that timeline off the stage for you to work on. Only a timeline is ever detached, one at a time: everything else stays the live show, including the layers in whichever window, who owns each, the manual faders, media, mappings, rasters and the other timelines. Edits to the detached timeline (its clips, cues, sections, keyframes and rows, its name and starts) stay in your shell; any other edit goes to the engine at once, as usual. The band says DETACHED and the timeline's toolbar counts what you have done to it. Rejoin puts the timeline back on the stage as you left it, as one change and one undo step; Discard throws your version away and asks first, because those edits were never sent and are not in the undo history. While it is detached, Cmd-Z and Shift-Cmd-Z undo and redo your edits to it, not the stage's last change, and Duplicate is greyed for it: Rejoin first. A media tile moved meanwhile, from any shell, takes your version's clips with it too, so Rejoin keeps them on the tile. If someone else changes that timeline while you have it, the toolbar says so, since Rejoin would replace their change; if the engine refuses what you send (a layer one of your rows is on has been removed, say) you keep your detached copy, so nothing is lost. Clips, cues and sections keep their numbers through all of this, so a follower keeps its master.

The detached timeline has a playhead of your own, starting where the engine's was and stopped there. Go, Pause, Stop, the skips, dragging on the ruler, typing a time and firing a cue move your playhead and never the stage's, and it does not chase timecode. The cues it reaches keep to themselves: no OSC, no device commands, no commands to other timelines, unless you tick Cue sends go out on the toolbar to try the timeline against the real kit and the rest of the show; a cue handing a layer over does so only in your picture.

This is how you build the next section during a show, or try something without anyone seeing it. What you cannot do detached is see it on the screens, so the peek follows your playhead: the engine draws what the screens would show there with your version of the timeline, and it moves as you play or drag. Stop peeking on the band gives the rasters' pictures back to what the screens are showing; Option-click on the ruler peeks at one time on a timeline that is not detached; Option-click on a track or a clip peeks at that layer's output at that time: the picture its Layer Output tap gives, with its colour, effect and blur and before any mapping, as its timeline has it whoever holds it now (Option-drag still moves a clip without snapping). Rejoin or Discard puts you back on the engine's playhead.

A whole track at once

Right-click a track, on any empty part of its row, for what it holds as a whole: Move clips to, Copy clips to and Swap clips with list the other layers, each with how many clips it has, and Clear clips empties the track after a confirmation. Moving onto a layer that already has clips asks whether to Swap the two tracks or Move on top, where the later clip transitions over the earlier wherever they overlap; copying onto one asks whether to Replace what is there or Merge the copy in with it. Clips keep their identity through a move or a swap, so a master keeps its followers wherever they are; a copy is new clips, and a follower copied beside its master follows the copy. Each is one undo step.

Override. A track can hold settings over every clip on it: a mapping, a position or size, a colour, a blend, an effect, any value on the strip except the file and how it plays. Right-click the track and choose Override…: a copy of the layer's strip opens in a window of its own, and whatever you change there is held, listed at the top with a × to let it go. Nothing reaches the screens until Override on is ticked, in the window or on the track's right-click menu; from then on what is held replaces each clip's own value, its keys and sweeps included, while everything else still comes from the clip. Each timeline has its own override for each layer, and it holds only while that timeline owns the layer, so a desk or a hand taking the layer is not overridden. A track with its override on shows an orange OVR tag by its name, and the clip settings say what is held. It is saved with the show, is undoable, and cannot be changed in Live mode.

Override
Override. Layer 1's track on the LED Screens Demo timeline: what is changed here is held over every clip on the track once Override on is ticked. Nothing is held yet.

One look in several places

A clip can follow another clip. First tick Master on the clip to be followed; then select the other clip and pick that master in its Follows row. If the two lengths differ, Enzyme asks whether the clip should take the master's length or keep its own. From then on it plays the master's source and settings at its own place on the timeline, with its own length and fades, and it is drawn with "follows" and a dashed foot. Change the master and every clip that follows it changes with it; editing a follower's settings edits the master, and the inspector says so. Make independent turns a follower back into an ordinary clip with a copy of the settings. Unticking Master, or removing a master, does the same for all its followers, after a warning.

A loop that must not jump

Every clip on the timeline shows the frame that belongs to the playhead's position, so a locate, a replay or a Go always gives the same picture. A background loop laid across several sections is the one case where that bites: at each Go the playhead moves on and the loop snaps to where it would have been. Tick Free-running in the clip's inspector (Split at playhead and Change media tile from here are then greyed, as the second part would start again and the picture jump) and the clip's time becomes its own clock from the moment it comes on, exactly as a manual layer in Loop behaves: parks, restarts and Go never move it, and the timeline still decides when it is on, its fades and its layer. What it gives up is replay frame for frame: a locate into the clip shows it wherever its clock stands. Ticked while the clip is on screen, it carries on from the frame it was showing.

Keyframes on a clip

A clip can carry keyframes on any of its continuous settings: opacity, position, scale, the colour gains, the mask, a generator slot. They are the clip's own: their times count from the clip's start, they move with the clip when it is dragged, and they end when the clip ends, so a fade written into one clip can never reach the clip after it. Inside the clip a keyed setting holds the first key's value before the first key and the last key's after the last, so "fade out over ten seconds" stays out for the rest of the clip, and a return is a key written on purpose. Keys on a setting replace that setting's sweep. The timeline draws each keyed setting as a line across the clip's block with a diamond at every key. Keyframes… in the clip's inspector, or a double-click on the clip, opens the keyframe editor in its own window: the keyed settings as chips (and + parameter for any other; a generator's or an effect's slots are named as its family names them, "Plasma: Speed", and only the slots it has are offered), a graph of the chosen one across the clip with its value from the clip's settings dashed for reference and the playhead marked. The ruler along its top reads the clip's own time from its start, or with Timeline time the timeline's timecode; click or drag on it to move the playhead there. Cmd-scroll or pinch over the graph, or its − and +, zooms in on part of a long clip, a sideways scroll or the bar underneath moves along it, and Fit shows the whole clip again; drag a key to move it (it lands on a frame and snaps to the playhead and the other keys; Option drags it free, Shift keeps it to one direction), double-click to add one where the pointer is, click one to set its time (as timecode, typed or stepped with the wheel), value and whether it reaches the next key in a straight ramp, eased, or holds and jumps; Key at playhead adds one at the value the clip shows there. A drag is one undo step. Fixed to timeline, beside the clip's Keyframes… and in the editor, is the exception, to use with care: the clip's keys then stay at their times on the timeline, so moving or trimming the clip changes what it does at each moment, and keys can end up over one another or outside the clip (where they still shape the curve inside it). It shows orange while on; turned off, the keys are the clip's again where they now stand. Insert and Remove time and a paste carry fixed keys with the clip.

Capturing what you built by hand

The lighting-desk habit: get the look right on a Manual layer, then write it into the cue list.

  1. Set the layer up in Layers: clip, in and out points, speed, mode, opacity, position and so on.
  2. In Timeline, put the playhead where the clip should start and click the layer's track.
  3. Press Capture manual state. A clip appears on the track holding a copy of the strip: source, every setting, sweeps and mapping preset. It is the settings that are captured, not where the clip happened to be playing: when its cue fires it starts from its in point. Edit the clip afterwards with the same controls in the clip inspector.
  4. Capture all manual layers does the same for every layer in Manual at once and offers one cue that hands them all to the timeline.
  5. To refresh a clip you placed earlier, select it and press Update from manual state. Its place on the timeline and its fades stay; everything else comes from the layer.

Adding a cue

  1. Put the playhead where the cue belongs and press + Cue at playhead (or C). The new cue is picked as soon as it is made, so the cue editor below is open on it; the same goes for a cue added from a lane or a menu.
  2. Cues are numbered halfway between their neighbours, so a cue between 1 and 2 is 1.5 and the next between 1.5 and 2 is 1.75. You can type any number you like.
  3. The cue list opens at least five rows tall and can be dragged taller. It is a table: its header stays put while the rows scroll, and the edges between the column titles drag to widen or narrow a column (a double-click puts one back), kept for the run. On a narrow panel the number and the time stay whole and Name and Then give way first. The Live screen's cue list works the same. Its Follow tick keeps the current cue in view, scrolling to it when it changes; untick it to scroll freely. A click anywhere on a cue's row picks it for the editor below.
  4. The cue editor under the list has three tabs. Cue: its number, name and time (typed as timecode), what happens Then (continue, hold, reset to the timeline's start and hold there, jump to a cue and play, jump to a cue and hold there (it fires that cue and stands by for Go), loop to a cue, lock the whole timeline to timecode, or release the section's or the timeline's timecode lock; a reset cue at the timeline's start, or reached while timecode drives the timeline, is only a marker) and whether it turns Blackout on or off, and the manual Recall it fires, if any, by bank and tile (see Manual recalls). Ownership: a grid that hands any number of layers to the timeline, the desk or manual in one cue. Sends: the OSC messages and device commands the cue sends to other machines, each with a Send button that sends it now so you can try it without firing the cue, and the other timelines it commands (below). The tabs count what is in them.

Running free, and locking to timecode

A timeline shows its own timecode: the ruler, the playhead, cue and clip times and the Go to box all count from the timeline's TC start, so with a TC start of 10:00:00:00 the timeline's zero reads 10:00:00:00. A time typed anywhere on the timeline is in that timecode too.

A timeline runs on its own clock, and incoming timecode does not move it, until one of two locks takes it.

A section's lock. A section set to chase timecode locks the timeline inside that section only. Running free onto its start, the playhead stops there and waits, and the cues at its start (and their sends) wait with it, firing when the timecode takes hold or on the rescue Go: the band says WAIT TC in amber, with the timecode it is waiting for on hover, and the Live screen says WAITING FOR TC with the timecode. When the incoming timecode is inside the section it locks, and follows it frame for frame; if the timecode is already partway through the section, it joins it there. Every way of starting inside a timecode section waits the same way: Go from a hold, a pause or after Stop, a fired cue or Go next, a locate while playing, and a jump cue. While locked, timecode wins: cues are markers only, holds and jumps are ignored. The lock never leaves its section: timecode jumped back before it waits at the section's start, and timecode jumped past it holds at the section's end, until the timecode comes back inside. Timecode running on past the end lets go: the timeline carries on into the next part on its own clock, or, when the next section is also on timecode, straight into its lock.

The timeline's lock. A cue set to Then: lock the whole timeline to timecode, or the timeline's TC lock toggle in its transport bar, locks the whole timeline. The playhead stops and waits until the timecode points anywhere on the timeline, then follows it anywhere: across sections, into free-run sections, backwards and forwards. Section ends and section settings do not let it go. The toggle works in Live mode, and OSC can do the same with /transport/tc_lock and /transport/tc_release.

Letting go. Each lock has its own release cue. Release the section's timecode lock lets the rest of the section run on the clock, and the next timecode section waits for its timecode as usual; it does nothing to the timeline's lock. Release the timeline's timecode lock lets go of the timeline's lock, and does nothing to a section's. Turning the TC lock toggle off lets go of either, and the timeline runs on from where it is; let go while waiting at a section's start, the next Go runs the section on its own clock rather than waiting again. Lock cues are green on the lanes, release cues orange.

Chase mode. The desk's transport fixture (its Timecode chase channel) and OSC (/chase/…) can override all this while the show runs; the setting is not saved with the show. Per section, the usual setting, does as the sections, cues and toggle say. Force chase locks the whole timeline, as a Lock timeline cue does: the playhead stops and waits for the timecode, then follows it anywhere, free-run sections included, and every start (Go, a fired cue, running onto a timecode section) waits for it again. Release cues are passed over while it is on. Back to Per section, a lock that Force chase put on gives way to what is programmed there: inside a timecode section that section's lock, still following; elsewhere the timeline runs on from where it is on its own clock. A lock a Lock timeline cue or the toggle put on stays on, unless a release cue was passed over meanwhile. Force free run lets go of every lock and ignores timecode until it is set back.

While waiting, Go runs the timeline on its own clock instead: the rescue when the timecode does not come. It waits again at the next lock. If the timecode stops while a lock is following it, the timeline keeps going on its own for about two seconds, then does what When timecode stops, under Timecode in Control, says: Hold (the default) stops it there to wait for the timecode or Go; Run on for a number of seconds, or Run to section end, keeps it playing on its own clock, firing the cues it passes, and stops it there to wait (never past the end of its section). Timecode coming back on the way takes hold again. In Live mode a timeline always runs on to the end of its section, whatever the setting, and the band says TC LOST while it does. While a lock follows the timecode the band says TC LOCK in green (which lock, on hover), and the Live screen TC LOCK · SECTION or TC LOCK · TIMELINE.

Timeline
Timeline. A tab for each timeline above the transport bar (LED Screens Demo, the master, and Encore); the sections, then the cue band with a marker for each cue; a track per layer with its clips, LED Screens 2's badge green for Manual; the cue list on the right, a table with chips to narrow it; the new-clip panel along the bottom.
In Show you choose what the timeline does when the show opens: start playing at once, or sit at the beginning and wait for the first Go. Wait is the safer choice for a live show.

More than one timeline

A show can have several timelines, and they all run at once, each with its own play, pause and position. A layer is driven by one of them at a time: the one that owns it. A main show on some layers and a walk-in loop or a set of stings on others is the usual reason.

  1. The Timeline workspace has a tab for each timeline above the transport. + adds one. A tab shows ▶ while its timeline is running, ⏱ while it follows timecode, and ★ on the master. It shows ⏸ while the timeline has been halted mid-show and waits: held by a Hold cue or a section end, paused, or waiting for its timecode to start, so the timelines waiting for a Go stand out. A timeline that is stopped (Stop or Reset), or has not started since the show opened, shows no mark. A timeline's own window and the Window menu show the same.
  2. Everything inside a tab acts on that timeline: Go, Pause, Stop, the skips, the keys, Clear timeline, adding clips and cues. Cue numbers are each timeline's own.
  3. Right-click a tab to rename the timeline (the name opens chosen whole, so typing replaces it; the same for a layer or a row group), make it the master, Move left or Move right among the tabs, open it in its own window, or remove it. Moving the first timeline keeps it the master. Removing one takes the layers it was driving by hand and asks first.
  4. Duplicate on the same menu makes a copy after it. Its layers and their overrides always come; tick Sections, Cues and Clips for those too (all three are ticked at first). With nothing ticked the button reads Make template: a timeline with the same rows and overrides, ready to fill. The copy is called "… copy" or "… template"; rename it from the same menu. It drives no layers until a cue or you hand them over, its cues that took layers for the original take them for the copy, and it holds until Go when the show opens.
  5. The master is the timeline the Live screen runs and the one the top band reports. Its timecode is the one sent when timecode out is on, and the lighting desk's transport fixture and the OSC addresses that name no timeline act on it. The first timeline is the master until you choose another.
  6. One timeline can start another. On a cue's Sends tab, + Timeline picks another timeline and what to tell it: Go, Hold, Pause, Stop or Reset, as its own buttons would, or Start and play, Reset then Go, so it plays again from its start with the cues there, or Go to time, a time typed in that timeline's own timecode, then play or hold there. Stop takes it back to the start of the section it is in; Reset takes it back to the start of the timeline, holding there with the owners and blackout in force at the start put back, firing nothing until its next Go. Tick Bring to view on the line and, when the cue fires, every shell following cues turns to that timeline: the Live screen's Timelines tab draws it (and its big GO then runs it) and, in Live mode, the Timeline tab shows it (in Edit mode the Timeline tab stays where you are working), so a show that moves from one timeline to the next keeps the one playing in front of the operator. The show's first cue can stop the walk-in loop, or a cue in one song can start the stings timeline on the beat. It happens when the cue is reached or fired, and is never replayed by a locate, so scrubbing back over the cue leaves the other timeline alone. A cue cannot command its own timeline; that is what Then is for, and Then has Reset too. In place of a timeline the line can name Next in set list or Previous in set list: the timeline is then found when the cue fires, from the set list's current row (see The set list), and Go to cue goes to that row's start cue.
  7. A cue can go to a cue of another timeline. In the same row choose Go to cue in place of Go, Hold, Pause or Stop, then the cue: when this cue fires, that timeline does what that cue's Go in its own cue list does: it jumps there, fires the cue and plays. It keeps finding the cue when the cue is renumbered, and the row goes if that cue or its timeline is removed. Like the other commands it is never replayed by a locate.
  8. A timeline as the master cue list. A timeline whose cues drive the others (and OSC, devices, recalls) is easier to read with its cue band opened out: click CUES in the gutter and the band becomes a lane for each thing its cues drive, one per other timeline, per OSC destination (and one for messages to all of them), per device, then recalls, and owners and blackout. Each marker says what the cue does there (Go 3, the OSC address, the command), so a cue that does several things shows in several lanes; click any of them to pick the cue, and drag any of them to move it. Right-click a lane's name to move it up or down or hide it (the CUES name's menu shows it again); right-click an empty lane for a cue at that time already doing that lane's kind of thing. On a lane for another timeline that is a Go to its first cue, with the cue editor open to choose which. A timeline that others drive has an Incoming lane under its own cues when its lanes are open: "← Master 14: Go 3" at the cue gone to, and Play, Stop, Hold and the like at the timeline's start, as they have no place of their own. What lands on one time is one marker saying how many more, with all of them on hover; a Go to a cue the timeline no longer has is red. Click a marker to open the timeline it comes from with that cue picked; right-click it for each one. Closed, the cue band has a tick under each cue that drives something, and a small cyan notch on its top edge at each cue another timeline goes to, and at the start for their Play, Stop and the like (red when what one names is gone); hover it for what comes in, click it to open where it comes from. Each lane for another timeline ends in what that timeline is doing now, in the Live screen's words and colours (GO, HOLD, STOP, CHASE), with its current and next cue and TC while it is locked to timecode (amber while it waits for it); when a cue fires, its markers in the other lanes flash, so a Go or Play sent is seen to land as the lane's state changes. The Live screen's lanes show the same. Whether the lanes are open, their order and the hidden ones are saved with the show.
  9. No rows. A timeline that plays nothing itself needs no layer rows: None at the top of the Rows menu leaves only the ruler, sections and cue lanes; Show all brings the rows back. It is saved with the show for that timeline, so every shell shows it the same.
  10. What each cue does. The cue list (here and on the Live screen) has a Does column: "→ Video A: Go 3", "QLab: /cue/3/go", "Matrix: Wide", "Recall 1.4", owner changes and BO on or off. Something the cue names that the show no longer has (a timeline, a cue, a destination, a device) shows as ? in red. The chips above the list narrow it to the cues driving one timeline, one OSC destination, one device, recalls or owners, each with how many; they combine with the section chips.
  11. All timelines listen to the same incoming timecode, each from its own TC start, and each under its own lock: a chasing section answers to its timeline's TC start plus its place on that timeline.
  12. From the lighting desk: each timeline can have a transport fixture of its own. Under Control, a timeline the desk cannot run yet is listed as not patched; press Patch and it gets a fixture at the first free block, with its universe and address to give the desk programmer. Re-lay patch keeps those fixtures.
  13. From OSC: the addresses you know act on the master; put /timeline/2 in front for the second timeline, counting from the left of the tab row. The OSC appendix lists them all.
  14. When the show opens, each timeline does what it is set to: play, or hold until Go. Set it from the tab's right-click menu, or in Show for all of them. A timeline you add holds until you say otherwise, so a reopened show never starts something that was not running.
  15. On the Live screen the big GO, its Pause, Stop and skips, the keys (Tab for Go), Go to cue and the cue list all run one timeline: the master, until another is picked. Go to cue there fires only a cue picked by a click in the Live screen's own list. With several timelines each is a chip above the lanes on the Timelines tab, showing what it is doing; click one to draw it and run it from GO. The picked chip says GO, and the big button names it ("GO · Presenter"), so GO never runs a timeline the screen does not show. A cue with Bring to view ticked picks its timeline on shells that follow cues, and so moves GO to it too. A timeline's own window keeps its own transport bar, in Live mode as in Edit; in Live its Go reads GO · and the timeline's name, with no key, since the keys run the Live screen's timeline. A layer's owner badge names the timeline that drives it.
  16. Sent timecode. Timecode out is the master's position, counted from that timeline's own start. Set the start with the TC start button in the timeline's transport bar (or the tab's right-click menu, Timecode starts at…); Control shows which timeline is being sent and from where. It is the timeline's offset, for chasing too: a section that chases timecode answers to the timeline's TC start plus its place on the timeline, never to a timecode of its own. The section editor's TC start shows that timecode; typing one there moves the section to match. A show saved before this, whose sections each had their own timecode, takes its first chasing section's as the timeline's TC start when opened.
  17. Several cues at once. Click a cue to pick it, Cmd-click to add or take out another, Shift-click to pick every cue from the selected one to it; picked cues are edged in white. Drag any picked cue along the cue row and all of them move by the same time, landing on frames, as one undo step. The held cue snaps to the playhead, a section or clip edge, or a cue left behind; hold Option for no snap. Remove N cues… in the cue list, or the Delete key, removes them together after asking; a cue that is a jump or loop target is refused and stays. A right click on a cue offers Locate, Go to cue and Remove; a right click on the empty cue row adds a cue there or at the playhead, or picks every cue. With several cues picked the cue editor says how many, and a change there goes to all of them in one undo step: Then (Continue, Hold, the timecode and timeline locks; a jump or loop stays one cue's, since its target differs), the blackout and the recall, which replace each cue's own, and sends, transports and layer owners, added to or taken from every one. Fields the cues disagree on are marked mixed. Number, name and time stay each cue's own, though a time typed moves the group. Renumber gives the picked cues new numbers in time order, from a number and a step apart; it is refused, saying which, when a number belongs to a cue outside the group. Both menus end with Snap dragged cues, which turns snapping off or on for the session, and Remove all N cues…, which opens the timeline's Clear dialog with only the cues ticked.
  18. To say which timeline drives a layer, use the owner buttons on its strip. With several timelines the Timeline button carries a name; right-click it to pick another. In a timeline's own view a row reads dim when another timeline is driving that layer.
A cue's Sends
A cue's Sends. Cue 4 tells the Encore timeline to Play, as the cue list's Does column says too; + OSC, Add from library… and + Timeline add more, and Bring to view would turn the shells following cues to Encore.

A timeline in its own window

Right-click a timeline's tab and choose Open in its own window. It becomes a separate window you can put on another display, with the same view and the same controls, all acting on that timeline, while the main window goes on showing whatever you have it on. Close the window, or click its dimmed tab, to bring it back. A question a window asks is answered in that window; while it waits, the other windows say where it is open, with Show it, and a key pressed in any of them brings that window to the front rather than acting. Keys pressed in the window act on its timeline, in Live mode too.

To have those windows come back by themselves, tick Open them again at launch beside Windows of their own under Machine. Each timeline that had a window gets it again when the show is next opened on this machine, in the same place and at the same size. If the display it was on is no longer connected, the window still opens, at its size, wherever the system puts it. It is off unless you turn it on, so a window never reopens on a display that has since become the stage.

A timeline in its own window, in Live mode
A timeline in its own window, in Live mode. Encore's window keeps its own transport, its GO reading GO · Encore with no key, while the editing controls are greyed and the line at the top says Edits are off in Live mode.

A workspace in its own window

Any of the nine workspaces can have a window of its own too: right-click its tab in the main window's row and choose Open in its own window. The Layers strips can sit on one display and the Mappings canvas on another while the main window shows the timeline. The tab stays in the row with an arrow beside its name; clicking it, its Cmd digit or its line in the Window menu brings that window to the front. Close the window, or choose Bring back to the main window on the tab's menu, and the workspace is back in the main window, on screen. Keys pressed in the window act on what it shows, as they would on its tab, and a question it asks is answered there.

The main window shows whichever workspace is still in it; with all nine out it says so. In Live mode the windows stay open with an orange line across the top: the engine refuses their edits, as it does everywhere. Open them again at launch under Machine brings these windows back too, at the next launch whatever show is open, each where it was.

The tool windows

The Monitor (V), the DMX monitor (D), the OSC monitor (O), Messages (M), the set list (S), the keyframe editor and the large Colour wheel each open in a window of their own, so they can go past the edge of the main window or onto another display. They open and close as before, from their keys and the Window menu, come back where they were left, and stay open in Live mode. The keyframe editor edits the clip the timeline's inspector shows, and the Colour wheel serves the colour row whose Larger opened it, so each closes when what it serves is no longer drawn. The small questions that belong to what is picked in the main window (Hold, Duplicate region, the Live screen's closer look) stay in the main window.

Pin, at the top right of every window of its own (a timeline's, a workspace's, the Pixels windows and the tools), keeps that window above every other, the Live screen included. On the Mac a pinned window sits under the engine's full-screen outputs, so it never covers the show. The pin is remembered with the window. An unpinned window goes behind the main window when the main window is clicked; its key or the Window menu brings it back.

Bring all windows here (Window menu, or Shift-Cmd-W) brings every window of its own onto the screen the main window is on, out of the Dock, in a cascade from the top left, each shrunk to fit if it is larger than that screen; with the main window itself on no screen, everything goes to the main screen. It works in Live mode, as it moves windows only. Use it when a window was left on a projector that is switched off, or on a screen behind a KVM. A window whose screen is unplugged while the shell runs is brought back on its own, within a second. The engine's output windows are not moved: they are the show's.

Clearing the timeline, or one layer of it

Edit, Clear timeline… empties the timeline. A dialog asks first, with a tick each for the clips, the sections and the cues, so you can clear the clips and keep the cue list, say. The layers and who owns them stay, and one Undo brings everything back. To clear a single layer, right-click its row and choose Clear clips….

8

Running the show

  1. Press Shift-Cmd-S to enter Live mode. The screen changes to three columns: the show's state on the left, with the timecode, the sections, three tabs, Layers, Timelines and Set list, and the rasters' pictures; the operator's column in the middle, with the cue that fired, the one Go fires next and what each screen will show when it does (the engine renders the timeline GO runs at its next cue's time, a clip about to start shown by its first frame, so GO is never a surprise; with several timelines, it is the picked timeline's next cue), GO itself, the transport, the master and blackout, and the cue list; and the engine's health on the right. Nothing on this screen can change the show file, and anything that tries, from you, the desk or the network, is refused and says so in the status bar. In every workspace, Live mode greys each control that would edit the show, saying Edits are off in Live mode on hover: the cue list's buttons, the cue and clip editors, the DMX patch and Re-lay patch, the keyframe editor and the Manual Recalls inspector among them. What runs the show stays live: Locate, Go to cue, Send now, Fire, Copy and Playhead to clip.
  2. Tab is Go, the one button that moves the timeline on: it starts from a hold or a pause, lets a looping cue or section run on, and runs a section on its own clock while it waits for timecode. It never jumps to the next cue on its own: a hold cue stops there and Go carries on. There is no separate Play: Go is Play. Pause freezes where it is and Go resumes. Hold and Pause both stop the timeline and look alike, but mean different things: held (by a hold cue, Stop, a skip, or Hold sent from a desk, OSC or another timeline's cue) it stands by for the next Go; paused, a run is frozen in the middle. They differ in two places: held at the end of a section set to Loop clips until Go, or on a cue-by-cue timeline, the clips keep looping, where Pause freezes them; and on a cue-by-cue timeline Go after a hold fires the next cue at once, where Go after a pause carries on the wait where it stopped. On a stopped timeline Pause is greyed, since there is nothing to pause, and P does nothing there either; Go starts it (Space, set as a playback key, still starts it too). Stop goes back to the start of the section and holds there, so Go plays from it. The Skip pair moves to the previous or next cue and holds there without firing it, the cue standing by for the next Go; the Section pair moves to the start of this section (or, from there, the one before) and to the next section's start, holding the same way, for a run-through that jumps song by song. The cues at a start fire when the timeline plays from it, after Stop and when a show opens, so a cue at 00:00:00:00 that takes the layers works as one a frame later would. A hand used to playback software can switch Machine › This machine › Transport keys to Space and Tab: Space plays and pauses and Tab fires the next cue, while G stays Go. While you are typing in a text field, Tab moves to the next field instead, so a Tab typed into a cue name cannot fire a cue; Machine › This machine › Tab key can make it Go there too, for a hand that knows Tab only as Go. P pauses. ← and → skip to the previous or next cue and hold there. Home goes back to the top.
  3. B is blackout, every output at once. Press it again to restore. The Blackout button does the same, lit red while on (BLACKOUT ON): on the Live screen, on the Timeline's transport bar and on the Layers bar. A key held down acts once: only the arrows and [ ], which step, go on while held (Shift and an arrow, a cue, does not).
  4. The rasters' pictures under the layers are what the screens are showing. They keep the foot of the column however many layers there are: the rest scrolls above them, and dragging the line over them gives them more or less room. Anything wrong is spelt out in the health column, under the numbers. Above four rasters the row changes: the whole canvas as one strip with every raster where it sits, then one raster large, the one you click on the strip or on its chip, and beside it the rasters you watch (the eye on a chip, or a right-click on the strip), small. What you watch is remembered by this shell. The next-cue pictures in the middle column then show that one raster alone.
  5. The Layers tab shows a tile for each layer: who owns it, what it is showing, its opacity, play mode, speed and mapping. Filter beside the tabs hides layers you need not watch, as the Timeline's Rows menu does, with the same one-click filters by owner; this shell remembers the choice for the Live screen's Layers tab apart from the Timeline's and Layers'. The Timelines tab draws the timeline as the Timeline window does (a timeline in Cue list view is drawn as its list, with − and + greyed; right-click a timeline's chip to switch it), the sections, the cues and a row for each layer with its clips, but only to look at: nothing there scrubs, picks or moves anything. The playhead stays in the middle and the show runs under it; − and + beside the tabs show more or less time across, from ten seconds to half an hour. Its rows are the Timeline's as you set them there: the rows hidden in its Rows menu, its taller rows and its row groups, folded or open, so the Live screen shows what you arranged for the show. Clicking a group's header folds or unfolds it here and in the Timeline alike; renaming and removing groups are done in the Timeline. On this tab the menu beside the tabs is the Timeline's Rows menu, so a row hidden or shown here is hidden or shown there too. With more than one timeline, a strip of chips sits above the lanes, one for each timeline, the master first with its star. Each chip has a dot in the colour of what that timeline is doing (green playing, red holding, amber looping, grey stopped); hold the pointer on it for its timecode and cues, and click it to draw that timeline. Follow cues, beside the tabs, turns this shell to a timeline a cue brings to view (Bring to view on the cue's + Timeline line): the Timelines tab opens and draws it, and the Timeline tab shows it. Untick it to keep this shell where you put it; it is saved for this shell, and Setup has it too.
  6. Double-click a layer's tile for a closer look: every value the layer is showing, read-only, and the three owner buttons, so a layer can be taken by hand without leaving Live mode if the desk goes away. Nothing on screen changes when it is: see Taking a layer by hand.
  7. The column stays still whatever is in it: long cue names are cut to a line, and the space for the next-cue pictures is kept when there is no next cue, so GO never moves under the hand. In the cue list, a cue's number is coloured by what it does after it fires: red holds, green locks the timeline to timecode, amber releases a timecode lock, and blue is the one playing. Hold the pointer on it for the word, or on the name for the cue's actions.
  8. The row under the timecode is the sections: each with TC or free and its length. The one the playhead is in is lit, fills along its foot as it plays, and shows the time it has left. Click a section to see only its cues; all brings every cue back.
  9. Leaving Live mode asks you to confirm.
Live screen
Live screen. Timecode, sections and the layers on the left, with the rasters' pictures below; in the middle the current cue, the next with its time to go and what each raster will show at it, GO naming the timeline it runs, the transport, the master, Blackout and the sound; the engine's health and what has happened lately on the right.
The Timelines tab
The Timelines tab. LED Screens Demo drawn as the Timeline draws it, only to look at, with a chip for each timeline above the lanes; the picked one says GO, and the big GO names it.
A closer look
A closer look. A double-click on LED Screens 2's tile: every value it is showing, read-only, with the owner buttons to take it by hand without leaving Live mode.

The set list

A set list is the show's timelines in the order of one night, with note rows between them. It is a file of its own (.setlist.json), not part of the show, so it can be changed in Live mode too, and it has its own undo. The cues run the show; the set list is for the order, and for a hand when something fails.

  1. Press S (or Window, Set list) for its window. File has New, Open…, Save, Save As… and Close. The last set list opened or saved on this machine opens again at launch; Close leaves none. Undo and Redo (and Cmd-Z in the window) are the set list's own, not the show's.
  2. Add Row adds a timeline row at the bottom; Add Blank Row (notes) adds a note row. Each timeline row has its Timeline, its start Cue (Start, or one of that timeline's cues), Go to cue with its View tick, the timeline's own transport (◀, Stop, Pause, Play, ▶), its Timecode and Status, Notes, Skip and Delete. A timeline can be listed more than once, for a reprise.
  3. Go to cue takes the row's timeline to its start cue and plays it, and makes the row current (green, with ▶). With View ticked it brings that timeline to view, as a cue's Bring to view does. ◀ and ▶ skip back and on: playing, to the cue before or after and on; otherwise there, holding. Stop twice resets the timeline to its start.
  4. Skip passes a row over (drawn orange-red). A row whose timeline or cue the show does not have is drawn red and passed over, never dropped. Delete takes the row at once, with no question; Cmd-Z brings it back.
  5. Move a row by Option-dragging its ≡, a line showing where it will land, or double-click its number and type a new place. Follow current keeps the current row in view.
  6. Cues aimed at the set list. On a cue's Sends tab, a + Timeline line can name Next in set list or Previous in set list in place of a timeline. When the cue fires, the next or previous row from the current one is found, past skipped rows, note rows and rows the show does not have, and its timeline is told what the line says; a Go to cue there goes to the row's start cue. That row becomes current. So the last cue of each song can be a Go to cue to the next in the set list, and the first cue of each a Reset to the previous one: reorder or skip rows during the show and no cue changes. Past either end, or with no current row, the cue does nothing and the set list says why.
  7. A timeline started another way (its tab, the Live screen, a desk, OSC, a cue naming it) makes its row current only when that row is the next one. Otherwise the current row stays, and the band and the set list say not following; a row's Go to cue puts it right.
  8. The Live screen's Set list tab shows the same rows, with ◀ Previous row and Next row ▶ to go to cue and play on the row before or after the current one. The order, Skip and the row controls work there; timelines, cues, notes and rows to add or delete are changed in the window.
  9. A backup engine keeps the leader's set list and current row, so if it takes over, the next cue goes to the same row. OSC: /setlist/row/N/go, /setlist/row/N/skip, /setlist/next and /setlist/previous (see the OSC appendix).

A backup engine

A second machine can stand behind the first. Under Machine › Backup, set the show machine to Leads with the backup's address, and the backup to Follows with the leader's (typed, or picked with Found… from the engines found on the network); both are machine settings, saved at once. Alone, Leads and Follows are set in Edit mode (greyed in Live), and on an engine that is part of a pair a change asks first. A following engine refuses Rescan: its media is the leader's. The backup then follows the leader over the network: the same show, edits as they happen, the same playhead within a frame, the same owners, blackout and faders, so its outputs carry the same picture as the leader's and the screens can be switched to it whole. While it follows it obeys only the leader: its own OSC and shell commands are refused, LTC is read but not chased, and cue sends go out from the leader alone; DMX it reads as ever. The band on a following engine says following and its address; Machine says whether it is in step and by how many frames, what the leader's licence is (a follower runs on it, since a licence is per show), and which files the leader's show needs that this machine has not got.

If the leader is lost, the backup goes live on its own: at once when the leader's connection closes, within two seconds when it stops answering. The band turns to BACKUP LIVE, its playhead runs on from where it was, its own inputs take effect. A shell that was on the leader turns to the backup by itself and shows a red banner saying when. If the backup is still following, because the leader only went quiet for a moment (a laptop's sleep, a cable's flap), the shell waits on it for the backup to go live or the leader to answer, and goes back to the leader if it does; the banner shows once the backup is live. The picture path is switched outside Enzyme, on the processor's backup input or a matrix, or by a device command; NDI outputs switch by themselves, since the leader names the backup's copy of each source as its failover and NDI receivers move to it when the leader disappears. A leader that comes back does not take over: whoever is live leads, and at a quiet moment you press Follow the leader again on the backup's Machine tab, which takes the leader's state as it comes. Take over now…, on the backup's Machine tab while it follows, makes it live without waiting, for a leader that is up but wrong. It asks first. Whenever the backup goes live, the leader is told and stands down: it holds its cues' OSC, device commands, timecode out and pixel maps, so the desk gets each cue once, and its band says BACKUP LIVE, STOOD DOWN; its pictures stay on its outputs. It sends again when the backup follows again, or goes, or is not heard for three seconds, or when you press Take the show back… on its Machine tab, which asks first because both engines then send and the desk gets every cue twice; its band then says BACKUP LIVE TOO. When the leader saves the show, the backup saves its copy over its own file of the same name, so a cold start on the backup opens the right show; where its file has another name it writes nothing and says so on the band.

A backup gone live. The band says BACKUP LIVE, and the Backup block on Machine says since when and offers Follow the leader again (greyed, saying why, while the leader cannot be reached or refuses this engine). Any files the leader's show needs that this machine lacks are listed there too.
9

Control from a lighting desk

A lighting desk talks to Enzyme over the network using Art-Net or sACN, the same way it talks to a moving light. Each layer looks to the desk like a fixture with channels for clip, play mode, speed, opacity, position, size, colour and so on. Whoever programs the desk needs the patch, which is on the Control workspace (Cmd-7): the universe and start address of every layer.

Control
Control. The DMX patch on the left, a row a fixture with its universe, address, mode and channels (Encore's transport not patched yet), with Timecode in and out below it; OSC with its cue send destinations, and Devices, on the right.

Changing the patch

  1. Every row of the patch has its Universe and Address as fields. Type a number and press Return, or drag the field. The change is sent when you leave the field, as one edit that Undo takes back.
  2. A change that cannot be is not sent, and the row says why in red: a fixture that would run past channel 512, or one that would overlap another, named.
  3. Mode says how many channels the desk gives a fixture. Full sends every value at 16 bits: 144 channels a layer, three to a universe. Standard (called Mixed before October 2026; shows and desks patched as Mixed carry on unchanged) keeps 16 bits only where it shows (position, scale, rotation, speed, opacity, transition time, bank and tile, and generator and effect values) and sends everything else at 8: 102 channels, four layers to a universe with the Show and Transport fixtures. Basic carries only what a desk drives in a show (the clip, how it plays, where it sits, its size and angle, opacity, colour, blend, a transition and a generator with four values): 39 channels; crop, mask, key, blur, LUT, audio, the effect and cue points are then off from the desk. In Full and Standard the bank and tile are 16 bits and reach 1 to 999; in Basic they are 8 bits, so a Basic desk reaches banks and tiles 1 to 255, and while any layer is patched in Basic, Media fades the tiles past that (they still play from a strip or a clip). Changing a mode moves nothing else: re-patch the desk to match. Every fixture starts in Full.
  4. A layer has two more modes, Full Extended (189 channels, two to a universe) and Standard Extended (147, three to a universe with the Show and Transport fixtures). Each is its base mode exactly as it is, then 45 channels after its last: the generator's and the effect's values 9 to 16, at 16 bits, and a colour block. Moving a layer from Standard to Standard Extended keeps its address and every channel the desk already drives; it only grows. The colour block is Colour from (8 bits: RGB, HSI or XY), then Hue, Saturation and HSI intensity, then Colour x, Colour y and XY intensity. With Colour from on RGB (where it starts) the layer's colour is its red, green and blue gains, as in every mode: half travel is normal, full doubles. On HSI or XY the colour comes from those channels instead and the RGB channels are set aside until Colour from is RGB again; the intensities are half travel for normal too, so they can boost. Export GDTF names Hue, Saturation and Intensity as the standard HSB attributes and x, y and Intensity as the standard CIE ones, so a desk that knows them (grandMA3 does) can drive the layer from its colour picker. A point outside the Rec. 709 triangle is brought in to its edge.
  5. + Recall fixture patches the show's one recall fixture at the first free block, in five channels: bank and tile at 16 bits, a trigger at 8 that fires the recall on reaching full from nought (see Manual recalls). It is greyed once patched; its address is in the table like any other.
  6. Re-lay patch… puts the patched layers back in the usual layout: Show at 1, then Transport, then the layers in their current order, each straight after the last. Every fixture keeps its mode. It asks first: the desk's patch has to be changed to match.
  7. Unpatch… on a layer's row, once you confirm, takes it out of the patch, for a layer the desk should never touch. The desk can no longer reach it, and DMX is greyed out as its owner on its strip, in the Live screen's closer look and in every cue's ownership list. If DMX was driving it, it is taken by hand, and cues that handed it to DMX lose that action. One Undo brings all of it back.
  8. Layers that are out of the patch are listed under it as not patched, each with Patch to put it back at the first free block.

The DMX monitor

The DMX monitor (D, or from the band) is a window of its own, and read-only. Its OSC counterpart, the OSC monitor (O), is described with the OSC addresses at the end of this guide. Received shows what the desk sends to the selected layer: each channel of its fixture by name, the raw value and what it means, with the universe, protocol, sender and packet count above. Sent shows what a pixel map puts on the wire: pick the map when there are several and a universe, and its 512 channels are laid out sixteen a row as the engine last sent them, a few times a second. Hover a value for its channel, fixture and byte ("Pixel 3 R", "Shutter1"); held channels are green, the master dimmer orange, and channels let go, gaps in a GDTF block and channels with no fixture dim. The line above says whether the map is on the air, by which protocol, to where, how many universes and how many frames a second; a map that cannot send says why.

For a layer to follow the desk, its owner has to be DMX. Set that at the foot of the strip in Layers, or let a cue do it. If the desk stops sending, Enzyme holds the last values it had rather than going dark.

Clips are dialled on the desk by bank and tile number, which is why the numbers are shown everywhere in Media. Play modes are numbered too: 0 Stop, 1 Play, 2 Loop, 3 Pause, 4 Skip to end, 5 Scrub, 6 Play retrigger, 7 Loop retrigger, 8 Timecode. Export GDTF in the patch block writes the layer personality as a GDTF file: the full channel list, in the form a desk imports. In Full a layer is 144 channels, so three layers fit a universe; with every layer in Full the conventional patch puts layer 1 at 65, layer 2 at 209 and layer 3 at 353, and Re-lay patch in Control lays the fixtures out again one after another, each in the mode it has, so a layer in Standard or Basic brings the ones after it forward. Every channel of every mode is listed in DMX personality.md in the build's docs folder, and Export GDTF carries all five modes (Full, Standard, Basic, Full Extended and Standard Extended). A show saved before version 2 has its patch laid again when it opens, and the shell says so: repatch the desk to match. Version 3 (October 2026) turns Rotation (channel slot 24) into any angle, −180 to 180 degrees with upright at the middle of the fader, and gives the last spare slot to Scale, the whole size, which Aspect X and Aspect Y then multiply: Full and Mixed keep their sizes, and Basic grows to 39 channels, so a patch of Basic layers packed one after another is laid again. Version 4 (6 October 2026) gives Scale, Aspect X and Aspect Y a range of −1000% to +1000%, with 100% at the middle of the fader in 8 and 16 bits; below the middle shrinks the picture, through nothing, to a mirror image. Version 7 (7 October 2026) puts the six bank and tile channels (media, generator and effect) at 16 bits in Mixed, so a Mixed desk reaches banks and tiles to 999: a Mixed layer grows from 96 to 102 channels, so a patch of Mixed layers packed one after another is laid again when the show opens, each fixture keeping its mode, and Enzyme says so. Export the GDTF file again and re-patch the desk. Full and Basic keep their sizes.

Timecode from a sound department comes in as LTC on an audio input. Under Timecode in Control, tick Read timecode, leave the Source on LTC, and pick the Input (the engine machine's own audio inputs, with their channel counts) and the Channel; it starts at once, without a restart, and the choice is kept on the engine's machine. A level meter under the timecode shows the input whether or not it decodes, coloured by the lock: green locked, orange locking or freewheeling, grey with no lock. A level with no lock is the wrong channel, or not timecode; LTC is usually sent around the mark at -20 dBFS. --ltc on the command line still chooses an input for one run, and Control says so until a choice there replaces it. When timecode is present the top strip shows it, and a timeline locks to it as its sections and cues say (Running free, and locking to timecode). Enzyme can send timecode too: under Timecode out in Control, tick Send LTC, pick the audio output and set the level, and the show's position goes out as LTC for a sound or lighting desk to chase. It runs with the timeline and jumps with a locate or a Go. While the timeline is stopped, paused or holding it sends silence, so a desk chasing it stops rather than sitting on a frame. The meter under the level shows what is going out, and the level can be moved while it runs without a break in the code. The choice is kept on the engine's machine. If the input's interface is unplugged or lost mid-show, the engine says so under Timecode and reads from it again within a few seconds of its return; LTC out on a device of its own does the same.

Timecode can travel on the show network instead, as Art-Net timecode, which grandMA, Hog and most timecode generators send. Set the Source to Art-Net: the engine listens on the interface and Art-Net port under Network, whether or not DMX in is on, and a timeline locks to it exactly as to LTC, with the same meter, lock colours and loss settings. It follows one sender at a time, the first it hears, until that one has been quiet for a second, and one Stream of it: Art-Net 4 lets a sender send several timecode streams, each numbered 0 to 255, and 0, the master stream, is the one a sender without streams sends. Set Stream to follow another. To send it, tick Send Art-Net timecode under Timecode out: the same position as LTC out goes out once a frame, broadcast on that interface to the Art-Net port (with no interface chosen, on every card's broadcast), and nothing while the timeline is stopped; its Stream is the number it goes out as, 0 unless a receiver is set to another. Either can go out without the other. Art-Net timecode counts at 24, 25, 29.97 drop frame or 30, so a show counting at 50, 59.94 or 60 sends at half its rate. LTC from a Dante or AVB network needs no setting of its own: it arrives as an audio input, and is read as LTC.

Anything that speaks OSC can run the show and ask for its status: every address, and what a surface gets when it subscribes, is in the OSC appendix. Under Control, OSC, Loopback test sends a message round to the engine's own port and shows how long the reply took, which proves the port is open and finds a firewall; Send /enzyme/test sends a test message to every cue send destination, so a receiver can be checked before the show.

The DMX monitor
The DMX monitor (D), a window of its own. Received, for LED Screens 1: each channel of its fixture by name, the raw value and what it means (no data yet here: this engine's DMX in is off); Sent shows what a pixel map puts on the wire.

Outboard devices

A cue can also tell a matrix, a switcher or a processor to switch, so the picture path follows the show without a hand on a front panel. Under Control, Devices, add the device: a name, its address and port, UDP or TCP, and its protocol, which is only the framing Enzyme puts around what you type: Lightware LW3, RossTalk, Blackmagic Videohub, Extron SIS, Kramer Protocol 3000, tvONE CORIOmaster, tvONE CORIO2, or Raw for anything else that takes a line of text. Add common commands fills in a family's starter set from its manufacturer's command reference, for Lightware LW3 (the /MEDIA/XP/VIDEO tree of MX and MX2 matrices, or the /MEDIA/VIDEO/XP tree of newer devices), tvONE CORIOmaster, tvONE CORIO2 (the C2 series) and Blackmagic Videohub: the inputs, outputs, presets and windows in them are examples to change, commands the device has by name already stay as they are, and it sets the protocol and the family's port (6107 for LW3, 10001 for a CORIOmaster or a C2, 9990 for a Videohub). A CORIO2 command is a function and a value as tvONE's tables give them, 225 = 3 to choose preset 3 or 082? to ask a window's source, with window B or output 1 in front when one is meant; Enzyme makes the checksummed packet, and several go in one command with ; between them (225 = 3; 226 = 1 loads preset 3), each answered before the next goes; a C2 takes one connection at a time, so Enzyme lets go of it after each command, and a timeout means another controller (CORIOtools, another engine) has it. A Videohub counts inputs and outputs from 0, so VIDEO OUTPUT ROUTING:\n0 1 sends input 2 to output 1. On connect, for a TCP device, is sent each time the connection opens, before anything else: a CORIOmaster's login, login(admin,adminpw) from the factory, which the set fills in. Under it, add the commands as the manufacturer's manual gives them, each with a name you will recognise in a cue list ("main", "backup"); write \r, \n or \xHH for a control character the field cannot hold. Send beside a command sends it now, and the device's reply, or the reason it could not be reached, goes in the change log and is shown under the device. In a cue, + Device on the Send row picks a device and one of its commands, and the cue sends it when it fires. Sending never waits for the device: a switcher that is off or unplugged costs a line in the log, not a late frame.

Commands for other show equipment

A cue can run the lighting desk, the playback machine and the button surface too, by OSC. On a cue's Sends tab, Add from library… opens starter commands for grandMA3, Hog 4 and Hog 5, the ETC Eos family, QLab 5, Bitfocus Companion and Resolume Arena 7, every one taken from its maker's own documentation. Pick the family, and under it what to turn on at the console and where the commands go: the show's OSC destination for that family, found by its name (a destination called "MA3 FOH" or "Hog4" is taken for its family) or, failing that, the only one on the family's port. With none, Add … at 127.0.0.1 adds one on this machine at the family's port, to repoint at the console under Control, OSC. A click on a command adds it to the cue as an OSC send with its address and arguments, to edit like any other: the sequences, cues, faders and buttons in it are examples. Send tries it at once.

FamilyPortTurn on at the other endSource
grandMA38000 UDPMenu, In & Out, OSC: Enable Input, and on the line with this port set Receive and Receive Command to Yes. A Prefix there goes in front of every address (/gma3/cmd). Commands go as one string to /cmd; faders are 0 to 100.grandMA3 User Manual 2.5: OSC, OSC Advanced Examples, SendOSC and the keyword pages; the port is from its QLab page.
Hog 4 and Hog 57001 UDPSetup, Network, right-click the console, Settings: in the Open Sound Control pane tick OSC In with its port. A goto is list.cue as one number (15.2); a key is 1 down and 0 up, so send both; faders are 0 to 255. Master faders by number are in the 5.3 manual only. Hog 5 changed no playback address.Hog OS User Manual 5.3.0, chapter 22 (the same playback addresses in Hog 4 4.2.1); the port is ETC's recommendation in its iHog OSC articles.
ETC Eos family8000 UDPSetup, System, Show Control, OSC: OSC RX on and OSC UDP RX Port 8000. On a console, also ECU, Settings, Network, Interface Protocols: UDP Strings & OSC. Levels are 0 to 1; a command line ends with #.Eos Family v3.3.10 User Manual: OSC Dictionary, OSC Conventions, OSC Setup, Show Control settings.
QLab 553000 UDPWorkspace Settings, Network, OSC Access: keep OSC access on and tick Control in the No Passcode row, off in a new workspace. Or keep a passcode and send Connect with it before the other commands; QLab forgets a sender after 61 seconds of silence. A cue number goes as text.QLab 5 OSC Dictionary and Workspace Settings.
Bitfocus Companion12321 UDPSettings, Protocols, OSC: tick OSC Listener. A button is its page, row and column.Companion user guide 5.1, OSC Control.
Resolume Arena 77000 UDPPreferences, OSC: turn on OSC input. Shortcuts, Edit OSC, then a click on any control, shows its address and type. Values are 0 to 1 of a control's range.Resolume manual 7.18, OSC.

What the makers' pages do not show is left out rather than guessed: a grand master level for grandMA3 or Eos, a list's Back by number on a Hog (its master's Back key is there instead), and triggering a Resolume clip or column, whose argument the manual does not give (Edit OSC in Arena shows it). Try each command on the real console before the show.

A MIDI surface

A MIDI fader box, pad controller or Mackie-style surface can drive Enzyme through Enzyme MIDI.app, in the build folder. It turns the surface's controls into Enzyme's OSC and lights the surface from what the engine reports, motor faders included. The engine's OSC input must be on. The Enzyme MIDI Guide, in docs beside this one, covers it in full; the steps below are the short way.

  1. Open it. Under Devices, pick the surface's input, and its output for lights and faders.
  2. Press + Mapping and move a fader or press a key: the row learns the control. Type what it sends under Sends: /layer/1/opacity $v for a fader, with its Range; /transport/go for a key.
  3. Save the mapping file. It runs as you edit, and opens again the next time.

Feedback says whether a light shows the engine's own state (engine) or only the last value the surface sent (echo). A fader on a layer moves nothing until that layer is Manual; the row says so.

Other devices. A row's To can be one of the show's OSC destinations (Control, OSC out) instead of Enzyme: a fader on a desk's master, a key for QLab's GO. Enzyme MIDI reads them from Enzyme through Enzyme control (Enzyme's address with port 9200, and its control key if it has one) and sends straight to the device, so the surface still reaches the desk with Enzyme closed. A row can also send one of an outboard device's commands, which Enzyme sends for it. The machine running Enzyme MIDI must reach the device itself.

10

Generators

A generator is a picture Enzyme draws itself rather than plays from a file: colour bars, a solid colour, a gradient, and a set of shader effects such as noise, cells and smoke. They are chosen exactly like clips, under Generator on a strip, folder then file, and they appear in Media under the Generators tab. A generator's time runs with the layer, so put the layer in Play or Loop to see it move.

Each generator has up to sixteen adjustable values in the folded GENERATOR section, under the strip's file pickers, the first eight always in view and 9 to 16 under More values. Each starts at the tile's own setting and reads in the generator's units (pixels, degrees, per cent); move it and the layer has its own, and ↺ beside it gives it back to the tile. A desk does the same with its channel: zero is the tile's own, anything above zero overrides it. Tick sweep beside a value and it runs between a from and a to value over a period, looping, bouncing or once, at the layer's clock: Pause freezes it, speed and direction scale it, and Timecode locks it. When you capture the layer into the timeline the sweeps go with it.

Generators
Generators. The generator families built in (test patterns, colours, gradients, text, a timecode readout, a clock, a countdown, pixel ID and sync), then the shader banks found in the generator folders, each a bank of tiles dialled as clips are.

Keying a layer

A strip's mask and key controls take part of a layer's picture away. Luma takes out the dark: Threshold is how bright a pixel must be to stay. Chroma takes out one colour, for a green or blue screen: Hue is the colour, in degrees round the colour wheel (120° green, 240° blue), with a swatch beside it showing what is being taken out and Green screen and Blue screen to set it at a click; Threshold is how far from that hue a colour may be and still go, and Softness how gradually the edge falls off. Greys and near-greys are never keyed out, whatever their hue. A desk sets the same with the layer's Key mode and Key hue channels. Over OSC it is /layer/N/key_mode off, luma or chroma (or 0 to 2, as the desk counts them) and /layer/N/key_hue in degrees; the blend is /layer/N/blend normal, add, screen or multiply (or 0 to 3). Like every OSC layer setting, they act on a layer whose owner is Manual.

Effects on a layer

The generator on a strip runs first, with the layer's clip as its input, before any of the layer's controls. An effect is a second generator that runs on the layer's finished picture instead: after colour, key and mask, before the picture is placed on the screen. Pick one under Effect, folder then file, below the Generator pickers on a strip or in a clip's settings. The vidvox-isf bank shipped with the build (bank 11, so a desk can dial it) holds sixteen filters made for it, on tiles 1 to 16, and five transitions on 101 to 105. The filters: bump distortion, chromatic aberration, colour control, duotone, kaleidoscope, pixellate, posterize, sepia tone, twirl, vignette, fast blur, bloom, glow, sharpen, and two that trail, echo trace and long exposure. A trail builds while the layer plays and starts clean whenever the layer jumps: a locate, a scrub, or a cue away from the next. An EFFECT section then appears on the strip after mask, key and blur with the effect's own values and sweeps, and Copy and Paste carry it as its own group. A generator or an effect has up to sixteen values: the first eight as they always were, and a family with more shows 9 to 16 under More values. An ISF file's first sixteen inputs become values; a show saved before there were sixteen opens with the new ones at the family's defaults, so its picture is unchanged. Only layers with an effect pay for one. A lighting desk selects it by folder and file and drives its values on the layer's channels 121 to 140.

Transitions between clips

How a layer goes from one picture to the next is the TRANSITION section on the strip, after the effect (the sound's level, bus and pitch come last), in a clip's settings, and on the desk (slots 18 and 19): a cut, a dissolve, a dip to black, or a generator transition, over the Time. Type the time in any mix of hours, minutes, seconds and frames, largest first: 12f, 2s, 2s 12f, 1m 30s, 1h; seconds may have a decimal point (1.5s), frames may run past a second (50f), a number alone is seconds, or type a timecode (00:00:02:12). It is shown back in the same units. From a desk the Time is a channel value, as before. For the last, pick a transition tile from the generator bank: the shipped vidvox-isf bank has Circle Open, Cube, Directional Wipe, Dreamy Zoom and Ripple Transition, and bank 14 has sixty more from gl-transitions on tiles 1 to 60 (17 is Screen Melt), with 061 Key Movie Transition, and any ISF transition file (one with startImage, endImage and progress) dropped into a generator folder becomes one; a tile that is not a transition dissolves instead, and the section says so. Under the tile are the transition's own values for this layer or clip, as an effect's are: a value left at the tile's own shows it, ↺ hands a changed one back, and progress is the transition's and not shown. A transition that takes a picture of its own, such as 14/061 Key Movie Transition's key movie, picks it there from the media bank: a clip plays at the incoming clip's time, looping. The incoming picture's setting is the one used, and a cut, or a time of nought, is a cut.

Throughout, the outgoing picture keeps its own place, size, colour and mapping, so a full-screen clip dissolves into a corner logo as the two of them are, rather than the old one jumping into the corner first. (A layer with an effect or a content canvas draws both pictures with the incoming one's settings.)

Text, readouts and pixel ID

Five built-in families draw in block letters: Text shows the words typed into its tile (select the tile in Media and type in its Text field; Duplicate tile makes another to hold different words); Timecode readout shows the show's position; Clock the time of day; Countdown counts down from the seconds in its first value over the clip's time, so it starts when the clip does; and Pixel ID draws a grid with every cell labelled by its pixel coordinates, with a border and a centre cross, for lining up a wall or a projector. Each has values for size, place, colour and a box behind the letters, adjustable on the strip like any generator.

The examples shipped with the build live in the demo-generators folder. Someone who writes shaders can add their own by dropping ISF files into a folder called generators beside the app, into the generators folder of a project (found beside its media on its own), or into any folder added under Show, Generator folders. The folders are saved with the show, as its content folders are; a show opened on a machine where a folder is not at that path lists its families as not loaded until the folder is added again. Single-pass, multi-pass and feedback ISF play, with a custom vertex shader (a .vs beside the .fs) when the shader has one; what cannot play (audio, bundled images) is counted in red under the folders, on a line that unfolds to name each with its reason (hover a reason for the compiler's whole message), and the families that loaded are counted on another that unfolds to list them. A file saved into a generator folder is picked up on its own within a second or two, and Reload generators on the Show tab does it at once. A file renamed with its numbers kept (017 Doom Screen Transition.fs to 017 Screen Melt.fs) takes over its old tile when the old file has gone, so whatever used that tile plays the renamed file; the old tile is kept, counted as "without a tile" beside Rescan in Media. A tile whose shader still loads is never taken over: a new file wanting its number is reported as a clash instead. In Live mode a change on disk (a file saved, or synced in by Dropbox) waits: a notice says so, and it loads when the show leaves Live mode, so no generator is compiled again mid-show.

A shader that takes other pictures

Some generators and effects take a picture beside the layer's own: a mask, a logo, a second clip to mix or distort with. On the strip (and in a clip's settings) such an input shows as a tile picker among the generator's or the effect's values, not a slider. Pick any tile of Media: a clip, a live input, or a tile of bank 0, which is another layer's picture or a region's (below). That last is how one layer masks or keys another: put the shader on the layer to be masked and choose the masking layer's tile for its mask.

A layer or a region as a source: bank 0

A layer can take its picture from another layer, or from a region, and treat it as its own clip: recolour it, rescale it, put an effect on it, map it somewhere else. That is how a relay screen shows the main screen's content in its own colour, or a ceiling follows the wall. These sources live in bank 0 of Media, Layers and regions, and are chosen like any tile: on a strip or a clip pick bank 0 and a tile, or dial bank 0 and the tile from a desk.

TileTakesWhen
1 to 50A layer's Source: tile 7 is layer 7. Its clip or live input, or its generator's picture when it has one, with none of that layer's effect, colour, position or scale.The same frame, exactly in step: it is the same decoded frame, shared.
51 to 100A layer's Output: tile 57 is layer 7. The layer at the end of its chain, with its effect, colour, key, mask, position and scale.One frame late.
110 to 255A region: 100 + raster × 10 + region. Tile 120 is the whole of raster 2 (its regions laid flat at their places), tile 123 its region numbered 3. Each region's number is shown at the start of its row under Regions and on its canvas label ("Panel · 0/123"). Everything that lands on the region, as composed.One frame late.
11

Saving, quitting, reopening

12

When something looks wrong

Messages (M, or Window, Messages) keeps everything Enzyme has told you this run, so nothing shown for a moment is lost: the engine's notices (saved, not saved, licence, backup), every command refused with its reason (from any shell, OSC or a desk), and faults that once went only to the log files, such as an OSC receiver or LTC input that would not start, an OSC send that failed, a device that did not answer, a file that would not decode, a raster with no presenter, a network-health check turning bad, the backup going live. Each line has the time, Error, Warning or Info, and where it came from; tick the levels and pick a source to narrow it, search, Pause to read while new ones wait, and Copy the lines shown to send with a report. A message said again stays one line, moved up to the newest place, with an orange count (×12) beside it. A line that names a page (Control, IO, Media and so on) opens it when clicked. The engine keeps the last 2000 of its run and gives them all to a shell that connects, so a shell opened later still sees what happened. Two more tabs show the Engine log and This shell's log as they are written, the last 3000 lines of each.

Errors you have not yet seen are counted in the top strip as a red errors unread button; warnings are kept in Messages but not counted. Click it, or press M, and the count clears. A refusal or a notice in the top strip now stays up for 30 seconds, and clicking it opens Messages too.

Messages
Messages (M), a window of its own: every notice, refusal and fault this run, by level and by source, with search, Pause, Copy and Clear, and the engine's and this shell's logs on their tabs.
Engine lost
Engine lost. The engine stopped answering: the red band names it, how long ago and why, with its address, Retry now and Found engines. The screen below stays as the engine last sent it, greyed, and nothing on it works until an engine answers.
You seeIt meansDo this
ENZYME EVALUATION on the picture, moving every few secondsNo licence installed on this machine.Machine shows the machine id. Send it to get a licence file, then Install licence file… in Machine.
"Sends stop in 5 min", then SENDS HELD, in the top stripWithout a licence, Enzyme sends to other machines (cue and recall OSC, device commands, timecode out, Enzyme MIDI's sends) for 30 minutes each time the engine starts, counted from the first send. Sends to this machine, such as a desk simulator or Companion on the same computer, always go. The OSC monitor's Sent tab lists each held message as "held".Restart the engine for another 30 minutes, or install a licence.
A red warning count in the top stripSomething is missing or refused.Open Show: under the self-test list every missing item is named with the reason, for example a clip whose file moved or a generator bank left from an older build.
The picture on the screen is darker and richer than it was in a build before 1 October 2026Earlier builds sent every display window too bright: mid tones were lifted, so the screen looked washed out next to the same picture in the shell, on NDI or in the source file. That is fixed, and the screen now matches them.If you had turned a raster's brightness or gamma down to compensate, set them back (0 and 1.0) and judge again.
"late" with a number in the top stripThe drive or machine could not decode frames in time; the last frame stayed up.Occasional is fine. Constant means the drive is too slow or too many big clips are playing; move content to a faster drive.
A red "errors unread" button in the top stripSomething failed since you last looked at Messages.Click it, or press M. Each error is listed with what said it; clicking a line that names a page opens it.
An amber "refused" line in the top stripYou are in Live mode, or the action would break something.Read the reason. It stays for 30 seconds, and Messages (M) keeps it with every other. Leave Live mode if you meant to edit.
A clip tile with no picture, or a strip saying "missing"The file is not where the show expects.Show › Content folders: Change location… beside the folder, or the Media Inbox's suggestion. Nothing renumbers.
A red ENGINE LOST band over a greyed screenThe engine the shell was on has stopped answering. The screen below is as it last was, and nothing on it can be used.The shell tries again every second (Retry now at once); the band names the engine and how long ago it went, and Found engines turns to another. On a pair, a shell turns to the backup by itself when it goes live.
The shell shows its connect pageIt has never reached an engine this run, or it is turning to a backup.Launch the app; or type the engine's address if it runs elsewhere.
Something elseMachine → Diagnostics bundle… makes one zip with the logs, the show and the machine details. Send that with a description of what you did.
Show
Show. The show file with Save, Open, New project and Revert to backup, autosave, its name and rates, what each timeline does at start, content and generator folders, audio out, the self-test list and the change log.
Machine
Machine. This shell and this engine: the engine's name and address, who may connect, preview rate, render clock, skin, interface size, help text, keys and language, the backup's part, the network interfaces, bind and ports, the NDI card, the licence, the log and the diagnostics bundle, and network health. This machine's network address and machine id are blanked here.

Network health

The Machine tab has a Network health list: the engine's own reading of the network it is on, worst first. A red dot is a fault, an amber one a warning, a hollow one something not yet judged, and the checks that are good are named together at the foot. Each line says what was seen, and under a fault or a warning, what to do. Lines with a measure (loss, stalls, load, a machine's reply time) keep the last hour and state its worst, because a network that is fine now and was not ten minutes ago is the one to worry about. Every change of state is written to the log with its time, and the diagnostics bundle carries the whole list.

The list ends by saying what it cannot see: the switches' own settings, flooding to other ports, duplicate addresses, NDI's dropped frames. A clean list is not a clean network.

13

Keys on one page

On Windows, Cmd is Ctrl and Option is Alt. Help, Keyboard shortcuts… in the shell shows the same list, with Go, Tab and Space as that shell's Transport keys have them.

Cmd-1 – Cmd-9Workspaces, in order: Timeline, Layers, Media, Mappings, Video, Pixels, Control, Show, Machine Shift-Cmd-SLive mode on and off Tab or GGo (with Space and Tab as the Transport keys: G; Tab is then the next cue, and play on from it) PPause; Go resumes SpaceNothing, unless Machine's Transport keys says Space and Tab: then play and pause, and play from a stop ← →Previous or next cue, and hold there Shift-← Shift-→Previous or next cue, and play on from it Option-, Option-.This section's start (then the one before), or the next section's start, and hold there; with Shift, play on from there Option-← Option-→The playhead back or on a frame, ten with Shift, snapping to nothing HomeBack to the start of the timeline Stop, double-clickedReset: back to the start of the timeline, holding there (Stop once: the start of this section) BBlackout CAdd a cue at the playhead (Timeline) [ ]Playhead to the previous or next edge: a clip, a section or a cue (Timeline) Cmd-← Cmd-→Nudge what is picked a frame, ten with Shift (Timeline) Option-↑ Option-↓Move the picked clips a row up or down (Timeline)
Cmd-click, Shift-clickPick several clips or cues (Timeline) Option-clickPeek: on the ruler, what the screens would show at that time; on a track or a clip, that layer's output (Timeline) Delete or BackspaceRemove the picked clips or cues, asking first (Timeline) Cmd-C X VCopy, cut and paste clips; Shift-Cmd-V pastes settings (Timeline) Cmd-APick every tile of the bank in view; Esc drops the group (Media) Cmd-ZUndo; Shift-Cmd-Z redo Cmd-SSave Cmd-OOpen Shift-Cmd-OOpen project Cmd-NNew project Cmd-QQuit, with a choice DShow or hide the DMX monitor OShow or hide the OSC monitor MShow or hide Messages: every notice, refusal and fault, and the logs VShow or hide the Monitor window with the content canvas SShow or hide the set list Shift-Cmd-WBring every window of its own to the main window's screen Cmd + · Cmd − · Cmd 0Interface size larger, smaller, back to 100% EscClose a dialog or menu; on a full-screen region window, back to a window F · Shift-Option-UOn a region window: fill its display · open the shell
Appendix

OSC: every address

Enzyme listens for OSC over UDP. The Control workspace shows the address and port it is listening on (9000 unless the engine was started on another) and lists the last messages that arrived, which is the quickest way to see whether yours are getting there. A number can be sent as an integer or a float. An address Enzyme does not know is ignored and shows in that list.

A card each. Art-Net, sACN and OSC in each have their own card under Machine, Bind and ports: the desk's Art-Net on the lighting network and OSC on the production one, or all three on one card. A card not on the machine now shows as not on this machine now. Its receiver is tried again each second and starts by itself when the card comes up, so a switch powered after the media server needs no restart. A program on the same machine (Enzyme MIDI, Companion, QLab) reaches OSC in at 127.0.0.1 while OSC listens on every interface; on one card, send to that card's own address.

Two networks. Enzyme can listen on a second network card as well, for a desk on the lighting network and a tablet or Companion on the production one: Machine, Bind and ports, tick Second OSC in, choose the card and a port, and press Apply and restart receivers (not in Live mode). What either receiver hears is acted on alike, and replies and status go back out by whichever card reaches the sender. On the same port as OSC in, each receiver needs a card of its own: while either listens on every interface the second will not start, and an orange line says so before Apply. Give the second a port of its own and there is nothing to think about. Control's OSC panel says where the second is listening, or why it is not; the Loopback test tries the first only. Each receiver has its own Values, Fade or Snap: whether a layer value it hears fades over the layer's Transition or is set at once when its message gives no time (see the OSC appendix). Fade is the default; Snap suits a fader surface on that network.

The OSC monitor. Press O (or Window, OSC monitor, or the button beside Last received in Control) for a window of its own that lists every message, newest first. Received: the time by the engine's clock, the sender, which receiver heard it (1 or 2, when the second is on), the address and arguments, and what became of it: unknown in orange for an address Enzyme does not have, refused in red with the reason on hover, ignored while the engine follows a leader. Sent: where each message went (a destination by its name), why (a cue, a reply such as /pong, the Send test) and what it said. Status is left out unless Status feedback is ticked, as at Full it is hundreds a second. A filter matches the address, the sender or destination, or a value; Pause holds the list still while messages keep coming, Clear empties it. The engine keeps the last few hundred of each while no window is open, so after something odd you can open the monitor and still see what came in. Esc closes it.

The OSC monitor
The OSC monitor (O), a window of its own, Received, newest first: the time, the sender, the address and its arguments; an address Enzyme does not know is marked unknown, in orange (here a typo, /opasity).

By name or by number. Wherever an address below takes a number for a layer, a timeline, a raster, a region or a pixel group, it can take that thing's name instead: /layer/led_screens/opacity 0.5 is the layer called LED screens, wherever it sits in the stack, and /timeline/encore/transport/go, /raster/main_wall/region/centre/intensity 1 and /layer/3/owner timeline encore work the same way. Case does not matter, and anything between the words, a space, - or _, counts as one _, so LED-Screens and led_screens are the same name. Names and numbers mix in one address. A number always means the place, so a layer you have named 2 is reached by its number only. A name that two things share is refused, and the OSC monitor says which name it was: rename one, or use its number. A default name such as Layer 4 follows its place (when that layer moves to second, its name becomes Layer 2), so name a layer yourself when an address should stay with it. Renaming a layer breaks the addresses that used its old name, as moving it breaks the ones that use its number. Status messages back from Enzyme (/status/...) always give numbers.

Running the show. These act on the master timeline. Put /timeline/2 in front for the second timeline, counted from the left of the tab row, and so on: /timeline/2/transport/play.

AddressArgumentsWhat it does
/transport/playThe same as Go, kept for surfaces that send it.
/transport/pausePause.
/transport/stopStop.
/transport/resetReset: stop and go back to the start of the timeline, holding there.
/transport/goGo, as the Go button: start from a hold or a pause, release a loop, or run free while waiting for timecode. Ignored while running.
/transport/holdHold at the playhead until Go.
/transport/skip_forward or /transport/nextJump to the next cue and hold there.
/transport/skip_back or /transport/previousJump to the previous cue and hold there.
/transport/go_nextJump to the next cue and fire it.
/transport/go_previousJump to the previous cue and fire it.
/transport/section_nextJump to the next section's start and hold there.
/transport/section_previousJump to this section's start, or from there to the section before, and hold there.
/transport/tc_lockLock the whole timeline to timecode, as its TC lock toggle does.
/transport/tc_releaseLet go of any timecode lock; the timeline runs on its own clock from where it is.
/cue/gocue number, such as 3 or 1.5Fire that cue.
/locatea timecode, as the text 01:00:10:00 or as four numbersPut the playhead there. The timecode is the timeline's own, as its ruler shows it: with a TC start of 10:00:00:00, 10:00:10:00 is ten seconds in. Before the start is refused.
/chase/per_sectionTimecode as the timeline's sections, lock cues and TC lock toggle say. The usual setting.
/chase/force_chaseLock the whole timeline to timecode while it is set, free-run sections too, as a Lock timeline cue does. Back to per_section, the timeline does as it is programmed again.
/chase/force_free_runIgnore timecode altogether: no lock takes the timeline, and it runs on its own clock.

The whole show.

AddressArgumentsWhat it does
/show/blackout1 or 0; none means 1Blackout on or off.
/show/master0 to 1The master level.
/audio/master0 to 1The sound's master level.
/audio/mute1 or 0; none means 1Mutes the sound, or brings it back at its master level.
/audio/bus/N/level0 to 1Bus N's level, N from 1 to 8.
/audio/bus/N/mute1 or 0; none means 1Mutes bus N, or brings it back.
/show/modeshow or editLive mode, or Edit mode.
/show/overrideoff, timeline, dmx or manualHands every layer to one owner, or gives each back its own.

A region's look. O is the raster's place in Mappings' list and R the region's in its stack, both from 1; region 1 is the lowest. A value holds the region live over its saved look (Mappings, Regions, Look) until it is released.

AddressArgumentsWhat it does
/raster/O/region/R/intensity0 to 1How bright the region is.
/raster/O/region/R/opacity0 to 1How much of what is beneath it shows through; 1 is none.
/raster/O/region/R/red, green, blue0 to 1Its colour gains, to match a panel or a projector to its neighbour.
/raster/O/region/R/colour/rgb, /colour/hsi, /colour/xyas a layer's colour (below), the gains held to 0 to 1The same gains given as RGB, HSI or a CIE xy point, whole or one part; color too.
/raster/O/region/R/brightness-1 to 1Lifted or lowered; 0 is none.
/raster/O/region/R/contrast0 to 21 is none.
/raster/O/region/R/gamma0.2 to 51 is none.
/raster/O/region/R/kelvin2000 to 12000Its colour temperature; 6500 is none.
/raster/O/region/R/tint-1 to 1Green to magenta; 0 is none.
/raster/O/region/R/releasenone, or one of the names aboveThe saved look back: all of it, or the one value named.

A pixel group's look. G is the group's place in its pixel map's list, from 1, under the region the map is on.

AddressArgumentsWhat it does
/raster/O/region/R/group/G/intensity0 to 1How bright the group's fixtures are.
/raster/O/region/R/group/G/kelvin2000 to 12000Their colour temperature; 6500 is none.
/raster/O/region/R/group/G/tint-1 to 1Green to magenta; 0 is none.
/raster/O/region/R/group/G/releasenone, or one of the names aboveThe saved look back: all of it, or the one value named.

A layer. N is the layer's place in the stack, from 1 at the back. The first address changes who owns the layer. The rest set its by-hand values, the ones its strip shows under Manual, so they are seen when the layer is owned by Manual.

Values fade over the layer's Transition. A value that moves smoothly (opacity, position, scale, rotation, crop, colour, mask, key hue, threshold and softness, blur, the generator's and effect's values and audio level) moves to what OSC sends over the time of the layer's own TRANSITION on its strip, as a recall glides. A new layer's Transition is a Cut, which sets values at once, so nothing fades until the layer is given a Transition with a time (/layer/N/transition_type dissolve and /layer/N/transition_time 2, or on the strip). A message can say for itself: snap or 0 after the value sets it at once (/layer/3/opacity 0.5 snap), and a number of seconds fades over those, whatever the Transition (/layer/3/opacity 0 4). For a whole colour the time comes after the three values (/layer/3/colour/rgb 1 0.5 0 2), so colour/xy takes one only after its intensity. Each value moves on its own clock: an opacity fade runs on while a position fade starts, and a value sent again mid-fade starts from where it shows. Play mode, speed, blend, key mode, the mapping, positions and the clip, generator and effect tiles change at once, as before. A value set by a strip or the desk is set at once and ends that value's fade. For a fader surface that sends every step, set its receiver's Values to Snap (Machine, Bind and ports): what it sends is then set at once unless a message gives a time.

AddressArgumentsWhat it does
/layer/N/ownertimeline, dmx or manual; after timeline a number or a name picks which timelineWho drives the layer. timeline alone is the master. DMX is refused for a layer that is not in the desk patch.
/layer/N/mediafolder and tile numbersThe clip, by the numbers shown in Media.
/layer/N/generatorfolder and tile numbersThe generator.
/layer/N/effectfolder and tile numbersThe effect.
/layer/N/mappingmapping number; 0 for the layer's ownThe mapping.
/layer/N/play_mode or /layer/N/playstop, play, loop, pause, hold, scrub, play_retrigger, loop_retrigger or timecodeThe play mode.
/layer/N/audio_bus0 (off) to 8The bus the layer's sound goes to.
/layer/N/audio_pitchkeep (or 0) or speed (or 1)Off speed, the sound keeps its pitch, or moves with the speed like tape.
/layer/N/key_modeoff, luma or chroma (or 0 to 2)The key, as the strip's Key and the desk's Key mode.
/layer/N/blend or /layer/N/blend_modenormal, add, screen or multiply (or 0 to 3)How the layer lays over the ones beneath it.
/layer/N/transition_timeseconds as a number, or text as the strip's Time takes it (2s 12f, 1.5s, 00:00:02:12)The time of the layer's Transition, kept in frames at the show's rate; at most a day. Values sent by OSC fade over it.
/layer/N/transition_typecut, dissolve, dip (or dip_to_black) or generator (or 0 to 3, the first three as the desk counts them); after generator, a bank and tile may followThe kind of the layer's Transition. A Cut sets values at once.
/layer/N/positiona timecode, as text or four numbersWhere in the clip to locate to.
/layer/N/in_pointa timecode, as text or four numbersWhere in the clip it starts.
/layer/N/out_pointa timecode, as text or four numbersWhere it stops or loops back; 00:00:00:00 is the end of the clip.
/layer/N/<parameter> or /layer/N/param/<parameter>a number, then snap, 0 or seconds if wantedOne of the parameters in the next table, such as /layer/3/opacity 0.5. It fades over the layer's Transition unless the message says otherwise (above).
/layer/N/generator_K/sweepfrom, to, seconds, then loop, bounce or once (loop if left out); or offSweeps generator value K (1 to 16) between two levels. off stops it.
/layer/N/effect_K/sweepthe sameThe same for effect value K.

Layer parameters. The ranges are the ones the desk's channels cover; neutral is the value that changes nothing. All of them fade over the layer's Transition but speed and mask_feather_gamma, which are set at once, as is a generator or effect value that picks an image input's tile.

ParameterRangeNeutralWhat it is
opacity0 to 11
speed−4 to 41Times normal speed; below 0 runs backwards.
position_x, position_y−32768 to 327670Pixels.
scale−10 to 101The whole size, keeping the picture's shape; 1 is full size, below 0 a mirror image.
aspect_x, aspect_y−10 to 101Each times scale, to stretch or mirror one way. Called scale_x and scale_y before 18 October 2026; those addresses no longer work, and a show saved then keeps its values.
rotation−180 to 1800Degrees clockwise about the picture's centre.
crop_left, crop_right, crop_top, crop_bottom0 to 10The share of the picture cut from that edge.
brightness−1 to 10
contrast0 to 21
gamma0.2 to 51
red_gain, green_gain, blue_gain0 to 21
colour/rgbr g b, each 0 to 21 1 1The three gains at once.
colour/hsihue 0 to 360, saturation 0 to 1, intensity 0 to 20 0 1Turned into the gains: that hue at that saturation, its largest gain the intensity.
colour/xyx, y, and an intensity 0 to 2 (1 when left out)0.3127 0.3290 1A CIE 1931 point, through Rec. 709 into the gains; one outside the Rec. 709 triangle is brought in to its edge.
colour/hsi/hue, /saturation, /intensity; colour/xy/x, /y, /intensity; colour/rgb/red and so onone valueOne part; the rest kept from the colour as it is (h, s, i, r, g, b too). color works as well as colour.
mask_left, mask_right, mask_top, mask_bottom0 to 10The share masked from that edge.
mask_feather0 to 10
mask_feather_gamma0.2 to 51The feather's curve: 1 fades straight across it, above 1 stays darker for longer, below 1 brightens sooner. Not on the desk.
key_hue0 to 360120Degrees.
key_threshold0 to 10.5
key_softness0 to 10.1
blur0 to 10
generator_1 to generator_160 to 10The generator's values; 9 to 16 where the family has them.
effect_1 to effect_160 to 10The effect's values; 9 to 16 where the family has them.
audio_level0 to 11

Manual recalls. By bank and tile, as the Manual Recalls tab in Media numbers them.

AddressArgumentsWhat it does
/recallbank and tile numbersFires the recall there. An empty tile fires nothing and says so on the band.
/recall/B/Tnone or 1; 0 does nothingThe same, for a button on a TouchOSC or Companion page: it fires on the press and not the release. An OSC script recall runs its messages.

The set list. A row by its number as the set list window shows it (note rows have none).

AddressArgumentsWhat it does
/setlist/row/N/gonone; or 1 or 0 to bring its timeline to view or notThe row's Go to cue and play; the row becomes current. With no argument the row's View tick decides.
/setlist/row/N/skip1 or none to skip, 0 not toThe row's Skip.
/setlist/nextGo to cue and play on the next row from the current one, for a hand when a cue did not fire.
/setlist/previousThe same, on the row before.
/status/setlist/currentsent: the current row's number (0 for none) and its timeline's nameTo subscribers, with the other status.

Keeping in touch.

AddressArgumentsWhat it does
/pingEnzyme answers /pong to the address and port the ping came from.
/subscribelight or full; none means fullSends status, below, back to the address and port the message came from. A subscriber that sends nothing for five minutes is dropped; any /ping or /subscribe keeps it. Up to 32 addresses may subscribe at once; a message carries at most 64 arguments.
/unsubscribeStops it.

Status that Enzyme sends. To subscribers, at the level each asked for, and to each of the show's destinations at the level chosen on its row under Cue send destinations in Control: Status off, Status light or Status full. A new destination starts off, since Full is hundreds of messages a second. A show saved before 13 October 2026 had one level for all its destinations, and each opens with that level. Destinations added for one run with --osc-out share one level of their own, set on their rows. The moving ones (timecode, position, frame, a layer's time) go at the rate set under the destinations, ten a second unless changed. The rest go when they change, and all of them once a second so a surface that missed a packet is right again within a second.

AddressArgumentsLevel
/status/heartbeatseconds the engine has been upLight
/status/timecodethe master's position as text in its own timecode, as its ruler shows it, 10:00:05:06 with a TC start of 10:00:00:00Light
/status/positionthe same in secondsLight
/status/framethe same as a frame numberLight
/status/transportplay, hold, chase or stopLight
/status/cuethe current cue's number as text, empty before the firstLight
/status/next_cuethe next cue's number as text, empty after the lastLight
/status/sectionthe section's number (0 for none) and its nameLight
/status/timeline/N/timecode, transport, cue, next_cueas above, for timeline N; only when the show has more than oneLight
/status/timeline/N/namethe timeline's nameLight
/status/timeline/N/master1 for the master, else 0Light
/status/recallthe bank, tile and name of the recall fired last, once one has beenLight
/status/modeedit or showFull
/status/blackout1 or 0Full
/status/master0 to 1Full
/status/overrideoff, timeline, dmx or manualFull
/status/layer/N/ownertimeline, dmx or manualFull
/status/layer/N/sourcewhat it shows as text, media 1/2 or generator 1/1; empty for nothingFull
/status/layer/N/showing1 while it has a picture, else 0Full
/status/layer/N/play_modethe play mode's name; Skip to end reads hold_lastFull
/status/layer/N/opacity0 to 1, as shown: while it fades or glides, where it has gotFull
/status/layer/N/colour/rgb, /hsi, /xythe colour in each form, three values each, whatever set it; while it fades, where it has gotFull
/status/layer/N/timeseconds into the clip, while it showsFull

What a cue sends. A cue can send any OSC address with any arguments; you write them in the cue's editor, and choose where the message goes: one of the show's destinations, or All destinations. The destinations are listed under Cue send destinations in Control, each with a name (QLab, Lighting desk) and a host:port; they are saved with the show, and adding, renaming or removing one can be undone (greyed in Live mode). A host given by name that cannot be looked up is tried again every ten seconds. A cue sending to a destination that has since been removed shows it missing in red, and sends nothing. Send /enzyme/test sends a test message to each so you can check the other end is listening. Shows saved before 13 October 2026 open with each destination named after its address, and their cues still sending to all. Each destination's row also chooses the status it is sent unasked (above).