← Manual

The command line

Typing commands, id lists, autocomplete, history and the command echo.

The pane at the bottom left. Everything the console can do can be typed here, and everything you do with the mouse is echoed here as the command that would have done it. Learning LMX’s language costs nothing extra: click first, read the echo, type it next time.


The shape of a command

The command pane: history above, input below

VERB [NOUN] <target> [<value>] [OPTION ...]
STORE CUE 4 "Act 1 top" FADE 3
LOAD PRESET 2 GROUP 1 AT FADER 5 MODE HTP NAME "Warm"
UPDATE FIXTURE 1 THRU 8 POS 2 THRU 10 0 THRU 0 6 THRU 6
  • Case does not matter. store cue 1 and STORE CUE 1 are the same.
  • Quote anything with spaces. STORE GROUP 1 "Front wash".
  • Several commands on one line, separated by ; - RED 100; GREEN 50; BLUE 25.
  • Partial or wrong syntax prints the usage line rather than guessing. That usage line is the same text as HELP <verb>.
  • A keyword from another desk is caught before the line runs. THRU, GOTO and TIME all mean something here, but not where an attribute belongs; typed there they are named, told where they belong, and the line is abandoned rather than half-applied. PAN -45 THRU 45 reports THRU and points at the fan form instead of setting pan to −45 and then complaining.

Naming several things at once

Nearly every id argument in LMX accepts a list expression:

You typeYou get
4just 4
1 THRU 81, 2, 3, 4, 5, 6, 7, 8
1 + 4 + 91, 4 and 9
1 THRU 4 + 9 THRU 12both ranges

This works for fixtures, groups, presets, palettes, cues, effects, frequencies, targets and faders. A range skips gaps - DELETE PRESET 1 THRU 10 deletes the presets that exist in that span and says nothing about the rest

  • while a bare id must exist.

Two list rules worth knowing:

  • A head range stays inside one fixture: SELECT HEAD 1.1 THRU 1.4.
  • A fader range stays on one page: FADER 2.1 THRU 2.6 50 is fine, 1.5 THRU 3.2 is not.

Selection is implied

Most commands act on the current selection, so you rarely name fixtures twice:

FIXTURE 1 THRU 6      # select
INTENSITY 100         # …applies to those six
RED 100 BLUE 0

You can still be explicit when you want to: SELECT FIXTURE 3 INTENSITY 50 selects and sets in one line. See Selecting fixtures.

Intensity has the shorthand every desk shares - 1 THRU 8 @ FULL is the same as 1 THRU 8 INTENSITY 100. See The programmer.


Typing help

  • Ghost text appears ahead of the cursor as you type, showing the rest of the syntax for the command you are building.
  • Tab completes the current word, or cycles the options if there is more than one.
  • Attribute names complete too, taken from whatever the line is about - so INT reaches INTENSITY, and after 1 THRU 8 the hint lists the attributes those eight fixtures actually have. Where a word is complete in itself, Tab takes it even if something longer starts the same way: PAN completes to PAN, not PANIC.
  • Up / Down walk back through the commands you have run this session.
  • HELP lists every verb; HELP STORE prints every form of STORE. The same content, formatted, is the Command reference.

The completion tree is audited against the parser both ways by scripts/cli_suggestion_audit.py: every verb the parser accepts is suggested, and every path the suggestions can build actually runs.


Reading the history

ColourMeaning
WhiteThe command that ran
GreenSuccess
AmberSuccess, but read the message
RedRejected - nothing changed

The history is capped at 2000 entries and is also written to a session log under ~/.lmx/cli_logs/.


Aliases

Short forms exist for the verbs you type most:

AliasMeans
? · HHELP
CLRCLEAR
RECORDSTORE
DEL · REMOVEDELETE
CONF · CFGCONFIG
WHYINSPECT
PROGSHOW
EXIT · QQUIT

Variables

Variables hold a value for the rest of the session (they are not saved into the showfile) and are substituted anywhere in a command.

$intensity = 75
$label = opening state          # multi-word values are quoted for you
FIXTURE 1 THRU 4 INTENSITY $intensity
STORE CUE 1 $label
SHOW VARS

Arithmetic works with +, -, *, /:

$n = 10
$n = $n + 5                     # 15

Names start with a letter and are case-insensitive. PRINT writes to the history, INPUT asks you for a value:

INPUT $cue "Which cue? "
PRINT Storing cue $cue

Undefined variables, non-numeric arithmetic and division by zero are all reported rather than silently ignored. Variables come into their own inside macros.


Undo

UNDO
REDO
SHOW UNDO

Undo covers show-data changes - patching, stored objects, cue edits. Playback actions (GO, fader moves) are not undoable, because taking back a GO is not a thing an operator ever means.


Other places you can type

  • The Targets tab has its own small command box for target commands.
  • Keyboard keys and MIDI controls can be mapped to run an arbitrary command - see MIDI and keyboard mapping.
  • A recorded macro is just a list of these commands.

Related topics