User Guide

Routine Creator Pro

A practical, procedural guide to building a routine from a blank file through to a finished show. Split into two halves on purpose: things you set up once and reuse forever, and things you do for every new routine you build after that.

Every screenshot in this guide is clickable — opens at full resolution in a new tab.

Set up once

Everything in this first half you do a single time per show/hardware setup — not per song.

01

Before You Start

RCP reads and writes the same file format that VSA and Helmsman use, so if you're coming from VSA, your existing routines open directly — no conversion step. A routine is one .rcp file (or .vsa, treated identically), plus a set of small sidecar files RCP saves automatically for anything VSA Doesn't handle:

Moving a whole VSA library to RCP: Tools → Convert a Folder of VSA Routines to RCP… saves every .vsa routine in the folder you choose as an .rcp with the same name beside it, then moves the original .vsa files into an Original VSA files subfolder. Each new routine is checked to read back with every track and event before its original is moved. Audio and video files aren't moved, and a routine that already has an .rcp of the same name is skipped, so nothing is overwritten. A Helmsman playlist or VSA show that points to the old .vsa files needs to point to the new .rcp files.

FileHoldsWhen it's created
.sceneStage layout, character names, Lead Vocal flagWhen you save a Scene Map
.modesAGR Banter/Singing section boundariesWhen you run Discover Modes
.curvesBezier easing control points, if you've used anyWhen you enable easing on an event
.videoclipsOne-shot video effect clips (Add Video Track)When you add a video clip
.audiosettingsPer-track volume/balance/mute/solo/lock/colorWhen you change a track's audio mix settings
.syncedvideoManual overrides from Synced Video Settings — sync turned off for this routine, and/or a specific output screenWhen you Save after changing something in Synced Video Settings
[name].wavThe bounced, playback-ready mixWhen you run Bounce Mix
Where sidecars actually live

Everything above except [name].wav lives in one shared folder — Documents\Routine Creator Pro\Routine Sidecar Files\ — not literally next to the .rcp. This keeps a folder full of routines uncluttered, but it also means copying a .rcp file by itself to a USB drive or a different computer leaves its sidecars behind, and it opens there with defaults instead of your saved Scene Map/mix/etc. Use File → Package Routine for Sharing… instead of copying the .rcp by hand — it gathers the .rcp, its linked audio/video files, and every sidecar that actually exists for it into one folder, ready to copy or zip and send. On the receiving computer, just copy that folder's contents to wherever you keep routines and open the .rcpfile normally.

What you need in hand before opening RCP for the first time on a new build
  • Every servo's real min/max/default travel values for your hardware (or use the Halloween Skulls Defaults path in the Setup Wizard if that's what you're running)
  • Your DMX interface connected, so Setup Wizard can auto-detect the port
02

Building a Character Template

The single most important one-time setup step — everything AGR does depends on this being right.

A Template is a routine file with every character named, every track you use named and addressed, and Scene Map filled in — but no events on it yet. Build it once, save it somewhere safe, and start every new routine from a copy of it instead of building tracks from scratch each time.

Quick reference

Help → Template & Naming Guide (a short standalone page, separate from this document) covers everything on this page plus the full device-name keyword table in one place — handy to keep open while you build, instead of scrolling this whole guide.

There is no "create a character" screen

A character isn't a separate thing you set up first — it's just a name that becomes real the moment you use it as the first word of a track's name in step 3 below. Nothing in Setup Wizard or anywhere else in RCP asks you to create or register a character directly; naming tracks is how characters get created. If you're looking for a dedicated screen for this, there isn't one — that's expected, not a step you're missing.

  1. Decide on each character's name (skip this step entirely if your whole cast is a single skull — see the callout above for the bare-naming convention that unlocks). Just pick the name you'll use for each skull or skeleton (Larry, Harry, Barry, Sindy — or your own cast of skeletons) — nothing to type or configure yet, you're only deciding what you'll call them once you get to step 3. You'll use these same names everywhere from then on: track names, Scene Map, Lead Vocal designation.
  2. Run the Setup Wizard and choose, per skeleton: Halloween Skulls Defaults, Skulltronix Defaults, or Custom. Either default option auto-fills every servo/fixture's address and travel range; Custom leaves you to configure the track list by hand. Skulltronix Defaults covers skull-head axes only (Jaw, Nod, Pan, Eyes, Tilt, Torso, Power) — no confirmed arm-servo layout exists for that hardware yet, so it never generates arm tracks even for a skeleton with arms.
    • Arms mirrored on this board — a standard Halloween Skulls arm board carries the right arm on its first three channels (Twist, Lift, Elbow) and the left arm on the next three. If a skeleton is wired the other way round, tick this box on its page, or its arms will be set up on the wrong sides.
    • The Halloween Skulls Defaults are standard values, not your skeletons' own calibration. Use the wizard to build a fresh layout in a new, empty routine. If you run it with a routine open whose tracks are already set up, it lists every track it would change — name and min / default / max, old and new — and how many programmed events those tracks hold, and Cancel is the default. The events themselves are never changed, so replacing calibrated settings makes the routine move differently on real hardware.
  3. Rename every track Setup Wizard just created, using the format: [Character Name] [Function]. This is the actual naming step from step 1 above — RCP reads these names to know who owns a track and what it does, which is what makes automatic detection work everywhere else in the app.
    TrackExample name
    JawLarry Jaw
    Head rotate / nod / tiltLarry Rotate, Larry Nod, Larry Tilt
    EyesLarry Eye L/R, Larry Eye U/D
    ArmsLarry Arm R Twist, Larry Arm L Elbow, etc.
    See Help → Track Naming Guide in the app for the exact keyword list it recognizes (jaw, rotate, nod, tilt, eyes L/R, eyes U/D, arm joints, LEDs, strobe) — names are case-insensitive and just need to contain the keyword, not match exactly.
  4. Set up Scene Map: place every character on the stage, set facing direction, flag Halloween Skulls hardware where it applies, and mark one character as Lead Vocal. The Lead Vocal flag is required before Singing Mode will generate anything at all in "Auto Generate Routine".
  5. Save this file as your template — name it something you'll recognize later, e.g. My Skeleton Show Template.rcp, and keep it somewhere you won't accidentally overwrite with a finished show.
Setup Wizard step 1 — confirming Scene Map is configured
Setup Wizard, step 1 — won't proceed until Scene Map is filled in
Setup Wizard — Halloween Skulls Defaults, Skulltronix Defaults, or Custom choice
Halloween Skulls Defaults / Skulltronix Defaults / Custom, asked once per skeleton
Setup Wizard final summary of tracks to be created
Final step — summary of every track about to be created
Settings Device tab showing a fully-named track list
Settings → Device Settings — a fully-named track list following the [Character] [Function] convention
Scene Map stage layout with four characters placed
Scene Map — stage layout, seen from the audience's point of view
Scene Map with Sindy selected and Lead Vocal (Singing Mode) visible
Selecting a skeleton reveals the Lead Vocal (Singing Mode) button
Scene Map after dragging Larry further stage-left
Drag left/right to reposition — Larry moved further stage-left here

Setting Up CUSTOM Arms

Arms bought from Halloween Skulls already come with the right settings. If you built your own arms, or your skeleton uses different servos, three things in Settings decide whether Auto Generate, Copy to Character and the arm safety rules move them correctly. Your skeleton can have any name, and the numbers can be anything your servos need — RCP works every arm move out as a share of each servo's own travel from its Default.

  1. Name each arm track so RCP knows its side and job. Put the character's name and one of these in the track name:
    ServoRight armLeft arm
    Twist (turns the hand)Arm R T or R Arm TwistArm L T or L Arm Twist
    Lift (raises the arm)Arm R S or R Arm LiftArm L S or L Arm Lift
    Elbow (bends the arm)Arm R E or R Arm ElbowArm L E or L Arm Elbow
    For example Arm R S Bob or Bob - L Arm Elbow. Right and left are the skeleton's own right and left, as if you were standing inside it — not as seen from the audience. Label them by what each servo is physically connected to: if your arm board is wired with the left arm on its first three channels, the labels must follow the wiring (the Setup Wizard has an "Arms are mirrored on this board" box for this).
  2. Set each lift's and elbow's Default to its resting position — arm hanging down, elbow straight — and put that Default at one end of its range (equal to its +Value or its −Value). That is how RCP knows which way is "up" and which way "bends" on each servo, whichever direction it is mounted. A Default in the middle of the range tells RCP the servo can move both ways from rest, and it may raise the arm the wrong way.
  3. Set +Value and −Value to the real safe limits of each servo — where the arm actually stops, not the servo's full travel. RCP never sends anything outside them, and every move is scaled inside them. Twist servos rest in the middle (hand facing forward), so their Default sits between the two.

Twist direction. RCP assumes that on the right arm a higher twist value turns the hand toward the body, and on the left arm a lower value does. If one of your twist servos is mounted the other way round, mount it the standard way if you can, or contact us: otherwise the rule that stops both hands turning toward each other at once (they can lock together and break fingers) works backwards on that skeleton, and a Mirror image copy turns that hand the wrong way.

Quick check: open the 3D Preview and play a few seconds of an Auto Generated arm section. If an arm goes down when it should go up, check that servo's Default is at the correct end; if an arm moves on the wrong side, check the R / L labels.

Why this only has to happen once

Once a template exists with every track correctly named and Scene Map filled in, RCP already recognizes everything it needs from the track names alone. Starting your next routine from a copy of this file means Setup Wizard and Scene Map are already done — the only things left to add are that song's own audio and jaw programming, both covered in the next half of this guide.

Track order is permanent

Whatever order tracks are first created in is the order they stay in, forever — no wizard step, import, or export ever reorders them by address or any other key.

03

Building a Lighting Template

If your show includes any stage lighting RCP will control — wash lights, spotlights, strobes — give those fixtures the same one-time treatment as your characters.

  1. Add a track for each lighting channel your fixture uses (typically Red/Green/Blue for a color-mixing fixture, or a single channel for a dimmer/strobe).
  2. Name each one clearly and consistently — e.g. Wash Light 1 - RED, Wash Light 1 - GREEN, Wash Light 1 - BLUE, or Spotlight - Sindy (as an example) if a fixture is dedicated to highlighting one character.
  3. Set each channel's DMX address in Setup Wizard/Settings the same way a servo track is addressed.
  4. Save this alongside (or as part of) your Character Template, so every new routine already has your lighting rig ready to go.
A light's default position is its off state

By convention, a light track's default value already represents "off" — the same end-of-routine wind-down that returns servos to default also dims every light, so there's nothing extra to configure for a clean fade-out at the end of a show.

A plain on/off fixture (relay board, strobe) is even simpler

For a fixture that's purely on or off rather than dimmable, use the Relay device type instead of a dimmer — it auto-fills Min/Max/Default and every new event you draw on it just toggles on/off by itself, no value entry needed. See section 17 for the full explanation, including which controllers it can drive today.

Every new routine

Starting from here, this is what you repeat for each new song/performance once your template exists.

04

Starting From Your Template

  1. Make a copy of your template file and rename it for the new routine (e.g. Zombie Attack.rcp). Working from a copy, never your master template, means a mistake in one show never costs you the reusable setup.
  2. Open the copy — every track, address, and Scene Map setting from your template is already in place.
  3. Continue with audio import and jaw programming below.
RCP recognizes a ready-to-generate file automatically

Because your template's tracks already follow the naming convention and Scene Map is already filled in, RCP doesn't need any extra setup step to know who's who. Once this new routine has jaw tracks programmed and audio attached, it's ready for Discover Modes and AGR generation — nothing about the template step has to be repeated or re-confirmed.

05

The Timeline

The main working surface — tracks, events, the waveform, and the plot view, all locked to one shared zoom and playhead.

Every track is a horizontal row. An event is a bar on that row spanning the frames it's active. Drag to move, drag an edge to resize, double-click to open its properties. An event's starting position is never something you set directly — it's always wherever the previous event on that track left it.

A pinned Audio row (the combined waveform) sits below your tracks, and a Video Tracks panel appears below that once you've added at least one one-shot effect clip (lightning, jump scares) via Tools → Add Video Track… — see section 17 for the full details.

Main timeline view with tracks, events, waveform, and plot section
Tracks, events, waveform, and plot section, all sharing one zoom and playhead

Hiding unused tracks

A template can have dozens of tracks a particular routine never touches. The Hide Unused Tracks button at the right end of the main toolbar hides every track that has no events on it at that moment, so you only see the ones you're working with. The button then reads Restore Hidden Tracks — click it to bring them all back. It's a one-time snapshot, not a live filter: a track you start using stays visible, and nothing is deleted or reordered.

06

Working with Events

Event Properties

Double-click any event to open its properties: a vertical slider spanning that track's real min/max, a gold arrow marking the default position, live position preview sent to connected hardware as you drag, editable start/stop times, and a Default button that sets the stop value to the track's default in one click.

Event Properties dialog with position slider, Default button, and time fields
Event Properties — position slider, Default button, and time fields

Lining events up

Click, drag, or resize any event and a dotted guide line appears through the full timeline height at its start and stop frame — the same visual language as the timeline markers — so you can line it up against events on other tracks at a glance. The guide disappears the moment nothing is selected.

Copy, paste, mirror & repeat

Select events, Ctrl+C, then right-click where you want them. The context menu offers four Paste Here modes, which differ only in whether the track and the time come from where you clicked or from where the events originally were:

ModeWhere the events land
Preserve tracks, preserve timeExactly where they came from — same tracks, same timecode. Use this when pasting into another routine that shares the same track layout.
Shift tracks, shift timeFully relocated: the block's top-left corner moves to the track and time you clicked, everything else keeping its relative position.
Preserve tracks, shift timeSame tracks, moved along the timeline to where you clicked. For repeating a gesture later in the same song.
Shift tracks, preserve timeSame timecode, moved onto the track you clicked. For making another character do the same thing at the same moment.

Ctrl+V is a shortcut for the third mode: same tracks, pasted at the First marker if one is placed, otherwise at the playhead.

The clipboard is shared across every open routine, so you can copy in one routine and paste into another — see Working with Multiple Routines.

Worked example — making two characters move in unison

To make a second skull repeat a long passage of head motion already built for the first: select the whole series on the original track, copy, then right-click the target track at the same point in the song and choose Shift tracks, preserve time. The motion lands on the new track at the identical timecode. If that stretch of the target track already has events, take Overwrite when asked (below) and RCP clears them for you in the same step — then it re-derives the start positions at both ends of what you pasted, so the transitions in and out stay smooth. No manual deleting first.

Paste copies the exact numbers. That is right between two characters with the same settings, but if their ranges differ — Sindy's arms and Larry's arms, say — use Copy these motions to another character (next) instead: it converts every move to the other character's own settings.

Copy these motions to another character

Select any of one character's moves — arms, head, jaw, eyes, eye lights, across as many tracks as you like — then right-click one of them and choose Copy these motions to another character…

  • Copy to — any character in the routine, including the same one.
  • Same sides — right arm to right arm, a head turn to the right stays to the right. Mirror image — what a mirror standing beside the first character would show: right-arm moves go to the left arm (and the other way round), and a head turn, tilt or eye glance to one side goes to the other side. Every movement keeps its meaning: a raise is still a raise, a bend still a bend, a twist toward the body still toward the body. Jaw, nod, eyes up/down and eye colours are unchanged.
  • Preserve time — the copy lands at the same time as the original. Shift time — RCP waits for you to place a new marker (double-click the ruler, or drag a marker to a new spot) and the copy starts exactly there. Old markers are never used, so it can't land somewhere you've forgotten. Esc cancels.

Each move goes to the matching servo, by what the track does — jaw to jaw, right arm lift to right arm lift — not by track position, so the two characters can have different numbers of tracks. A track RCP can't identify is matched by name with the character's name swapped ("Larry Spotlight" → "Barry Spotlight").

Every value is converted to the target's own settings. A servo move becomes the same share of the target's travel from its Default — a 60% raise on Sindy is a 60% raise on Larry, even though their numbers and which end their arms rest at are different. Eye lights are scaled to the target's maximum brightness. Nothing can land outside the target's limits.

If the target has no matching servo for some of the moves (no elbows, say), RCP lists them and says they will be discarded before copying the rest. Existing moves in the way are handled exactly like a paste (below) — you're asked before anything is replaced — and the whole copy is one Undo step. Moves not on the character's own tracks (spotlights, wash lights) are left out.

This is not the same as Mirror & Repeat, which repeats moves earlier or later in time on the same tracks.

Copy To Character — between routines

Use this to bring one character's moves into a different routine — for example a single-skull routine into your show template, where that skull lives on other tracks and addresses. An ordinary paste goes by track position, so a single-skull routine's moves would land on whoever is in the first rows of the template, with that character's names and addresses. Copy To Character puts them on the right character instead. It works for arms, head, jaw, eyes and eye lights alike.

  1. In the routine you're copying from, choose Tools > Copy To Character…
    • Copy from — the character whose moves you want.
    • Copy to — the name of the character that should get them.
    • An existing character in the routine you'll paste into, or a new character for that routine.
    • Copy every event in the selected tracks — tick it to take whole tracks from start to end; then one selected move on each track is enough.
  2. Right-click and drag a box around the moves to copy. (If you had already selected them, that selection is used straight away.)
  3. Go to the routine that should get them — use the Numbered List, or have both open with Cascade or Tile.
  4. Right-click where the moves should start and choose Paste to Character Here. The first move lands where you clicked; the rest keep their spacing.

An existing character: each move goes to that character's matching servo, by what the track does (right arm twist to right arm twist), and is converted to that servo's own settings the same way as above — the same share of its travel, so the arms move the same way with different numbers. The servo settings and addresses in the receiving routine are not changed. If a track's name doesn't have the character's name yet, it is renamed — "Larry R Arm Twist" becomes "PaPa VooDoo R Arm Twist". If the character has no servo for some of the moves yet (a skull that never had arms, say), RCP asks whether to add them as new tracks, starting at the row you right-clicked.

A new character: right-click in an unused row — the new tracks go there and in the rows below it, so leave enough unused rows. Each new track gets the character's name and exactly the settings and addresses it had in the routine you copied from, because the hardware is already set up at those addresses. If another track in the receiving routine already uses one of those addresses, that track is added without an address and RCP lists it so you can set it in Settings — two tracks never drive the same servo.

Existing moves in the way are handled like any paste — you're asked before anything is replaced — and the whole paste is one Undo step. The copy stays ready, so you can paste it into more routines.

When a paste would overlap something

Two events can never overlap on the same track — that rule is absolute, because the hardware can only be told one position at a time. So if a paste would land on top of existing events, RCP stops and shows you exactly which ones are in the way, with their track, timecode and duration:

The Overlapping Events dialog listing each conflicting event with its track, timecode and duration, offering OK and Overwrite
Every event in the way, named — then OK or Overwrite
ButtonWhat happens
OKNothing is pasted and the routine is left exactly as it was. This is the default button, so pressing Enter is always the safe answer.
OverwriteThe listed events are deleted, then the full paste goes in.

A paste is all-or-nothing — it never puts in some events and quietly drops the rest. Long lists are trimmed to the first twelve with a count of the remainder, so the dialog can't grow past the bottom of your screen.

Overwrite deletes whole events, never parts of them

If a pasted event clips the end of a long existing one, Overwrite removes that existing event entirely — it does not shorten it. That is deliberate: trimming an event would silently change the motion it produces. A five-second ramp from 300 to 420 cut down to two seconds either never reaches 420 or gets twice as steep, and neither is visible on the timeline. Deleting is blunt, but the dialog names every event with its duration first, so a one-second paste about to remove a thirty-second move is something you see before you commit to it. Ctrl+Z puts it all back.

Pasting onto the wrong kind of device

Track numbers are easy to misjudge, and a position value means something completely different depending on what the track drives — a relay is simply 0 or 1, a Halloween Skulls servo runs 250–1250, a Pololu servo 2000–10000. So if events would land on a track driving a different kind of device, RCP names each one and asks whether that was really the track you meant. It happens when you paste onto other tracks. (Dragging events never changes their track — see below.)

This only triggers on a genuine change of device kind: servo onto relay, servo onto an LED dimmer, and so on. Moving motion between two tracks that drive the same kind of thing stays silent, even if their Min/Max/Default differ, because that is usually deliberate and it doesn't change the destination track's own settings.

Spacer tracks are the one case with no "do it anyway" option. They are labels, with no address and nothing attached, so an event on one could never do anything.

Adjusting a whole track's amplitude

To make a whole track move more or less — a jaw that should open wider, a head turn that's too big — right-click the track's name in the Channel column and choose Adjust Track Amplitude…. It works on any servo or dimmer track, and on every event on that track at once.

The slider runs from −80% to +80%, with 0% in the centre meaning no change. The timeline updates as you drag, and Cancel puts everything back.

Watch the real skull while you drag. Park the playhead on a move you want to judge (one of the biggest jaw moves in the show works well), then open the dialog: as you drag, the servo goes to that move's new end position. If the playhead isn't on a move, the track's biggest move is used. When you click OK the servo stays on the result; Cancel puts it back.

The amount shows on the track. After OK, the track name shows the amount in blue on the right — for example +40% — next to any amber Servo Offset number, so a scaled track is never invisible. Reset to 0% (or Undo) removes it.

  • + (More) moves each event's end position further from the track's Default, toward Max or Min on whichever side it already sits. A jaw opens wider; a two-sided servo like Rotate swings further both ways.
  • − (Less) pulls each event's end position back toward Default, so the motion gets smaller.
  • The track's Default position never changes, and start positions follow on automatically, as they always do.
  • It stops at 80% each way: at a full 100% every event would sit at its limit (+) or the servo would never move at all (−).
  • Relay (on/off) and spacer tracks don't offer it — there's no amplitude to scale.

You can come back and change it. The routine remembers each track's amplitude change and the events' original values. Open Adjust Track Amplitude… on that track again and the slider starts at the current amount (for example +30%); any new setting is worked out from the originals, so you can turn it up or down freely, and Reset to 0% puts the original values back exactly. If you edit that track's events by hand afterwards, the dialog says so and takes the events as they are now as its new starting point.

The change is part of this routine only — it rescales this routine's own events (so Helmsman plays it too), it is saved when you save the routine, and it is never carried into your templates, your saved default layout or other routines.

It's a single step in Undo, so Ctrl+Z reverses the whole track in one go. It replaces the old Boost Jaw Peaks item from the event menu, which only ever changed the events you had selected and could only go up.

Shifting a track's range in one routine (Servo Offset)

If a track's motion sits in the wrong place in one routine — a jaw or head move that doesn't reach far enough in an auto-generated part, or some other mistake in that routine — right-click the track's name and choose Adjust Servo Offset…. The slider shifts the track's whole range — Min, Default and Max — by the same amount, and the readout shows exactly what each becomes (for example Default 750 = 825). While you drag, the real servo moves to its corrected Default so you can watch it. You can also type an exact number.

To make a motion itself bigger or smaller, use Adjust Track Amplitude instead. It also works as a quick, temporary fix after a servo replacement done in a rush — a skull that now sits crooked — so the show can go on. Because the offset is saved with this routine only, it corrects just this routine; when you have time, straighten the servo properly in the board's own programming (offsets set with the Halloween Skulls configuration program) and then remove the offset here with Reset to 0.

  • The events are never changed. Tracks and events keep their values; RCP converts positions on their way out to the servo.
  • The offset is saved with this routine only. It is not added to your templates or your saved default layout, and it doesn't change any other routine — set it in each routine that needs it, and save the routine. Live Action uses the offsets of the routine that's open. Once a servo has an offset, its track name shows the amount in amber, for example +75. (Before version 1.0.0.33, offsets were saved on the computer and applied to every routine; the first time a newer version starts, it lists any of those old offsets once so you can re-enter them where needed.)
  • Near a hard limit (250 at the bottom, 1250 at the top for a Halloween Skulls servo), the end that would pass the limit stops there, while Default and the other end still move the full amount. Only the side that hit the limit is gently squeezed, so motion stays smooth.
  • Jaw and arm tracks whose Default equals Min work the same way.
  • To remove an offset, open it again and click Reset to 0.
RCP only — not Helmsman

Helmsman does not read Servo Offsets, so a routine played in Helmsman plays without them. If the routine will be played in Helmsman, correct the motion in the routine's own events instead — for example with Adjust Track Amplitude, which changes the events themselves.

Servo Reverse — and Match My Servo

Sometimes a servo runs the opposite way from the one a routine was written for. Two common cases:

  • A servo was replaced with one that turns the other way — for example a Hitec swapped for a Futaba of the same size, maybe as a quick spare during a show.
  • The routine was written for a servo that turns one way, but your skull or arms have one that turns the other way — for example arm scapulas mounted on the opposite sides of a different skeleton, so the twist that should swing out now swings in toward the body.

Why not just a "reverse" switch? A plain reverse mirrors every number around the middle of the range. That's only right when the track's Default sits exactly in the middle. If it doesn't, two things go wrong: the servo's rest position moves (so you'd have to take the skull apart and re-align it), and a lopsided range swaps sides — the side that should have plenty of room gets the short side's room instead, and a servo could be driven into something solid.

So RCP translates instead. You show it three positions on your real servo, and every move on the track is converted so the servo does what the routine meant:

  • The routine's Default becomes your servo's own rest position — it stays exactly where it's aligned now.
  • A move that goes, say, halfway from Default toward the routine's Max goes halfway from rest toward your servo's limit in that same physical direction — even if, on your servo, that's the lower number.
  • The same for the Min side, using that side's own room. Each side scales on its own, so a long side keeps its range.

Match My Servo — one routine

Right-click the track's name and choose Match My Servo…. There are three sliders, and the real servo moves to each position while you drag:

  • Rest (Default) — where the servo sits at rest.
  • Toward the routine's Max — how far it can go in the direction the routine calls "toward Max".
  • Toward the routine's Min — the same for the other direction.

Reversed servo fills in a straight reverse to start from — every position mirrored around the servo's centre (750 for a Halloween Skulls servo), so it rests at the same physical spot and simply moves the other way. For a servo whose Default is already 750, like the Halloween Skulls arm twists, that's usually all you need. Drag any slider to fine-tune. For a one-sided track such as a jaw or an arm lift, only the side it actually moves to is offered. The readout shows the track's new Min / Default / Max and "(runs the other way)" when it's reversed.

Click Convert… and RCP warns you that it is about to rewrite that track in this routine — its Min / Default / Max and every move on it. Choose:

  • Save a Copy First, Then Convert (recommended) — saves the routine as it is now beside it, as "name (before servo change).rcp", then converts. Use this when the servo is a temporary spare and the proper one is going back in later.
  • Convert Without a Copy — converts straight away.
  • Cancel — nothing changes and the servo goes back where it was.

What changes: the track's own Min / Default / Max in this routine's settings (Tools → Settings), and every move on that track. Your saved default layout is not changed, and RCP won't flag a converted track as "different from your layout" when the routine opens — it's different on purpose. Nothing in the board's own programming changes either.

The conversion is one Undo step. Because the routine itself is converted, it plays the same in RCP, Helmsman and VSA — nothing extra to remember at show time. Save the routine to keep it.

Match My Servo — your other routines

With Remember this change on this PC ticked (it is, by default), RCP remembers the change for that output address. Whenever you open another routine whose track at that address still has the old servo's settings, RCP lists it and offers to convert it too. Tick Do this automatically from now on and it's converted as soon as it opens. Either way, nothing changes on disk until you save — use Save As to keep the original. RCP keeps track of which routines it has already converted, so it never converts the same one twice.

To convert a whole library at once, choose Tools → Match My Servo: Remembered Changes…, tick the change(s) to apply and click Convert Routines in a Folder…. Every routine in that folder that was written for the old servo is first copied, exactly as it was, into a Before servo change subfolder, and then converted in place. Routines that don't need it are left alone, and a report shows what happened. Routines open in RCP are skipped — close them and run it again.

The same window lets you switch a change between Automatic and Ask first, or Forget it — for example once the proper servo is back in.

Which tool when?

Match My Servo — the servo runs the other way, or its rest and limits sit at different numbers. Converts the routine. Adjust Servo Offset — the whole range just needs nudging in one routine, without changing the events. Adjust Track Amplitude — the motion should be bigger or smaller. A Halloween Skulls board can also reverse a servo in its own programming (the Halloween Skulls configuration program); Match My Servo works with any board. Live Action on a serial board has its own Reverse box for each feature on the Feature Selection rows (the jaw doesn't need one — its Default is always closed and it opens toward the other end).

Undo and Redo

Ctrl+Z and Ctrl+Y cover every timeline edit — creating, deleting, moving, resizing, pasting, Mirror & Repeat, Overwrite and Adjust Track Amplitude. The Edit menu names what it is about to undo ("Undo Paste", "Undo Move Event(s)") so you can check before committing.

Each open routine keeps its own separate history, so Undo always applies to the routine you are looking at and can never reach into another window. The last 25 edits per routine are kept.

Bezier easing

Right-click an event → Enable Bezier Easing to trade its straight linear ramp for a two-handle curve, shaped directly in the Plot view. Drag the near-start handle to shape how the servo leaves its start position; drag the near-end handle to shape its approach. Saved in a .curves sidecar and auto-flattened to 16 linear steps on VSA export, so it still plays correctly in Helmsman/VirtualHaunt.

A Bezier-eased event's curve with both drag handles visible in the Plot view
An eased event's curve and its two drag handles, shown in the Plot view
07

Audio: Mixer, Vocal Isolation & Bounce

Full walkthrough for every new song — from raw audio files to the one mixed-down WAV that actually gets played back on the hardware.

The Audio Track Mixer

  1. Open the Audio panel and import your file(s) for this routine. There's no fixed limit on how many tracks a routine carries — a full song might have separate lead vocal, backup vocal, and instrumental files, or just one fully-mixed file.
  2. Each imported file gets its own mixer strip: volume, left/right balance, a start offset (to nudge one file's timing relative to the others), and mute / solo / lock. For an exact level, double-click the Volume or Balance slider and type the value: volume 0–200 %, balance −100 (full left) to 100 (full right), 0 = centre. The master volume in the header bar works the same way.
  3. Assign each track's output device if you're using multiple sound cards for different sounds in different rooms; otherwise leave it on the default.
  4. Use mute/solo while you work to hear one track in isolation without changing anyone else's levels.
Audio mixer panel showing several imported tracks
The mixer panel with several tracks imported — one strip per file

Extracting lead and backup vocals from one mixed file — Jaw Stems

If you only have a single, fully-mixed song file (lead and backup vocals already combined), Tools → Jaw Stems… uses AI vocal separation to split it into a Lead Vocal, Backup Vocals, and Instrumental file before you run the Jaw Programmer on each — so your lead singer and backup singer's jaw tracks can be generated independently, without you cutting stems by hand first.

  1. Import the fully-mixed song file as you normally would, then open Tools → Jaw Stems… and browse to it (or run it directly against an already-imported track).
  2. Three processing parameters, adjustable before running: Noise gate (in dB — how quiet a moment has to be before it's treated as silence), Jaw smoothing (in ms), and Phrase gap (in ms — how much silence separates one phrase from the next). The dialog shows live progress and the underlying separation engine's own log output while it runs — expect this step to take a few minutes (longer on a machine with no GPU), with real percentage updates that can go quiet for a stretch at a time. A second, continuously-animated bar and an on-screen reminder stay up the whole time specifically so a slow stretch never looks like a freeze.
  3. When it finishes, click Save Stems… — the Lead Vocal, Backup Vocals, and Instrumental files land in the Audio Track Mixer as three new tracks, each with its own strip, ready to balance like any other imported audio.
  4. Run the Jaw Programmer once on the Lead Vocal track (for your Lead Vocal character) and once on the Backup Vocals track (for the backup voices) — each gets its own accurate jaw track instead of one track trying to represent everyone at once. Highligh the track you want to program to select it before running Jaw programming on it. The backup singers share the one backup track as they usually sing in unison.
Jaw Stems dialog with Noise gate, Jaw smoothing, and Phrase gap sliders, mid-separation
Jaw Stems — Noise gate / Jaw smoothing / Phrase gap, running
Audio Mixer with three resulting tracks: Lead Vocal, Backup Vocals, Instrumental
The three resulting tracks, ready in the Audio Mixer
About Vocal Separation — click "Disclaimer" in the dialog for this anytime

This is a quick, automated shortcut — not a replacement for professionally mixed stems. Results vary by song: lead vocal and instrumental separation are usually solid, but backup vocal isolation can be inconsistent, and on some songs it may be unusable. Treat the output as a starting point that may need manual editing before it goes into your final routine.

For songs where the automatic separation isn't good enough, Halloween Skulls recommends karaoke-version.com — thousands of songs available with studio-quality stems, including separate Lead Vocal, Backup Vocals, and Instrumental tracks (plus individual instrument stems). This is where we source many of our own tracks.

This same text appears in-app the first time you open Jaw Stems, and anytime after via the dialog's own Disclaimer link (top-right) — check "Don't show this again" to stop it popping up automatically.

CPU-only today

There's no GPU acceleration path yet, which is the main reason a single song can take several minutes. AI audio separation is a genuinely fast-moving field — as faster and better-quality models (and real GPU acceleration) become practical to bundle, we intend to update this feature to use them. The separation engine itself now ships fully self-contained (compiled, models bundled in) — no Python install or internet connection needed on your machine to use it.

Jaw Programmer

Run this once per character, on that character's own isolated vocal file (or the single mixed file, if you're not separating vocals). It reads amplitude directly from the audio and writes jaw-servo events automatically, with a built-in 164ms offset correction the same way every VSA routine has quietly relied on. This is the one manual step AGR depends on — AGR reads jaw tracks, it never writes them.

Volume (100–500%) is a plain gain boost applied to the audio before anything else — raise this if your source file just isn't loud enough overall, without touching how the loud and soft moments relate to each other. This is deliberately separate from Compression, which reshapes that relationship (brings quiet moments up relative to loud ones) — cranking Compression to fix a too-quiet source also flattens out the real range of motion, since it narrows the gap between the loudest and softest points instead of just making everything louder. Use Volume first for a quiet source, then Compression only if you also want quiet passages to move the jaw more than they naturally would.

Which way the jaw opens. The track's Default is always the closed position, and generated jaw moves open toward whichever limit is farther from Default. Halloween Skulls jaws rest at Min and open toward Max; a home-built jaw whose servo opens toward the lower number just needs Default (and Max) set to closed and Min to open.

Adding jaw for a small piece of audio later. Jaw moves are only created where the ticked audio files have sound — mute and solo in the mixer don't matter here, only the ticks in the Jaw Programmer's own list. So to add jaw for a short clip you added afterwards, tick just that clip. If the jaw track already has moves, RCP asks: Replace all of them, or Add into the empty parts only. "Add into the empty parts only" keeps every existing jaw move and adds the new ones only where the track is empty — like pasting into a gap; any new move that would overlap an existing one is left out, and RCP tells you how many. Change Jaw Settings on the result window puts the track back exactly as it was before you started, so you can try again without losing anything, and the whole visit is one Undo step.

Jaw Programmer dialog before running, with the Volume slider above Compression
Jaw Programmer, ready to run against the selected track and audio file

Bounce Mix

Once every audio track's volume and balance is set the way you want it, choose Tools → Bounce Mix (save the routine first). You don't need to select anything: it mixes the whole routine down to one file exactly as the mixer is set right now — muted tracks left out (and only the soloed ones if any track is on Solo), every track's volume, balance and position on the timeline, and the master volume — and saves it next to the routine as [RoutineName].wav, replacing any earlier bounce of that name. This bounced file is what actually gets played back by Helmsman/VirtualHaunt and the real hardware, and what AGR's beat/lyric analysis uses.

The bounce replaces the audio tracks straight away. As soon as it finishes, the bounced file takes the place of all the tracks that went into it, so what you hear in RCP is exactly what was bounced. A message confirms it — to reverse the bounce and get the original tracks back, use Edit → Undo (Ctrl+Z); its only button is Close Message. Your original audio files are never changed, and nothing is saved until you save the routine. If the routine already uses an earlier [RoutineName].wav as one of its tracks, RCP asks first, because the new bounce overwrites that file and Undo could bring the track back but not its old sound.

Order matters

Finish balancing your tracks and running the Jaw Programmer on each character before you bounce — if you change a volume or re-run jaw programming afterward, bounce again so the played-back file matches what AGR analyzed.

08

What AGR Needs From You

Auto Generate Routines reads what you've already built and writes everything else — it never invents the parts that define your show.

Required before running AGR, either mode
  • A template-based routine (see sections 2–4) with every track named following the [Character] [Function] convention.
  • Jaw servo tracks already programmed for every speaking/singing character — see the Audio section above.
  • A bounced audio file. Run Bounce Mix first, or supply a WAV exported from your own DAW — same result either way.
  1. With jaw tracks done and audio bounced, go to Auto Generate Routines → Discover Modes. It analyzes the audio in the background and shows its best guess for Banter vs. Singing sections as draggable, editable markers above the waveform. Drag a boundary to correct it, or right-click to add one by hand.
  2. Go to Auto Generate Routines → Generate Banter Mode Events or Generate Singing Mode Events depending on the section. Both run a quick pre-flight check and require Discover Modes to have run, (or manual markers placed) first.
Auto Generate Routines menu with Discover Modes, Generate Banter Mode Events, and Generate Singing Mode Events
Auto Generate Routines — its own menu, next to Tools
Discover Modes result showing Banter and Singing sections above the waveform
Discover Modes result — drag the boundary to correct it
09

Banter Mode

Conversational dialogue — one pass writes head, eye, and arm motion for every speaking character.

Every rule in AGR answers to one governing idea: never give the audience a reason to stop believing they're watching characters, not machines. In Banter Mode that means:

  • Attention — whoever isn't speaking looks at whoever is, eyes leading the head, with independent 3-6 second timers driving natural wandering when no one's forcing their attention. About 1 in 11 looks uses an unsettling "side-eye" (head turns one way, eyes stay on the speaker) for texture.
  • Constant idle motion — every character has continuous, independent movement on tilt (a mix of subtle and bigger leans), so nothing ever sits frozen. Nod is used only now and then, as punctuation.
  • Group reactions — everyone looks at whoever is talking every time, even if they have spoken before.
  • Arm gestures — pulled and remixed from a library of real recorded reference moves, never repeating any gesture twice on the same character within a routine. Arms that only move one way from their rest position (the Setup Wizard rests a right arm at its Max, and a left arm's Lift and Elbow at Min) always get real motion, never an event that just sits at Default.
  • Mr. Head — rises with his own Up routine from the Motion Library before his first line, and stays up through the Banter section. At the end of it he goes down (spotlight off, lift down, eyes back to centre, eye LEDs fading out) unless his next line comes within 10 seconds, in Banter or Singing. As he rises, everyone else looks at him: eyes first, then the head turns toward him and nods down for about a second, comes back up while still facing him, and after about 4 seconds they go back to looking around — each a few frames apart, never in lockstep.
Nod safety — every skeleton, both modes

Auto Generate never takes a Nod servo below 600 on a Halloween Skulls servo (the same point on any other controller's range) — lower risks the jaw hitting the neck and burning out the jaw servo. Apart from looking down at Mr. Head, nearly all nod motion is between Default and the upper limit. Your own +Value/-Value limits in Settings are always obeyed on top of this.

Generated arm events across a Banter section and into a Singing section, for three characters
Generated arm events for three characters — the Banter section on the left, running into Singing on the right
10

Singing Mode

Music and vocals — a lead performer plus a backup group, all locked to the song's real beat and phrasing.

Required before running Singing Mode
  • Everything Banter Mode needs (jaw tracks, bounced audio), plus:
  • A Lead Vocal designated in Scene Map. Without one set, Singing Mode generates nothing at all — it has no way to know who's the featured singer versus backup. (This is normally already done in your template — see section 2.)
  • A song with a detectable beat. Rhythm analysis handles the vast majority of real recordings; a cappella and unusually loose-tempo tracks are the edge cases worth a second look after generating to make sure they are following the song the way you would like.

What it generates

  • The lead performs independently — real recorded arm gestures, stretched to read as slow and deliberate, with the head loosely following whichever arm joint moves the most in each gesture.
  • The backup group is generated once on a reference performer whenever two or more of them are singing together, then copied or mirrored to the rest — so they're never independently improvising out of sync with each other. Arm choreography draws from both a fully procedural pattern library and a set of real hand-choreographed clips pulled from a premade show archive Made for this program, mixed automatically for variety. A repeated chorus always reuses the same choreography it used the first time, so the audience can actually recognize the repeat. Beyond the classic 3-performer trio, groups of From 2-5 automatically get one of three additional formations instead of everyone doing the exact same thing at once — Half/Half (the group splits into two smaller sub-groups), Alternating, and Chase (a build-hold-release wave that can roll across the group or reverse direction) — chosen and varied automatically, nothing to configure by hand.
  • Whoever has no arm hardware gets the reference performer's head motion instead, so no one's left doing nothing during a big ensemble moment.
  • Everyone's eyes lead their own head motion, beat-driven, the same way Banter Mode's eyes lead a look.
  • The audience stare — in the freestyle (not unison) parts, each skull now and then picks a random spot in the audience and looks right at it: eyes first, the head follows, the eyes stay locked on that spot while the head drifts a little, and after about 3 seconds it goes back to normal. Sometimes the same skull comes back to the same spot later. Every skull at its own times, with its own targets.
  • Nod as punctuation — the beat-locked head bob runs as a four-bar phrase only two or three times per song, plus the occasional short lift on a beat, so it stands out when it happens. A sudden loud blast or scream gets a quick startled head turn — rarely, so it stays a moment.
  • Mr. Head follows the same up/down rule as in Banter Mode: down after his part unless his next line comes within 10 seconds.
  • Motion stops when the music stopsThe party continues until the music stops.
  • High Swing Mode — automatic head bob for up-tempo songs. No toggle to flip: a song's own detected tempo decides it. At or above 120 BPM, the backup group gets a beat-locked head bob in its four-bar phrases (the bottom of the bob always lands right on a beat); at or above 130 BPM the lead singer gets one too. Each qualifying song gets a single bob per bar (on the downbeat) versus a double bob (downbeat plus beat 3) — slower qualifying tempos lean toward double, faster head bobs toward single, so it never looks rushed. All five numbers (both BPM thresholds, both double-bob percentages, and the tempo the percentages slide between) are editable in Tools → Settings → Program if the defaults don't feel right for your material. This is not through the whole song non-stop, it is used sparingly to highlight exciting musical segments in an up-tempo song with a great beat.

(See the generated-events screenshot in the Banter Mode section above — the same routine's Singing section, on the right, is the lead singer plus the backup group (in this case).

Close-up of the Lead Vocal (Singing Mode) designation in Scene Map
The Lead Vocal (Singing Mode) designation, close up
11

Regenerating Part of a Routine

Select a range of events (or just the arm tracks within one) and use Regenerate Selection to redo just that piece rather than the whole routine. It automatically uses whichever mode — Banter or Singing — the selection actually falls in, the same as a full Generate pass would for that stretch of the song. A dedicated dialog for arm-only selections lets you force single-arm, double-arm, or "whatever fits naturally" instead of leaving it to chance. Every Regenerate gives you something different from what was there — it never hands back the same result twice in a row.

Right-click context menu with Regenerate Selection among Mirror & Repeat, Enable Bezier Easing, and other event actions
Right-click a selection — Regenerate Selection sits alongside Mirror & Repeat and Bezier Easing
12

Playback & Safety Ramps

Play starts from the current playhead position; Stop returns to the start frame (double-click Stop to jump straight to frame 0); Pause/resume and Loop work as you'd expect. Play Frame at First Marker ramps every servo to its position at the first marker over a deliberate 3 seconds — useful for pre-positioning before a live run.

When a routine plays through to the end, the playhead returns to the start and waits there, so pressing Play again replays the routine rather than doing nothing.

Any time a servo's commanded position changes outside of normal playback — scrubbing, moving the playhead, dragging in Event Properties — it eases there over 400ms rather than snapping, to protect the mechanism.

Larger changes ease more slowly: after you edit an event and then move the playhead, and for Play Frame at First Marker, the servos take a full 3 seconds to reach their new positions. While a 3-second ease is running, RCP greys out all of its controls — menus, toolbar buttons, the timeline and keyboard shortcuts — and the status bar tells you why. This is intentional, not a fault: everything comes back by itself the moment the servos arrive. If you are in the middle of dragging something when an ease starts, the controls grey out as soon as you let go of the mouse button.

Playback never starts while any ease is still moving the servos. If you press Play during one (including the short 400ms ease), playback waits and begins as soon as the servos are in position; pressing Stop in the meantime cancels it. Why this matters: in versions before 1.0.0.28, pressing Play during a 3-second ease let the ease and playback both drive the servos at once. They fought each other, causing harsh jittering and a burst of very fast motion that can strip servo gears and damage 3D-printed parts. If you are running an older version, please upgrade to 1.0.0.28 or later.

Execution menu with Play All, Pause, Stop, Loop Play, and marker-based playback options
Execution menu — every playback control, with its shortcut
13

Working with Multiple Routines

Open several routines at once, copy events between them, and play them one after another from a numbered list.

RCP opens each routine in its own window inside the main frame. Open as many as you like — File → Open, Open Recent, or double-clicking a .rcp file while RCP is already running all add a routine rather than replacing the one you are working on. Only one routine is ever active at a time, and only the active one can play or drive hardware.

The main reason to do this is copying events from one routine to another. Select events in one routine, copy, click into another routine, and paste — the clipboard is shared across every open routine, and all four paste modes work between them exactly as they do within one routine. This is much faster than rebuilding the same motion twice when two routines share a track layout.

When both routines use the same track layout, preserve tracks, preserve time is usually what you want: the events arrive on the same tracks at the same timecode. If the layouts differ, RCP will tell you when something is about to land on a track driving a different kind of device, or on a track number that doesn't exist in the shorter routine.

Undo is kept per routine, so Ctrl+Z only ever affects the window you are working in.

The Window menu

ItemWhat it does
Numbered ListShows the active routine on its own, filling the frame. This is the normal working view.
CascadeStacks every open routine in an overlapping diagonal, each sized wide enough to read its timeline.
TileArranges every open routine side by side in a grid, all visible at once.
Create PlaylistOpens the playlist window described below. Shown as a link, since it opens a window rather than changing a setting.
1, 2, 3…Every open routine, numbered. Click one to switch to it; a checkmark marks the active routine.

After a Cascade or Tile you can still drag and resize the windows freely — the arrangement is a starting point, not a lock.

Playing the list in order

Window → Create Playlist opens a small floating window listing every open routine in order. It plays them top to bottom, and that is deliberately all it does: Play, Pause, Stop, Loop List, drag-to-reorder, and a trash button to remove one. Whichever control is currently engaged lights up, so you can see at a glance what the list is doing.

The list and the numbered routines are the same thing seen two ways — dragging a row here reorders the Window menu too. Adding and removing routines is done by opening and closing them; the trash button simply closes the routine you have selected.

With Loop List on, the list returns to the first routine after the last one finishes and keeps going, which is what you want for a show running unattended all evening. With it off, it stops at the end.

Save List… and Open List… keep a show's running order for next time. Save List writes a small .rcplist file with the routines in their current order and the Loop List setting. Open List opens every routine in it, each in its own window, in that order — ready to press Play. If you move the routines to another folder or computer, keep the list file in the same folder as the routines and RCP will still find them. You can also simply double-click a saved list in Windows: RCP opens (if it isn't open already) with the playlist window showing that list, ready to press Play.

Damaged events are removed automatically. Very occasionally a routine file contains junk events that can't be shown on the timeline — on tracks the routine doesn't have, ending before they start, or with positions no servo can reach. They're invisible, but they can make a short routine keep playing for minutes after its last move. When RCP opens such a routine it leaves them out and tells you how many; everything you can see is unchanged. Save the routine to keep it clean. Helmsman ignores the same events.

Missing audio never stops the show. If a routine's audio file isn't where the routine says it is (common after copying routines from another computer), RCP looks for a file with the same name in the routine's own folder and uses it, just like Helmsman. If the audio truly can't be found, the list skips that routine and carries on with the next one, and a small notice (which stays on top but doesn't stop anything) lists every routine it skipped and the audio file it was looking for. The Synced Video Playlist follows the same rule.

The main toolbar's Loop is disabled while the playlist is in use

There are two loops in RCP and they do different jobs: the main toolbar's Loop replays the current routine, and the playlist's Loop List wraps the whole list. Looping one routine would stop the list from ever advancing, so while the playlist window is open — or a list is playing — the main Loop switches off and greys out. Close the playlist (and stop list playback) and it comes right back.

The top two rows lock while it plays

Once the list is running, the routine that is playing and the one immediately after it are greyed out and marked [playing] and [next]. Everything from the third row down can still be dragged around freely. The next routine is held because RCP is already preparing it — reordering it mid-load is the one thing that could disrupt the run. The locked pair moves down the list as playback advances.

You can keep working while it plays

Opening another routine during playback adds it to the bottom of the list in the background without interrupting the show, and removing any routine other than the one currently playing is equally safe. Switching to a different routine by hand does stop playback — that is deliberate, since only one routine can ever be live at a time.

Not a replacement for Helmsman

Like RCP's other Playlist (next section), this is a convenience for running routines back to back while you work — not a show-runner. There is a short pause of a couple of seconds between routines while the next one's audio loads. Helmsman remains the tool for running a real show.

Window menu showing Numbered List, Cascade, Tile, Create Playlist, and the numbered open routines with a checkmark on the active one
The Window menu — arrangement modes, Create Playlist, and every open routine numbered
Several routines arranged side by side with Tile, each showing its own timeline
Tile — every open routine visible at once, each with its own timeline
Several routines stacked in an overlapping diagonal with Cascade
Cascade — overlapping, each still wide enough to read its timeline
The playlist window listing the open routines, with Play, Pause, Stop, Loop and a remove button
The playlist window — Play, Pause, Stop, Loop, drag to reorder, and remove
14

Synced Video Playlist

Auto-advancing show-runner for Synced Video routines, built into RCP itself.
If you're not sure what a Synced Video Routine is, It is when you filmed your routine and wanted to display the video along-side the actual skeletons where the Video matches precisely what you are seeing in real time. To make it work, the Video track must be the same length as the Routine and the audio must start at the same time. This playlist eliminates drift that would occur if you simply started play on both files simultaneously.

The Playlist window opens automatically the moment a Synced Video routine loads (toggle it off with the Playlist checkbox on the main toolbar if you're just testing files, not running a show). Drag-and-drop routine and filler-audio files directly into the table to build a running order; drag rows to reorder them (locked once an entry is "Up Next" within 5 seconds, to prevent an accidental last-second reorder).

Load the first routine manually as always (double-clicking it in its folder works, and opens it without any layout question), then press Play — from the main toolbar/menu, Enter, or the Playlist window's own Play button all do the same thing. As long as the Playlist has routines in it, a routine finishing on its own always moves the show on to the next entry. When a routine finishes naturally, its placeholder image shows automatically, a short filler audio clip plays (the one deliberately audible sound in RCP outside your actual show audio), and the next routine loads silently behind it — the instant filler ends, RCP presses Play for you automatically and moves on, with no operator action needed in between. Since Synced Video no longer needs any manual confirmation to engage, a whole playlist of these routines now runs start-to-finish with no operator input required at all.

Right-click any entry for STOP here (pauses the auto-advance chain after that entry — the operator has to press Play manually to continue past it, useful for an intermission or a planned pause) or Remove. Set a placeholder image via Select Placeholder Image… — that's what shows on the second screen during any filler-audio gap between routines. Save/Load a whole running order as a .rcplaylist file to reuse a show's lineup later without rebuilding it by hand each time.

Not a replacement for Helmsman

This exists in RCP as an emergency backup path, not the primary way to run a real show — Helmsman remains the intended dedicated show-runner. Use this when Helmsman genuinely isn't available.

15

3D Preview

RCP has its own built-in, live 3D preview of your cast — View → Show 3D Preview opens a floating window (drag it to a second monitor or make room by re-sizing on a single monitor. This is similar to Virtual Haunt). It renders every character positioned per Scene Map's stage layout, driven by the exact same routine data your real hardware receives: jaw, head rotate/nod/tilt, eyes, and arm lift/twist/elbow are all live as you scrub or play the timeline.

Halloween Skulls hardware flagged in Scene Map automatically gets the correct HS servo-reverse convention applied in the preview, so what you see mirrors real hardware behavior.

A single skull with no Scene Map profile — or your own custom hardware, wired opposite Halloween Skulls' convention — has no per-character setup for that automatic correction to key off. The Reverse Jaw checkbox below the preview window is there for exactly that case: check it if the virtual skull's jaw is opening and closing backwards compared to your real one. Like Servo Calibration below, this is visual-only — it changes nothing about what your real skull actually does; it only corrects which way the 3D model moves so what you see on screen matches what's really happening on stage. Leave it unchecked for any character that already has a real Scene Map profile — it has no effect there either way, since those are already using their own correct setting.

3D Preview window showing the Reverse Jaw checkbox below the rendered skull
The Reverse Jaw checkbox, bottom-left of the 3D Preview window

Servo Calibration (Tools → Servo Calibration…) lets you fine-tune how a routine's programmed values map onto the 3D model, per character and servo — pick one, drag a slider until the model matches your real hardware, Apply, Save. This is visual-only: it never touches real DMX/servo output, only how the preview renders.

Where this is headed
16

Live Action — Real-Time Interactive Mode

A live, mic-driven interactive skull — no timeline playback, just a real-time performance running until you stop it.

This is a different mode of operation from everything else in this guide. An operator Speaks into a mic; RCP analyzes it live, drives a jaw track straight to a virtual skull in real time, and sends the same mic audio — delayed and optionally voice-changed — out to a powered speaker behind the skull, timed so the audience hears the line arrive right as the jaw catches up Keeping the jaw in sync with the audio, a feature not found in any other voice to servo boards. To my knowledge this is the only software version of a live talking skull out there which means you don't need to buy any extra hardware to make this work. Open it from Tools → Live Action….

Live Action can also record a session straight into your open routine's real timeline events — head motion, eye aim, and eye LED color all become ordinary Events you can see and edit afterward in the main timeline, exactly like AGR-generated ones. See "Recording a session into your routine" below.

Tools menu with Live Action... entry, below Servo Calibration and above Convert Controller Type
Tools → Live Action…

The two modes

  • Automatic — the jaw is driven by the mic the same as always; head rotate/nod/tilt wander on their own, semi-randomly, so the skull looks alive even when no one's specifically controlling it.
  • Joystick — jaw motion is unchanged, but rotate/nod/tilt come from a joystick instead (a virtual joystick just using your mouse, a real physical USB joystick, or webcam head tracking — see below), so an operator watching a wireless camera feed can aim the skull's gaze at a specific real person in real time. While Automatic is selected and the session hasn't been Started yet, The skull slowly scans the area looking around rather than sitting still. Touching the joystick (Virtual or Physical) takes over immediately ("roaming override") and goes back to the idle wander after 5 seconds of no further input.

Skull config — which hardware this drives

The Skull config dropdown decides where each axis's real DMX address comes from. It offers three kinds of entries:

  • Real characters — if a routine is currently open in RCP, its own configured characters appear here automatically, using their own actually-configured hardware (whatever Setup Wizard set up for them). You can also click "Load config from file…" to read a Template or Routine file purely for its addresses, without opening it as the active routine or touching anything else in RCP — useful for running Live Action with nothing else open.
  • Halloween Skulls Settings — the default. A fixed Halloween Skulls servo table; see the box below for why one entry covers every board.
  • Skulltronix Settings — the same idea for Skulltronix hardware, using Skulltronix's own real address layout and axis names (their "Twist" axis is Live Action's Rotate).
  • Serial servo controller — an older serial servo board on a COM port instead of DMX. See "Serial servo controllers" below.
Skull config dropdown open, listing Sidney (open routine), Halloween Skulls Settings, Skulltronix Settings and Serial servo controller
The Skull config choices — a character from the open routine first (here the unnamed solo skull, "Sidney"), then the Halloween Skulls and Skulltronix settings, then the serial controller
One entry drives every board — no board number needed

Picking Halloween Skulls Settings or Skulltronix Settings sends the same live values to every board of that same family at once, not just the selected one — whichever board your skull actually is will move, without you needing to know or confirm which.

Real characters are unaffected by any of this — picking one from the dropdown always uses that character's own actually-configured address, exactly as set up in Setup Wizard, whether or not a routine is open or a config file is loaded. Picking a real character is always something you do yourself from the dropdown, never automatic just because the option became available.

Serial servo controllers

DMX stays the default, and nothing about it changes. If your skull runs on an older serial servo board instead, pick Serial servo controller in Skull config. The Eye Color box is replaced by a Serial Controller section:

  • Controller — Lynxmotion SSC-32 / SSC-32U, Pololu Maestro (Micro / Mini), Pololu Serial 8-Servo (legacy), Mini SSC II (also PicoPic 20 in its Mini SSC mode), Parallax PSC, or Pontech SV203.
  • COM port — listed with each device's own description (for example "COM5 — CP2102 USB to UART Bridge"), so you can tell which one is your board. Click Refresh after plugging it in.
  • Baud rate — preset to the board's factory default. It must match the board's own setting. It's the same per-port setting Settings uses, so changing it here changes it there too.
  • Skull Features… — tick what your skull actually has: Jaw, Rotate, Nod, Tilt, Eyes L/R, Eyes U/D and Eye LEDs. Ticking Eye LEDs offers Single Color or Tri Color. Only ticked features are driven, recorded and saved — a jaw-only skull, or a jaw and rotate only, works fine.
  • A row per feature — Channel, Min, Max, Default and Reverse. Picking a controller fills in safe starting values in that board's own units (shown under the rows); they're deliberately a little narrower than the full range so nothing slams into an end stop on the first run. For the jaw, Default is always the closed position, and the jaw opens toward whichever limit is farther from it — usually Min is closed and Max is open, but a jaw that opens toward the lower number works too: just set Default (and Max) to closed and Min to open. That's why Reverse isn't needed for the jaw. The same rule applies everywhere RCP makes jaw motion — Live Action and the Jaw Programmer — on any board, DMX or serial.
  • Safety — the number boxes ignore the mouse wheel until you click into one, so scrolling the window can't change a channel or a servo limit by accident. If two features share a channel, both turn red with a note, and Start won't go live until each has its own channel.
Live Action with Serial servo controller chosen: the Serial Controller section shows Controller Lynxmotion SSC-32 / SSC-32U, COM port, Baud rate, the Skull Features button, and rows for Jaw, Rotate, Nod, Tilt, Eyes L/R, Eyes U/D with Channel, Min, Max, Default and Reverse, plus Eye Red, Eye Green and Eye Blue rows with Lit checkboxes
Serial servo controller chosen — the Serial Controller section takes the Eye Color box's place. SSC-32 starting values shown, with Tri Color eye LEDs.
Controller dropdown open in the Serial Controller section, listing Lynxmotion SSC-32 / SSC-32U, Pololu Maestro (Micro / Mini), Pololu Serial 8-Servo (legacy), Mini SSC II / PicoPic 20 (Mini SSC mode), Parallax PSC and Pontech SV203
The six serial controllers RCP can drive
Serial Controller rows close-up: Jaw channel 0 Min 1000 Max 1500 Default 1000; Rotate, Nod, Tilt, Eyes L/R, Eyes U/D on channels 1-5 at 1000/2000/1500 with Reverse checkboxes; Eye Red, Eye Green, Eye Blue on channels 6, 7, 8 with Lit checkboxes
One row per ticked feature — SSC-32 starting values in microseconds. The jaw rests closed at Default (here, Min); each eye LED colour has its own channel.
Skull Features dialog with checkboxes 1. Jaw through 6. Eyes U/D and 7. Eye LEDs, and Single Color / Tri Color choices below
Skull Features… — tick what your skull has; Eye LEDs adds the Single / Tri Color choice
Main window timeline showing the empty serial template: Jaw, Rotate, Nod, Tilt, Eyes L/R, Eyes U/D, Eye Red, Eye Green, Eye Blue tracks at the top
The empty template in the main window — one track per ticked feature, in the standard order

Choosing the serial controller puts an empty template in the main window: one track per ticked feature, in the same order the DMX boards use, already set to your board, COM port, channels and ranges. If the file open in the timeline has real work in it, you're asked whether to save it first (Cancel keeps it; the template then appears when you press Start with Record on). Record to Routine works exactly as it does for DMX.

Eye LEDs on a serial board are on/off only

Most of these boards can only switch an output fully on or off, so serial eye LEDs switch on at Start and off at Stop — no fades, no brightness, no colour mixing. With Tri Color, tick Lit on whichever of red, green and blue should come on. Eye LEDs are available on the SSC-32, Maestro and Mini SSC; the other three boards have no on/off output RCP can drive.

Which hardware Live Action drives

Live Action now supports many device types — HalloweenSkulls Servo, DMX Servo, DMX Dimmer, and Relay — because it sends its output straight into the DMX universe, the same path a routine's own DMX tracks use. Legacy serial Controllers are now included in the Live Action feature so you can now choose "Serial Servo Controller" in "Skull config" to set SSC-32, Pololu, Maestro, or Parallax hardware on a COM port will show those specific axes in a popup displaying all the settings that you will need to set to match you skull settings.

Eye color

Pick an LED eye color from the color swatch, and set overall Brightness (0–255, scales all three color channels together). The eyes stay off while the skull is just idling/roaming with no session running; the moment you press Start, they fade up to the chosen color over 2 seconds, and fade back down over 2 seconds once you press Stop — the fade-down genuinely keeps animating for its full 2 seconds even after Stop, it doesn't cut off instantly. If you're recording (see below), both fades are captured as real events too — one fade-up event at the start of the recording, one fade-down event at the end — not just shown live and then lost.

Recording a session into your routine

Check Record to Routine, next to Start, and everything you do live gets written into the currently open routine as real timeline Events once you press Stop — this is what lets Live Action fully replace hand-puppeteering-and-hoping: perform it live once, then fine-tune the resulting events afterward exactly like any other track. You need to have a template loaded that matches your skull unless you choose Halloween Skulls Settings or Skulltronix Settings. A source loaded purely via "Load config from file…" can't record, since there's no real open routine or template to write events into.

  • Head motion (Rotate/Nod/Tilt/Eyes L-R/Eyes U-D) is captured continuously and segmented into a clean set of events once you stop — the same already-smoothed, gear-protected motion you saw live, not a raw noisy trace.
  • Eye LED color becomes a fade-up event at the start and a fade-down event at the end, matching exactly what you saw fade on screen.
  • Jaw is handled differently, on purpose. Your raw mic audio is saved as a new audio file on the routine, and the moment you stop, RCP automatically runs the same proven Jaw Programmer algorithm (see above) against that saved file — using whatever Volume/Compression/Smoothing you last had set in the Jaw Programmer dialog — to generate the jaw track. This gives the recorded jaw the same real range of motion as running Jaw Programmer by hand would, rather than trying to capture and smooth a live envelope in a way that could never quite match how it actually sounded live. If the recorded jaw feels short on range of motion, open Jaw Programmer once, raise Volume to compensate for a quiet mic source, and it'll be used automatically next time.
Every Start counts down: 3, 2, 1

Pressing Start always shows a large on-screen countdown (centered over the window, high-contrast red-on-dark with a yellow border) before anything actually goes live — a beat to get your hand on the joystick or your mouth near the mic before real output begins. This happens every time, whether or not you're recording.

A safety check for custom skull sources

The first time you press Start after picking a real character or a loaded config file (never for Halloween Skulls Settings or Skulltronix Settings — those are known-safe hardcoded profiles), a confirmation dialog lists exactly which axes and DMX addresses are about to go live and asks you to confirm your real skull matches. It only asks once per selection — switching sources re-arms it, but Stop/Start on the same source won't nag you again.

Bottom of the Live Action window during a session: Stop button, Record to Routine checked, red REC 00:15 indicator, status Live.
Recording in progress — Record to Routine checked, live REC indicator
Large red number 2 centered over the Live Action window, status reading Starting...
The 3-2-1 countdown overlay, shown on every Start
Confirm Skull Before Starting dialog listing Jaw/Rotate/Nod/Tilt/Eyes L-R/Eyes U-D addresses, Yes/No buttons
Confirm Skull Before Starting — shown once per custom-source selection
Main timeline after a Live Action recording, showing Jaw/Rotate/Nod/Tilt/Eyes L-R/Eyes U-D/Eye Red events and the audio mix waveform
The result: a Live Action recording, back in the main timeline as ordinary events — head motion, eye color, and the auto-generated jaw track

Setting up a session

  1. Pick a Skull config entry (see above) and confirm the mode (Automatic or Joystick).
  2. Pick a capture device (your mic) and a playback device (the speaker behind the skull). If you don't have a physical mic available on the machine you're running this on, check "Use an audio file instead" and browse to a voice recording — This is also a way to create an entire single skull routine. Load the jaw track move the skull with any method, and record the result.
  3. In Joystick mode, choose Virtual (on-screen), Physical (USB joystick), or Camera (head tracking) — see the joystick section below.
  4. Set Audio Delay — how long the mic audio is held before it reaches the speaker, compensating for your real DMX/servo round-trip latency (the same number the Jaw Programmer's own 164ms offset correction is built around). Preview Lag is a separate control, right next to it: it holds back only the on-screen 3D preview by the same idea, simulating how long it actually takes real hardware to visibly react to a DMX command — keep these two roughly matched if you want what you see on screen to line up with what you'd hear/see from real hardware.
  5. Pick a Voice Changer preset if you want one (Off, Deep/Monster, Small Creature, Robot, Demon Growl). If your on-screen preview's jaw looks like it's moving backward compared to your real skull, check Reverse jaw direction — this only ever affects the preview, matching it to what your real hardware is already doing; it never changes the actual signal sent to the real skull.
  6. Check Record to Routine if you want this session written into your open routine's timeline (see above).
  7. Press Start, wait through the countdown. The jaw meter shows live mic level; the embedded 3D preview shows exactly what the skull is doing, whether or not any real DMX hardware is even connected.
Live Action window in two columns: Skull config, Mode, Mic, Speaker, Jaw sensitivity, Voice, Audio Delay, Preview Lag and Max Speed on the left; Eye Color, Jaw level, Joystick and Live 3D Preview on the right; Start and Record to Routine along the bottom
The Live Action window — settings down the left; Eye Color, the jaw meter, Joystick and the 3D preview on the right. It opens big enough to show everything at once. Start and Record to Routine are pinned along the bottom, so on a short screen the settings scroll while Start always stays in view.
Live Action dialog in Joystick mode using the on-screen Virtual joystick, red dot showing current aim
Joystick mode, Virtual (on-screen) source selected — drag the red dot to aim the skull
Live Action dialog in Joystick mode with Physical (USB joystick) selected, no device detected
Joystick mode, Physical (USB joystick) source selected — device dropdown + Refresh, shown here with none plugged in
Live Action dialog in Joystick mode with Camera (head tracking) selected, camera tracker starting
Joystick mode, Camera (head tracking) source selected

Joystick — on-screen, a real physical USB joystick, or your webcam

Choose Virtual (on-screen) for the built-in mouse-driven joystick, or Physical (USB joystick) to read an actual joystick — a device dropdown with a Refresh button appears, listing every joystick Windows currently sees. X/Y drive Rotate/Nod exactly the same way the on-screen joystick does, including the same gear-protection speed/damping limits. If the device has a twist/rudder axis (e.g. a flight-stick-style joystick like the Logitech Extreme 3D Pro), it drives Tilt directly — a more natural match than the diagonal-drag trick the on-screen joystick uses, since a mouse has no twist axis of its own. A plain two-axis stick with no twist grip still covers all three — Tilt automatically falls back to that same diagonal-drag math (how far you push into a corner), so a simpler, cheaper joystick works just as completely as one with a dedicated twist axis.

Choose Camera (head tracking) to aim the skull with your own head instead of a joystick — a bundled webcam-tracking helper watches your face and Rotate/Nod/Tilt all follow your own head movement directly (tilt included, unlike the joystick sources' diagonal-drag approximation). Nothing to install separately; if no webcam is available or tracking can't start, a note appears explaining why and the skull simply stays centered rather than reacting to nothing.

Testing without a physical microphone

Check "Use an audio file instead" and browse to a voice recording (WAV works best — RCP checks a WAV's real channel count and averages a stereo file down to mono itself rather than trusting a generic automatic downmix, which real testing found could distort the signal on some files). The file plays through the exact same analysis/delay/voice-changer pipeline a live mic would, once through start to finish, then the session ends on its own — load a new file or switch back to Live Mic to continue, it won't loop automatically. This is a genuinely useful way to rehearse jaw response and dial in Audio Delay/Preview Lag/Jaw Sensitivity before ever plugging in a real mic.

Gear protection

Max Speed caps how fast Rotate/Nod/Tilt are allowed to move (fastest allowed edge-to-edge sweep time) and adds damping against rapid direction reversals, so a fast joystick flick — physical or on-screen — or a fast automatic wander can't slam a servo straight to an extreme or whip it back and forth. This applies to every mode and every joystick source equally. No amount of software limiting can fully protect against a determined, continuous rapid wiggle; the on-screen warning next to the joystick says so directly. Set this to whatever your own servos can actually tolerate — the shipped default is a starting point, not a measured spec for your hardware.

Settings persist, the loaded file doesn't

Skull config selection, mode, device choices, joystick source, Audio Delay, Preview Lag, voice preset, Reverse jaw, Jaw Sensitivity, Max Speed, and eye color/brightness are all remembered the next time you open the dialog. The loaded test audio file is deliberately the one exception — it's never auto-reloaded, so you always start a fresh session by picking on purpose.

Confirmed against real hardware

Every part of Live Action has now been run against real equipment: a real skull over real DMX hardware, a real microphone, a real physical USB joystick, and Camera (head tracking) against a real webcam and a real skull. Jaw response, eye LED color/fade, head motion, the full Record-to-Routine capture-and-generate pipeline, and all three joystick sources (Virtual/Physical/Camera) are confirmed working.

17

Hardware, Relays & Video

What's real on the wire today, the new unified Relay type, migrating an old routine to a new controller, one-shot video effects on the timeline, and a whole-show background video locked to your audio.

Supported controllers

The Settings → Device Settings Type dropdown lists the device types RCP can actually drive today: DMX Servo, Relay, DMX Dimmer, HalloweenSkulls Servo, SSC-32 / SSC-32U Servo, Pololu Servo, Maestro, and Parallax Servo. A Legacy Devices ▶ submenu off the same Type button additionally offers MiniSSC Relay, Maestro Relay, SSC-32 / SSC-32U Relay, and (added 2026-08-07) SV203 Servo, K108A Relay, and SMI Motor — real, working options for older boards, once their real protocols were tracked down from surviving manufacturer manuals (see below). Structurally-incompatible or unrecovered-protocol types (LPT, PicoPic, EnduranceRC) still aren't offered for a new track — but a routine that already used one still opens and saves correctly, and can be migrated forward with the converter below. EnduranceRC specifically stays RCP-only-as-metadata by design: it plays back correctly in Helmsman for old shows, but RCP deliberately never gains real EnduranceRC output, so a new routine can't be authored against it here.

Serial boards talk exactly the way Helmsman talks to them

RCP sends every serial board (SSC-32 / SSC-32U, Mini SSC, Pololu, Maestro, Parallax, SV203) the same bytes, at the same speed and with the same port settings, as Helmsman — the player those boards are proven to work with.

Connection speed (baud rate). Each COM port uses, in this order: the speed you set for it in Settings → right-click the Port column → Set Baud Rate; otherwise the speed saved in the routine file for that port (the same one VSA and Helmsman use); otherwise 9600 (Parallax: 2400). The SSC-32 and SSC-32U are one entry each now — if your board is jumpered or set to a different speed, just set it once with Set Baud Rate. When you save, RCP writes the speed it actually uses into the file, so the same routine plays in VSA and Helmsman too.

SSC-32: one command per servo (#0 P1500), exactly as Helmsman sends it. If the board's connection is still busy sending the previous moment, RCP skips ahead to the newest positions instead of letting motion fall behind.

Maestro: positions are in microseconds (500–2500, centre 1500), the same as VSA and Helmsman; routines saved by older RCP versions are converted automatically when opened.

Which COM port is my board? Find My Serial Boards

Windows only shows the USB chip on a servo board ("USB Serial Port"), never the board's name, and the COM number changes from one computer to the next. Instead of unplugging devices one at a time to see what disappears, click Settings → Device Settings → Find My Serial Boards….

RCP asks each COM port which board is on it. A Lynxmotion SSC-32 / SSC-32U answers with its name and the speed it's set to, and RCP remembers that board (by its own USB serial number, so it's recognised on any COM number) and uses that speed from then on. Pololu Maestro boards name themselves to Windows already. From then on the Port lists show the board's name, e.g. COM5 — Lynxmotion SSC-32U, and if this routine's SSC-32 or Maestro tracks point somewhere else, RCP offers to switch them to the board it found.

It's safe to run with your show connected: ports that are DMX or Halloween Skulls adapters are skipped without being touched, and the only thing sent to the other ports is a "who are you?" question. Close VSA and Helmsman first — only one program can use a port at a time. Older boards (Mini SSC, Parallax, SV203 and others) can't answer that question; they show in the Port list with the board type you've assigned to them.

Routines travel between computers but COM numbers don't: when you open a routine whose SSC-32 or Maestro tracks use a port that isn't your board on this computer, RCP offers to move them to where the board actually is.

Parallax Servo Controller / PSC-USB

Parallax Servo now sends real commands — previously picking it did nothing at all. Works with both the original serial PSC and the PSC-USB (#28823), since they speak the same command language over whichever connection your board actually has.

SV203, K108A, and SMI Motor — three more old boards brought back to life

Three older controller families gained real output on 2026-08-07, once their genuine wire protocols were tracked down from surviving manufacturer documentation rather than guessed at:

  • SV203 Servo (Pontech SV203/SV203B/SV203C) — plain ASCII commands (BD0 SV1 M150-style), confirmed against the surviving V1.20 manual. Position range is 1-255 with 128 as center, matching the board's own documented scale.
  • K108A Relay (Ozitronics/KitsRUs K108/K108A) — 8-relay ASCII on/off commands, confirmed against the original K108 and K108U manuals. Works exactly like the other relay types above: pick the type, RCP fills in correct Min/Max/Default, events just toggle.
  • SMI Motor (Mondo-tronics Serial Motor Interface #3-511) — drives two brushed DC motors per board. Turns out to use the exact same 3-byte wire packet as MiniSSC, just with motor-band values instead of servo position (0=coast/stop, 1-31=reverse, 32=brake-stop, 33-63=forward) — RCP's Min/Max/Default for this type are set to that real safe range, not a generic 0-255 guess.
Not yet tested against real hardware

All three are built directly from surviving manufacturer manuals, not guessed at, and compile/run cleanly — but none of this project's own hardware happens to be SV203/K108A/SMI, so none have had a live confirmation pass yet. Flag it here if any of these don't behave as expected on first real use.

The unified Relay type

Pick Relay as a track's Type and RCP fills in Min/Max/Default for you — you only ever think in plain on/off. Behind the scenes it sends real DMX values that avoid the true 0/255 endpoints some relay boards treat as ambiguous. On a Relay track, just creating a new event toggles it: the first one turns it on, the next turns it off, alternating — you never enter a value by hand. The event's box can be drawn as long as you like for visibility at any zoom level; only the moment it starts matters, since the relay holds whatever state it was last set to until the next event changes it.

Don't have a DMX adapter? MiniSSC Relay, Maestro Relay, and SSC-32 / SSC-32U Relay, under Type → Legacy Devices, drive a relay over those boards' own serial connection instead — real on/off thresholds/commands matching each board's actual spec, not a guess (the SSC-32 pair uses the board's real Discrete Output command, straight from the manual — a genuinely different command from a servo move, not a repurposed pulse width). All of these work the same way as the unified Relay type above: pick the type, RCP fills in correct Min/Max/Default, events just toggle.

SSC-32, Mini Maestro group-move, and Parallax not yet tested against real hardware

MiniSSC Relay and Maestro Relay are both confirmed working with real relay hardware. SSC-32/SSC-32U Relay is implemented against the board's real documented Discrete Output command, not a guess, and compiles/runs cleanly — but hasn't had a live confirmation pass against real SSC-32 hardware yet. The same goes for the new Mini Maestro group-move command and Parallax Servo support: both are built directly from the manufacturers' own real documentation, not guessed, but neither has been run against real hardware yet either. Flag it here if any of these don't behave as expected on first real use.

Convert Controller Type

Tools → Convert Controller Type… migrates an old routine built for one controller onto a new one — for example, an old SSC-32 show (500/1500/2500 pulse widths) moving to DMX (250/750/1250). Pick the type you're converting from (every historical type is listed, even the retired ones — this list is just choosing which tracks to touch) and the type to convert to (current types only). Every matching track's events are rescaled using that track's own already-configured Min/Max as the source range, so a servo you've already fine-tuned converts correctly instead of snapping to a generic default.

Convert Controller Type dialog with From/To type pickers and Convert button
Convert Controller Type — SV203 Servo to DMX Servo, for example
Convert Controller Type From dropdown open, listing every historical device type including retired ones
"From" list — every type ever supported, including retired ones, so old routines are never orphaned
Convert Controller Type To dropdown open, listing only current device types
"To" list — current, drivable types only

Bandwidth Test

Tools → Bandwidth Test checks whether your currently configured devices can actually keep up with RCP's 30 fps timeline — not a live hardware probe, a computed check against the routine's own device/port configuration. Two things get checked:

  • Legacy serial ports (MiniSSC, Pololu, Maestro, SSC-32/SSC-32U, Parallax) — worst case, every channel on that port changing in the same frame, against what the port's baud rate can actually transmit inside one frame. A "may lag" result doesn't necessarily mean you'll ever notice it — typical playback moves far fewer channels at once than the worst case this checks for. If a port is ever too busy, RCP skips ahead to the newest positions rather than letting motion fall behind.
  • DMX addressing — overlapping or out-of-range channel assignments across your DMX/HalloweenSkulls Servo tracks, a real correctness problem (two tracks silently fighting over the same channel) rather than a speed one.
Bandwidth Test dialog reporting no issues found, 87 channels assigned with no overlaps
Bandwidth Test — a clean result on a real routine

Video effect clips

Short, one-shot video effects on the timeline — a lightning flash, a jump scare. In RCP's own words, right in the Add Video Clip dialog: "Fires once, like a jump-scare or lightning flash — not synced to audio." It plays once when the playhead reaches it and runs through to its own natural end. Add the first one via Tools → Add Video Track…; after that, a persistent Video Tracks panel appears at the bottom of the timeline, one strip per clip, working the same way the Audio Mixer's tracks do (the panel itself is invisible until at least one clip exists, which is why the Tools menu entry point exists).

Add Video Clip dialog with Video file, Fires at frame, Output screen, and Mute fields
Add Video Clip — Video file, Fires at (frame), Output screen, Mute

Each strip has a color swatch, the clip's name, live Mute and 🔒 Lock buttons, a Volume slider (0–100%), and a screen-picker button showing which monitor the clip targets. Drag the clip's bar left or right along the timeline to move it — it snaps to frame 0 and to the playhead, and double-clicking it resets it back to frame 0. Drag a strip's name area (or right-click it) to reorder tracks, exactly like reordering audio tracks. Right-click also offers Edit… (change the file, initial screen, or start frame) and Remove Track.

Video Tracks panel with one clip strip showing Mute, Lock, Volume, and screen picker
Video Tracks panel — one strip per clip, plus Add Track
Requirements
  • A video file already edited the way you want it — .mp4, .mov, .avi, .mkv, .wmv, or .m4v. There's no in-app trim or fade for these clips: if you're bringing video into RCP, you're expected to have already cut it the way you want it in a real video tool first.
  • A screen for it to appear on — RCP lists every monitor Windows currently sees.

These clips are deliberately simple: they are not synced or drift-corrected against your audio track — that's a different, harder job, covered next. Two clips can play at the same time on different screens with no restriction, but per the dialog's own rule, "two clips can't target the same screen at overlapping times" — RCP blocks the save and names the clip it collided with, since one monitor can't show both at once.

Synced Whole-Show Video

A single full-length background video — a pre-rendered 3D environment, a looping backdrop, whatever your show needs — that plays for the whole routine, with its own embedded audio as the show's only sound. This is a different, harder problem than the effect clips above: it isn't manually placed on the timeline at all. RCP finds it automatically from a simple file-naming convention and keeps it in sync on its own, perfectly, for the length of the whole routine — because there's nothing to compare against and correct anymore. The video's own playback position is the show's clock, directly, for everything: DMX, servo/arm movement, all of it. No separate audio file, no two clocks that could ever drift apart in the first place.

Requirements
  • Two files, same name, same folder — only the extension differs: your routine (MyShow.rcp) and a video file (MyShow.mp4, or .mov/.avi/.mkv/.wmv/.m4v).
  • The video's own embedded audio becomes the entire show's sound. If the routine also links an audio file (for example the same-named .wav from older shows), RCP simply ignores it while the video is in charge — whether that file exists or not — so you never hear the song twice. The link stays in the routine; switch Synced Video off for that routine in Synced Video Settings and its audio comes back.
  • The video is used even if the routine runs a few seconds longer than the video: the routine finishes at whichever comes later, the end of the video or the last programmed event.
  • A routine with no same-named video plays normally with its own audio, and the show screen shows your placeholder image — handy for a sneak preview of a routine whose video isn't finished yet. Video and non-video routines can sit in the same folder; RCP decides routine by routine.
  • RCP re-checks for this pair every time the routine is opened and turns sync on automatically — there's nothing to confirm or turn on by hand as long as the files are named and placed correctly. Renaming or removing the video file locally is a normal, deliberate way to opt a copy out of synced playback, e.g. while editing away from a show computer.
  • A second monitor for the full-screen output. On a single-monitor machine, the Synced Video Preview window (below) opens itself automatically instead and becomes the only place you'll see the video.

Once detected, a status bar button appears at the bottom of the window — 🎬 Synced Video: filename → screen name — click it to open Synced Video Settings, where you can turn sync off for this routine or override which screen it targets. Everything else, including keeping picture and sound in sync, is fully automatic and needs no attention during a show.

4K video: the same window has Draw video with the graphics card (smoother 4K), which applies to every routine on this computer. With it off, the computer's processor prepares every frame before drawing it — fine for 1080p, but too slow for 4K on many computers, so the picture looks choppy and runs a little behind the sound. With it on, the graphics card draws the frames directly. It's the same player and the same clock either way, so the skeletons stay in sync exactly as before; only the picture changes. It takes effect immediately — try it with one of your 4K routines before a show.

Status bar showing Synced Video: Hex Coven.mp4 → HP N270h
Status bar indicator — filename and target screen, live
Synced Video Settings dialog with detected filename, enable checkbox, and output screen picker
Synced Video Settings — opens when you click the status bar indicator

The Synced Video preview window

A resizable window, pinned to RCP's own screen, showing exactly what's playing full-screen on the target screen — literally frame-identical, not just close, since both come from one shared decode pipeline rather than two separate video players. Turn it on/off by hand any time via View → Show Synced Video Preview.

A dropdown in its bottom-right corner switches between two modes:

  • Show Mode (the default) — a small fixed-size overlay tucked into the corner of your screen, meant for an operator to glance at during a real show while the real output plays full-screen on Screen 2.
  • Edit Mode — for editing without a Screen 2 attached at all, e.g. on a laptop. Resize and move this window however you like; RCP remembers its size and position from then on instead of resetting it back to the small corner box every time you open a routine.

On a single-monitor machine, this window now opens itself automatically the moment a Synced Video routine is active — you don't need to reach for the View menu first, since without Screen 2 this is the only place you'll see the video at all. On a real show rig with Screen 2 connected, nothing changes: it stays off unless you turn it on yourself.

Synced Video Preview window with captioned video playing and the Show Mode/Edit Mode dropdown
Synced Video Preview — live, captioned footage with the Show Mode/Edit Mode selector, bottom-right
"Screen 2 Not Detected"

If synced video is enabled but RCP can't find any screen besides its own, you'll get a loud pop-up warning, not just quiet status bar text — this condition is a real troubleshooting signal during real show setup (almost always a bad cable or a monitor that didn't wake up), so it's deliberately hard to miss. If you're intentionally working on one monitor on purpose (e.g. servo/arm calibration at a desk), this is expected and fine — dismiss it and keep going; the preview window opens itself automatically and shows real, live frames the whole time.

RCP's role here

This feature exists in RCP as an editor/preview tool and an emergency backup path — not as a replacement for Helmsman, which remains the dedicated show-runner for actually operating a real haunt. If you're running a live show, Helmsman is still the intended primary player.

Exporting: VSA, xLights and CSV

A routine is saved as an .rcp file, which VSA and Helmsman can already read. When you need another format:

  • File → Export as .vsa… — a plain VSA copy of the routine, for VSA itself or for anyone who needs the .vsa extension.
  • File → Export to xLights (.fseq)… — the routine as an xLights sequence: every DMX channel's value on every frame, at the same DMX addresses your hardware uses. In xLights, set up models at those same addresses. Save the routine first; the export is a copy.
  • Tools → Export as CSV… (F4, the same key as VSA) — a spreadsheet of every frame's position for the tracks you pick. Include Initial Positions adds a first row with each track at its Default; Sparse Data Output writes -1 where a track has no event instead of repeating its last position — both work exactly like VSA's own options.
  • File → Package Routine for Sharing… — gathers the routine and the files it uses into one package to send to someone else.
18

Settings — Every Tab, Every Choice

A complete reference for every tab, column, and menu inside Settings. Most of it you'll only ever touch once per hardware setup — Setup Wizard and Templates are already covered in "Building a Character Template" — this section exists to have every single control in one place.

Open Settings from Tools → Settings… or the gear icon on the toolbar. It has six tabs: Device Settings, Tracks, Timing, Port, Audio, and Program. Export Defaults… sits bottom-left on every tab; OK/Cancel sit bottom-right — nothing on any tab is written back to the routine until you click OK, and Cancel discards everything you changed in this session, including a pending Clear All Tracks.

Export Defaults… — for the standalone external VirtualHaunt app

Writes Documents\VirtualHaunt\rcp_defaults.txt — port configuration, every track's skull/feature/reverse mapping, and Scene Map stage positions — for the separate, standalone VirtualHaunt app to read on its own next startup. It's manual-only, not automatic on every save: click it right before you plan to use standalone VH, once your track layout and Scene Map are the way you want them.

Device Settings — the track table

One row per track, in the fixed, permanent order they were first created in (see "Track order is permanent" earlier). Setup Wizard…, Create Template, Select Template…, and Find My Serial Boards… (finds which COM port each servo board is on and names it in the Port lists — see Which COM port is my board?) sit above the table — Setup Wizard and the template workflow are both covered in full in "Building a Character Template"; the template-match indicator to their right tells you when the current track layout's addresses match a saved template closely enough (90% or more) to be considered the same hardware setup.

Device Settings tab, full track table with Setup Wizard/Create Template/Select Template buttons and template match indicator
Device Settings — the full track table, template match confirmed against "Your Template Name"
ColumnWhat it controls
EnableWhether this track's events actually output anything during playback. A disabled track keeps all its data — nothing is lost, it's just silenced.
TrackRead-only track number (1-based).
NameEditable text. Follow the [Character] [Function] convention so AGR and every other automatic-detection feature can recognize what the track is for.
TypeWhich controller protocol drives this track — see below.
PortWhich COM port (or DMX adapter) this track's Type sends its output over.
AddrThe channel/address on that port, numbered from 0 exactly as VSA numbers it, so a familiar routine looks the same here as it always did.
DMXRead-only: the same channel as a DMX channel number (Addr + 1). Real lights, fog machines and other fixtures are set by this number. Hover over Addr or DMX to see which card and channel it is, e.g. "Card 8, channel 29 of 32".
+Value / -ValueThis track's real max/min travel — the physical safe range for this specific servo or fixture. RCP never sends anything outside it, on any track, during playback, previews, ramps or Live Action — even if events were programmed further. Change the values at any time; the new limits apply immediately, and widening them again brings the original programmed motion back (the events themselves are never changed).
DefaultRest/idle position — where the track sits with no event active.
ColorThis track's color on the timeline. Click the swatch to change it.

Double-click any Addr, +Value, -Value, or Default cell to type an exact number (0–2000) instead of editing in place.

Edit Max (+Value) dialog opened by double-clicking a +Value cell
Double-click Addr / +Value / -Value / Default — same small editor for all four

Reserved addresses — Halloween Skulls and Skulltronix cards

Animatronic control cards take their configuration commands on some of their own DMX channels. Anything else sent there — a light, a fog machine, another servo — reaches the card as a command and can make it misbehave, change its settings, or stop responding altogether. These addresses are not spare channels: never put anything on them.

  • Halloween Skulls cards: every card uses a block of 32 channels, and the last four of each block are its configuration channels (Command, Data 1, Data 2, and a 32nd that must always be 0). The channel just before them is the card's eye strobe, a one-channel LED dimmer.
  • Skulltronix boards (BoC and SoC): DMX 1–7 (Addr 0–6) are where their configuration program stores settings, for the whole DMX line — Skulltronix says no device on the line should use them.

RCP protects only the cards your routine actually uses: a Halloween Skulls card counts when one of its characters is marked as Halloween Skulls hardware in the Scene Map, or when its tracks have the Halloween Skulls layout. Blocks you use only for lights are left alone.

Halloween Skulls cardReserved Addr (as in VSA / RCP)DMX channels
128, 29, 30, 3129–32
260, 61, 62, 6361–64
392, 93, 94, 9593–96
4124, 125, 126, 127125–128
5156, 157, 158, 159157–160
6188, 189, 190, 191189–192
7220, 221, 222, 223221–224
8252, 253, 254, 255253–256
9284, 285, 286, 287285–288
10316, 317, 318, 319317–320
11348, 349, 350, 351349–352
12380, 381, 382, 383381–384
13412, 413, 414, 415413–416
14444, 445, 446, 447445–448
15476, 477, 478, 479477–480
16508, 509, 510, 511509–512
Skulltronix (whole line)0–61–7

In Settings: an empty leftover track sitting on a protected address (for example a "Device #29" from a VSA template) is shown as a locked grey HS Reserved row (Skulltronix Reserved for DMX 1–7) that can't be edited. A real track on one is marked red until it's moved, a protected address can't be typed into any track, and OK is refused while an enabled track still sits on one. Setting a HalloweenSkulls Servo on a card's eye-strobe channel gets a warning too — a servo uses two channels, so its second one would land on the card's Command channel.

Opening an older routine with tracks on protected addresses lists them, with two choices:

  • Auto-move to next available addresses — each track goes to the next free address outside every card's block, and lights that use several channels (R, G, B, W…) move together. An eye strobe that was set as a HalloweenSkulls Servo by mistake isn't moved: its Type becomes DMX Dimmer where it is. The list shows every track's old and new Addr and DMX numbers — set each real fixture to its new DMX address to match; nothing is saved until you save the routine.
  • I will manually change the addresses — nothing is changed; fix them in Settings.

Closing the message with the X also leaves everything as it is. Either way, while a track still sits on a protected address RCP sends nothing to it — those channels always go out as 0, the card's "no command" value. Helmsman (3.3.26 and later) does the same when it plays the routine.

Halloween Skulls and Skulltronix in one routine (very rare): RCP changes nothing and blocks nothing — it shows a warning with every reserved address for every card in that routine and the track on each, and Open Printable Chart opens it in your web browser to print. Real damage can occur to real hardware if this is not corrected. A Halloween Skulls card set to board 1 uses DMX 1–32, so it can't share a DMX line with Skulltronix boards at all: set it to another board number with HS_Config first.

The Type column — every device this build can drive

Click a row's Type button for a menu of DMX Servo, Relay, DMX Dimmer, HalloweenSkulls Servo, SSC-32 / SSC-32U Servo, Pololu Servo, Maestro, and Parallax Servo, plus a Legacy Devices ▶ submenu (MiniSSC Relay, Maestro Relay, SSC-32 / SSC-32U Relay, and more). Every entry in this menu now drives real hardware — as of this build, nothing here is placeholder-only anymore. If a future device type is ever added before its real protocol is implemented, it's labeled right on the menu, e.g. "(no real output yet)" — it would still load/save/export fine, it just wouldn't drive real hardware yet. Picking a new type refills that row's +Value/-Value/Default with sensible defaults for that device.

Type dropdown menu open, showing modern types, Legacy Devices submenu expanded, and the Spacer entry
Type menu — modern types, Legacy Devices submenu, and Spacer at the bottom

Spacer tracks — organizing a long list

— Spacer —, at the very bottom of the Type menu past a separator, is the one entry in that list that isn't a real device — it's a yellow divider row for visually grouping a long track list (e.g. marking where one skull's tracks end and another's arm tracks begin). A spacer is always disabled, has no address or port, and shows — in every numeric column; only its name is kept, and it exports a minimal disabled record so row positions stay aligned for VirtualHaunt. Converting a row that already has real data (an address, or a name that isn't the default "Device #N") to Spacer asks for confirmation first, since doing so clears that data.

Convert to Spacer? confirmation dialog with Convert to Spacer and Keep Original buttons
Converting a populated row asks first — nothing is cleared silently
Two yellow Spacer rows, End Skulls and Begin Arms, inside the Device Settings track table
Spacer rows in the table — "End Skulls" / "Begin Arms" dividing a long list
The same spacer rows shown grayed out on the main Timeline view
The same spacers on the main Timeline — grayed out, no waveform/plot lane, just a divider

Column header menus — bulk edits

Click Enable ▾, Track ▾, or Port ▾ directly on the header bar (not a row) for bulk options:

  • Enable ▾ — Enable All, Disable All, Enable range… (a From/To dialog; tracks inside the range are enabled, everything outside is disabled), and Disable all unused tracks (disables any track with zero events referencing it — a no-op message appears if there's nothing to disable).
  • Track ▾ — quick track-count picks (50 / 128 / 256 / 512) or Custom… for any number 1–512. Raising the count adds new default tracks named "Device #N"; lowering it below where real events already exist is blocked with a warning and clamped to the minimum that keeps that data.
  • Port ▾ — pick a port name first, then choose All tracks or a range of tracks in the follow-up "Set Port" dialog; tracks outside a chosen range keep whatever port they already had.
Enable header menu open: Enable All, Disable All, Enable range..., Disable all unused tracks
Enable ▾ header menu
Enable Track Range dialog with From/To track number spinboxes
Enable range… — From/To track numbers
Track header menu open: 50, 128, 256, 512 tracks, and Custom...
Track ▾ header menu
Port header menu open, listing NONE and HalloweenSkulls - DMX
Port ▾ header menu, step 1 — pick a port (only real/known ports are ever listed)
Set Port dialog with All tracks / a range of tracks radio choice and From/To track number spinboxes
Port ▾, step 2 — the new "Set Port" dialog: all tracks, or just a range

Create Template / Select Template

These are the same buttons covered in "Building a Character Template" — shown here for completeness. Create Template asks for a name and saves the current track layout plus Scene Map (no events, no audio) into Documents\VirtualHaunt\Templates. Select Template… lists every saved template there; opening one closes Settings without saving any of the current dialog's changes and opens that template as a new routine instead.

Create Template dialog with a default name field pre-filled with today's date
Create Template — name defaults to today's date
Open Template dialog listing saved templates
Select Template… — pick one to open as a new routine

Tracks tab

Choose how many tracks are displayed. The minimum allowed is one more than the highest track number that already has an event on it — you can't shrink the list out from under existing data. Above 512, RCP warns and refuses: a DMX universe is hard-capped at 512 channels.

Tracks tab with track-count spinbox and Clear All Tracks and Start Fresh button
Tracks tab

Clear All Tracks and Start Fresh… deletes every track and all event data, and asks for a new starting track count. This only actually happens when you click OK on the outer Settings dialog — Cancel at any point (this dialog or the main one) discards the pending clear entirely, nothing is lost until you commit.

Clear All Tracks confirmation dialog with red warning text and a new track count spinbox
Clear All Tracks — the actual confirmation dialog, not just the button that opens it

Timing tab

Nothing to configure — a single fixed readout of the frame rate RCP runs at, kept in lockstep with your DMX adapters and Helmsman/VSA.

Timing tab showing 30 FPS, 33ms per frame, not adjustable
Timing tab — fixed, not adjustable

Port tab

Picks which COM port RCP's DMX output (ENTTEC USB Pro protocol) goes out on. RCP scores every port it sees on your system — a device that identifies itself as DMX/ENTTEC/HalloweenSkulls hardware, or has a HalloweenSkulls serial-number prefix, gets a ★ and is auto-selected; a plain FTDI chip (most generic USB-DMX adapters) is offered but not auto-picked; anything recognized as DMX-related but known to be incompatible with the ENTTEC Pro protocol is flagged with a ⚠ and triggers a one-time warning dialog per Settings session. Refresh rescans.

Port tab with DMX Output group, detected adapter, and channel-mapping note
Port tab — a detected, ready HalloweenSkulls adapter

A track only actually sends DMX when it's enabled, its Type is DMX Servo/DMX Relay/DMX Dimmer/HalloweenSkulls Servo, and its address is 0–511. HalloweenSkulls Servo tracks use two consecutive DMX channels per axis (16-bit, high byte first) — this is why its Addr column advances by 2 per track in a fully-addressed skull.

Audio tab

Add one or more audio files to the routine: Browse… for a file and it is added to the list straight away, then pick an Output device for it if you are not using the system default. (The Add Audio button is still there for the rare case where you type or paste a file path into the field by hand rather than browsing.) Each row gets its own AGC (compress and peak-normalize to a consistent loudness) and Gate (silence anything below -40 dBFS before compression, so the noise floor doesn't get amplified) checkboxes, both on by default; checking Gate reveals a Release slider (80–1500 ms) for that track. Select a row and click Delete Audio (or press Delete/Backspace) to remove it.

Audio tab with one loaded file, AGC and Gate checked, Release slider visible
Audio tab — one file loaded, Gate on, Release slider showing

Program tab

App-wide preferences (saved once for the whole program, not per-routine): Autosave — a background recovery copy on a timer, separate from your own Save, restored via Tools → Recover Autosaved Work — and High Swing Mode, the automatic BPM-gated head-bob effect for Singing Mode (see "Singing Mode" earlier).

Program tab with Autosave group and High Swing Mode group, five BPM/percentage spinboxes
Program tab — Autosave and High Swing Mode
High Swing Mode fieldMeaning
Backup singer(s), if applicable, eligible atTempo (BPM) at or above which the backup singer(s) get a beat-locked head bob. Applies whether there's one backup singer or several — nothing here assumes a fixed cast size.
Lead vocal also eligible atA separate, typically higher, BPM threshold at which the lead singer also gets the head bob.
Double-bob chance at low/high tempoEach qualifying song rolls once for single bob (downbeat only) vs. double bob (downbeat + beat 3) — the chance of double slides between these two percentages as tempo rises from the backup threshold toward the high-tempo reference below.
"High tempo" reference pointThe BPM at which the double-bob chance finishes sliding to its high-tempo value.

Crash Reports

If RCP ever crashes, it saves a local report the moment it happens, then on your next launch offers to help you send it in — never automatically in the background, and never from inside the crash itself. It opens your own default email program (Outlook, if that's what you use) with the report pre-filled and addressed to Halloween Skulls, so sending it goes through your own already-configured email account rather than any server RCP itself depends on. The full report is saved at Documents\Routine Creator Pro\last_crash_report.txt — since a plain email can't attach a file automatically, attach that one yourself before hitting Send.

The Crash Reports checkbox on this tab controls whether that prompt happens at all — it's on by default. Turning it off just discards the saved report on your next launch instead of offering to send it.

19

Shortcut Reference

Timeline navigation

  • Mouse wheel — horizontal zoom, anywhere in the timeline
  • Shift + wheel — vertical row-height zoom
  • Ctrl + wheel — horizontal zoom (alternate binding)
  • Click the ruler — move the playhead there
  • Drag a marker — reposition the First or Second marker

Event editing

  • Click an event — select it, isolate its track in the plot view
  • Ctrl + click — add/remove from multi-selection
  • Drag an event (or a selection) — slide it earlier or later; it always stays on its own track, so a selection can't end up on the wrong tracks. To move events to other tracks, use the Paste Here modes or Copy these motions to another character.
  • Right-drag on empty timeline — draw a selection box; keep dragging past the edge of the window and the timeline scrolls that way (sideways, up/down or both) until you let go
  • Drag an event's left/right edge — resize its start/stop
  • Double-click an event — open Event Properties
  • Right-click an event — context menu (properties, delete, copy, Bezier easing, etc.)
  • Delete — delete the selected event(s)
  • Ctrl+C / Ctrl+V — copy/paste (paste keeps the original tracks, at the First marker or the playhead)
  • Right-click the timeline — the four Paste Here modes, which choose whether track and time come from where you clicked
  • Ctrl+Z / Ctrl+Y — undo/redo, last 25 edits, kept separately for each open routine

Channel column & plot view

  • Right-click a track name — Adjust Track Amplitude… (scale every event on that track, −80% to +80%) or Adjust Servo Offset… (shift that track's range in this routine only) or Match My Servo… (convert the track for a servo that runs the other way)
  • Ctrl + click a track name — toggle it in/out of the plot's isolated set
  • Ctrl + click the "Channel" corner label — clear isolation, show every track
  • Drag the channel column's right edge — resize it
  • Drag the plot section's top edge — resize plot height

Layout

  • View → Track Background Color… — pick a base color; the alternating row shades derive from it automatically
  • File → Save Layout as Default — saves your whole startup setup: window/section visibility, zoom, row height, plot height, splitter position, background color, AND your full device configuration (track/device names, ports, servo ranges, Scene Map). The next time you launch RCP with no routine open, it comes up already set up exactly the way you left it — no need to reconfigure Settings from scratch.
  • Routines always play with their own settings. RCP never replaces a routine's track settings with your saved layout when you open it, and never asks — whichever way the routine is opened. To change a routine's settings, edit them in Settings and save the routine.
  • File → Revert to Factory Default Layout — clears the saved default above (affects future startups only; does not touch a routine you currently have open)
File menu with Save Layout as Default and Revert to Factory Default Layout
File menu — Save/Revert Layout live here now
View menu with section visibility toggles and zoom commands
View menu
Tools menu with Settings, Recover Autosaved Work, Import Audio, Add Video Track, Jaw Programmer, Scene Map, Servo Calibration, Convert Controller Type, and more
Tools menu

Show Lock & Keep Awake

  • Keep Awake is automatic: while RCP is open, Windows will not turn off the screens, start the screen saver, sleep or lock because nobody has touched the mouse or keyboard — so a projector stays on for the whole show. There is nothing to switch on.
  • Ctrl+Alt+H (H for Halloween Skulls) — Show Lock on / off. Locks the mouse and keyboard for the whole computer so you can walk away from a running show; press it again to unlock. Nothing is hidden: the timeline and everything on screen stay visible, and playback, video and DMX keep running. A red SHOW LOCK ON appears in the status bar — it deliberately does not show the keys. Helmsman uses the same Ctrl+Alt+H; if both programs are open, either one locks the whole computer.
  • Ctrl+Alt+Del always works too — Windows never lets any program block it — so you can never be locked out. Show Lock keeps casual hands off the show; it is not a password.
  • Windows' own lock screen (Win+L, or locking because you were away) always covers every screen, a projector included — no program can draw over it. Use Show Lock instead of locking Windows during a show, and turn off Dynamic Lock and "require sign-in after being away" in Windows' Sign-in options if the screens still go to the lock screen.

Getting help

The Help menu, top right: User Guide (this document), Track Naming Guide (the in-app reference for the [Character] [Function] keyword list VH export reads — see Building a Character Template above), Enter Activation Code…, Check for Free Updates… (tells you if a newer version of RCP is available and takes you to the download page), Tell Me About Updates at Startup, and About Routine Creator Pro.

Update notices. A few seconds after RCP opens, it quietly checks whether a newer free version is available. If you're up to date (or offline), nothing appears. If there is one, a single small notice says so — it never blocks the window or a running show, and you can choose Get the Update (opens the Halloween Skulls Downloads page), Remind Me in 10 Days, Don't Show This Again, or Close (you'll be told again next time you open RCP). Tick or untick Help → Tell Me About Updates at Startup to turn the notice back on or off at any time.

Help menu with User Guide, Track Naming Guide, Enter Activation Code, and About Routine Creator Pro
Help menu

Trial & activation

Routine Creator Pro runs fully-featured for a 14-day free trial — nothing is locked or limited during that time, and nothing pops up asking you to activate until the trial has actually run out. Once it has, you'll be asked for the email address and activation code you received on purchase before continuing. You can also enter one early at any time via Help → Enter Activation Code…, or from the same dialog click Buy Now… to open the purchase page.

20

What's Still In Progress

Honest status on anything mentioned above that isn't fully finished yet — see RCP Overview.html for the complete, continuously-updated feature inventory.

  • Bezier easing is functional but not fully polished end to end.
  • A macOS build is in the works — started, not yet complete. RCP's built-in 3D Preview (section 15) is the foundation this builds on, since the classic VirtualHaunt application itself can't run on Mac.
  • A Windows installer is built and working. A macOS installer/package will follow once the Mac build itself is complete.