DreamShow · manualFree download
Manual contents
Manual › Stage devices

LED masks

DreamShow drives Bluetooth LED masks of the Shining Mask family, worn by an actor or placed on a robot's face. From the timeline, a Mask… block changes the face displayed, shows a picture or an animation, scrolls a text, or makes the mask speak: its mouth moves in rhythm with a sound file.

The masks are driven by MaskCtl, a small program installed with DreamShow (in the software's tools folder), which connects to the masks over Bluetooth. DreamShow starts it by itself when the venue declares masks.

To open it: menu Venue > LED masks… (tooltip: “LED masks (Shining Mask) driven over Bluetooth by MaskCtl. The “Mask…” blocks of the timeline drive them.”).

Before you start

As the bottom of the window reminds you:

The LED masks window

The title recalls the venue: “LED masks: <venue>”. An asterisk * flags unsaved changes.

The list of masks

DreamShow passes the Mask… blocks' orders to MaskCtl by itself: there is nothing to declare other than the masks themselves.

Live tests (the mask must be connected to MaskCtl)

Buttons to test the selected mask right away:

The Show line is used to explore the mask's content:

As the window explains: “The arrows step through the numbers: that is how the mask's factory images and animations are found, which are documented nowhere. The same number is then set in a “Mask…” block of the timeline.”

Masks in range

If nothing is found: “No mask found. Is the mask switched on, and disconnected from the mobile app? A mask already driven by MaskCtl no longer announces itself: it is normal that it does not appear.”

Settings

At the bottom: “The “Mask…” blocks of the timeline target these names.”

MaskCtl started automatically

When the venue declares at least one mask and no MaskCtl is running, DreamShow starts it, minimised in the taskbar. The log notes “MaskCtl started automatically (pipe maskctl)”. Possible problems, flagged in the log:

The Mask… blocks

In the Libraries panel, the Others list contains Mask…. Drag it onto a track: the Mask block window opens at once (if you cancel it, no block is created). To edit a block: double-click, or right-click > Properties….

On the timeline, the block shows 🎭, the mask's name and the action, for example “🎭 Mask: Face: Anger”.

The common settings

The actions

Lip sync

The mouth “speaks” from a sequence computed by MaskCtl on a WAV file:

  1. When the show is opened, and after each change, DreamShow spots the Speak blocks and the robot lines that animate a mask's mouth.
  2. For each WAV file that does not yet have its sequence, it asks MaskCtl to compute it. The log notes “Mouth analysis by MaskCtl: …”. MaskCtl writes a file of the same name with the .seq extension next to the WAV.
  3. When the block passes, the mask plays this sequence.

Two ways of making a character speak:

The voice / mouth offset

A robot's loudspeaker may output the sound a little after the order. To compensate:

  1. Have the robot say a line with the mask's mouth, and watch.
  2. If the mouth is ahead of the voice, set a positive offset (in milliseconds): the mouth starts that much later.
  3. If the mouth is behind, set a negative offset: the order goes out to the robot sooner.
  4. Save and replay until the two coincide.

Step by step

Declaring a brand-new mask

  1. Switch the mask on, close its mobile app.
  2. Open Venue > LED masks…, click Search (6 s) (tick all Bluetooth devices if nothing appears).
  3. Select the mask found, click + Add the selected mask, then Save.
  4. Click Reconnect: MaskCtl attaches to the mask.
  5. Test with Rest, Surprise, Blackout, Light up.

Making a masked actor speak

  1. Convert the line to WAV and copy it into the show's media folder.
  2. Place the WAV on a sound track at the moment you want.
  3. On another track, at the same start, drag Mask…, action Speak (mouth on a WAV file), choose the same file, OK.
  4. Wait a few seconds for the log to report the mouth analysis, then play the scene.

Good to know

See also