Skip to main content

Overview

The Pulse Wave Generator plugin creates sophisticated wave effects that can sweep across your fixtures in multiple directions. It supports batch processing of multiple groups, single merged cue stacks, random wave patterns, and bidirectional waves (left/right/in/out).

Interactive Setup

The plugin uses an interactive setup process that adapts based on your choices:
Batch mode
string
default:"false"
Enable batch mode to create waves across multiple groups. Values: "true" or "false"
Single cue stack
string
default:"false"
Merge all groups into a single cue pair (only available when not in batch mode). Values: "true" or "false"
Group Numbers
multiple
One or more group numbers (prompted sequentially until empty input)
Direction
string
default:"left"
Wave direction: "left", "right", "in", "out", or "rnd" for random
Random wave cue pairs
number
default:"4"
Number of random wave variations (only when direction is "rnd")
Repeats per group
number
default:"1"
Number of wave repeats per group (only in batch mode)
Wave Delay
number
default:"0.2"
Delay time in seconds for wave propagation
Trig time
number
default:"0.1"
Trigger time in seconds for automatic cue advancement
Fade time
number
default:"0.05"
Fade time in seconds for transitions
Sequence Number
number
The sequence number where wave cues will be stored
Exec Number
number
The executor number to assign the wave sequence

What Gets Created

Standard Mode (Single Group)

Creates a wave sequence with ON/OFF cue pairs:
  • 1 cue pair for specified direction
  • Dimmer delays applied to create wave effect

Batch Mode (Multiple Groups)

Creates multiple cue pairs, one per group:
  • Cue pairs: number of groups * repeats
  • Each group gets its own wave pattern
  • Can be randomized across groups

Single Stack Mode (Merged Groups)

Creates a single merged cue pair:
  • All groups combined into one ON cue
  • All groups combined into one OFF cue
  • Wave delay applied across all groups simultaneously

Random Mode

Creates multiple random wave variations:
  • Direction varies between left, right, in, out
  • Avoids repeating the same direction consecutively
  • Number of variations specified by user

Wave Directions

Left

Wave travels from right to left:
Delay: [delay] Thru 0
Wave travels from left to right:
Delay: 0 Thru [delay]

In (Center Out)

Wave travels from center outward:
MAtricksWings: 2
Delay: [delay] Thru 0 Thru [delay]

Out (Outside In)

Wave travels from outside to center:
MAtricksWings: 2
Delay: 0 Thru [delay] Thru 0

Usage

1

Run the plugin

Execute the plugin:
Plugin "PulseWaveGen"
2

Configure mode

Answer the mode prompts:
  • Batch mode? (true/false)
  • Single cue stack? (true/false) - only if not batch mode
3

Enter groups

Enter group numbers one at a time:
  • Group 1: 1
  • Group 2: 2
  • Group 3: (press Enter to finish)
4

Configure wave parameters

Specify wave settings:
  • Direction (left/right/in/out/rnd)
  • Random wave pairs or repeats (if applicable)
  • Wave Delay
  • Trig time
  • Fade time
5

Assign to executor

The plugin opens view 278 on screen 5, then prompts:
  • Sequence Number
  • Exec Number
6

Automatic creation

The plugin creates the wave sequence with progress indicator

Function Reference

Main Functions

PulseWaveGen_Start()

Main entry point for the plugin.
local function PulseWaveGen_Start()
  local success = PWG_setup()
  if not success then return end
  
  if PWG_singleStack then
    PWG_createSingleStack()
  else
    PWG_create()
  end
  
  PWG_clear()
  PWG_resetValues()
end

PWG_Cleanup()

Cleanup function to stop progress indicators if plugin is interrupted.

Setup Functions

PWG_setup()

Interactive setup that gathers all configuration from user.
local function PWG_setup()
  -- Determine mode (batch/single stack)
  -- Collect group numbers
  -- Get direction and timing parameters
  -- Open view 278 on screen 5
  -- Get sequence and executor numbers
  return true -- success
end

Wave Creation Functions

PWG_createCuePair(grp, direction, cueNum)

Creates a single ON/OFF cue pair for the specified group and direction.
local function PWG_createCuePair(grp, direction, cueNum)
  local wing = PWG_getWing(direction)
  local delayStr = PWG_getDelayString(direction, PWG_delay)
  
  cmd("Group " .. grp)
  if wing > 0 then
    cmd("MAtricksWings " .. wing)
  end
  
  -- Full cue
  cmd("At 100")
  cmd("Delay " .. delayStr)
  cmd("Store Sequence " .. PWG_seq .. " Cue " .. cueNum)
  
  -- Off cue with trigger
  cmd("At 0")
  cmd("Delay " .. delayStr)
  cmd("Store Sequence " .. PWG_seq .. " Cue " .. (cueNum + 1))
  cmd("Assign Sequence " .. PWG_seq .. " Cue " .. (cueNum + 1) .. 
      " /trig=time /trigtime=" .. PWG_trigTime .. 
      " /fade=" .. PWG_fade .. " /mode=release")
end

PWG_createSingleStack()

Creates a merged cue stack with all groups combined.
local function PWG_createSingleStack()
  -- Iterate through groups, adding each to programmer
  -- Store single Full cue with all groups
  -- Store single Off cue with all groups
  -- Apply triggers and timing
  -- Name sequence based on merged groups
end

PWG_create()

Creates standard or batch wave sequences.
local function PWG_create()
  -- Generate direction list (random or fixed)
  -- Generate group list (random or sequential)
  -- Create cue pairs with progress indicator
  -- Configure sequence and executor
  -- Apply tracking based on batch mode
end

Helper Functions

PWG_getDelayString(direction, delayVal)

Generates the delay command string for the specified direction.
local function PWG_getDelayString(direction, delayVal)
  if direction == "left" or direction == "out" then
    return delayVal .. " Thru 0"
  else
    return "0 Thru " .. delayVal
  end
end

PWG_getWing(direction)

Returns MAtricks wing value for bidirectional waves.
local function PWG_getWing(direction)
  if direction == "in" or direction == "out" then
    return 2
  else
    return 0
  end
end

PWG_pickRandomAvoid(list, lastPick)

Picks a random item from list while avoiding the last pick.

PWG_getRandomDirections(count)

Generates a list of random directions, avoiding consecutive repeats.

PWG_getRandomGroups(groupList, count)

Generates a randomized list of groups, avoiding consecutive repeats.

Sequence Naming

Sequences are automatically named based on configuration:

Standard/Batch Mode

Wave G[group] [direction]
Examples:
  • "Wave G1 L" - Group 1, Left
  • "Wave G2-5 R" - Groups 2-5, Right
  • "Wave G1 Rnd4" - Group 1, 4 random variations

Single Stack Mode

Wave G[groups] [direction] Merged
Examples:
  • "Wave G1-3 L Merged" - Groups 1-3 merged, Left
  • "Wave G5 I Merged" - Group 5, In (center out)
Direction abbreviations:
  • L = Left
  • R = Right
  • I = In (center out)
  • O = Out (outside in)
  • Rnd[n] = Random with n variations

Executor Configuration

All created executors are configured with:
cmd("Appearance Sequence " .. PWG_seq .. " /b=100 /r=50")
cmd("Assign Exec " .. PWG_exec .. " /restart=next /priority=htp /offtime=0.2")
Batch mode:
  • Tracking: ON
Standard/Single Stack mode:
  • Tracking: OFF

Progress Indicators

The plugin shows progress bars during creation:
  • Displayed when creating multiple cue pairs (batch or random mode)
  • Shows current cue pair number and total
  • Shows which group is being added (single stack mode)
  • Automatically cleaned up on completion or interruption

Example Configurations

Single Group Wave

Batch mode: false
Single cue stack: false
Group 1: 1
Group 2: (empty)
Direction: left
Wave Delay: 0.2
Trig time: 0.1
Fade time: 0.05
Sequence Number: 500
Exec Number: 301
Result: One cue pair with left-to-right wave

Merged Groups Wave

Batch mode: false
Single cue stack: true
Group 1: 1
Group 2: 2
Group 3: 3
Group 4: (empty)
Direction: in
Wave Delay: 0.3
Trig time: 0.15
Fade time: 0.08
Sequence Number: 501
Exec Number: 302
Result: Single merged cue pair with center-out wave across all 3 groups

Batch Mode with Repeats

Batch mode: true
Group 1: 4
Group 2: 5
Group 3: 6
Group 4: (empty)
Direction: right
Repeats per group: 2
Wave Delay: 0.25
Trig time: 0.12
Fade time: 0.06
Sequence Number: 502
Exec Number: 303
Result: 6 cue pairs (3 groups × 2 repeats), tracking ON

Random Waves

Batch mode: false
Single cue stack: false
Group 1: 7
Group 2: (empty)
Direction: rnd
Random wave cue pairs: 8
Wave Delay: 0.2
Trig time: 0.1
Fade time: 0.05
Sequence Number: 503
Exec Number: 304
Result: 8 cue pairs with randomly varying directions (left/right/in/out)
Single stack mode is not available with batch mode. If you want to merge groups, set batch mode to false.
Random direction mode is not available with single stack mode. Single stack requires a fixed direction.
The plugin opens view 278 on screen 5 before prompting for sequence and executor numbers. This is intended to help you visualize where the sequence will be created.
For smooth waves, set the wave delay to 2-3 times the fade time. For sharper waves, use shorter delays.
Use batch mode when you want to create wave effects for multiple groups that can be selected independently. Use single stack mode when you want all groups to wave together as one unit.
Random mode is great for creating varied effects - the plugin ensures consecutive cue pairs don’t use the same direction, creating more dynamic patterns.

Build docs developers (and LLMs) love