Disguise (d3) Integration

Feed timecode to Disguise media servers for frame-accurate video playback sync.

What You'll Learn

  • Configure BPTimecode to output Art-Net timecode for Disguise
  • Set up Disguise to receive and chase timecode
  • Alternative setup using LTC audio input
  • Tips for reliable live production workflows

⏱️ Time: ~20 minutes

Prerequisites

  • BPTimecode installed and running
  • Disguise Designer or a d3 media server
  • Both systems on the same network (for Art-Net method)
  • Audio interface with LTC output capability (for LTC method)

📡 Which Method Should I Use?

Art-Net is preferred for most setups—it's all-digital, requires no additional hardware, and is extremely reliable over Ethernet.

LTC may be required if you need to integrate with existing LTC infrastructure or if your show control system expects LTC.

Method 1: Art-Net Timecode

Art-Net timecode is transmitted over your show network alongside DMX data. This is the cleanest integration method.

Step 1: Configure BPTimecode Output

  1. Open BPTimecode web UI (default: http://localhost:5050)
  2. Navigate to Routing
  3. Create or select an Art-Net output:
    • Name: Disguise TC
    • Protocol: Art-Net
    • Destination: Broadcast (255.255.255.255) or Disguise server IP
  4. Assign your timecode slot to this output
# CLI alternative: create Art-Net output
bptimecode output create "Disguise TC" --protocol artnet --destination 192.168.1.100

# Route slot 1 to this output
bptimecode route set 1 "Disguise TC"

Step 2: Configure Disguise to Receive Art-Net TC

  1. In Disguise, open Project Settings
  2. Go to Timecode tab
  3. Set Timecode Source: Art-Net Timecode
  4. If using unicast, ensure Disguise is listening on the correct network interface
  5. Set Frame Rate to match your BPTimecode slot (e.g., 24, 25, 29.97, 30)

💡 Frame Rate Matching

Disguise and BPTimecode must use the same frame rate. Mismatched rates cause drift and playback issues. Common rates:

  • 24 fps - Film/cinema
  • 25 fps - PAL broadcast
  • 29.97 fps - NTSC (drop-frame or non-drop)
  • 30 fps - Common for live production

Step 3: Set Up Timeline Chase

  1. In Disguise, open your Track or Section
  2. Enable Timecode Chase mode
  3. Set the Chase Offset if your timeline doesn't start at 00:00:00:00
  4. Test by playing timecode from BPTimecode—Disguise should follow
📸 Disguise Timecode Settings Panel

Method 2: LTC Audio Input

If you need LTC, BPTimecode can output timecode as audio that Disguise receives via an audio interface.

Step 1: Configure LTC Output

  1. In BPTimecode, go to Routing
  2. Create an LTC output:
    • Name: Disguise LTC
    • Protocol: LTC
    • Audio Device: Select your audio interface output
  3. Route your timecode slot to this output
# List available audio devices
bptimecode device list

# Create LTC output on device
bptimecode output create "Disguise LTC" --protocol ltc --device "MOTU UltraLite"

Step 2: Physical Audio Connection

  1. Connect an audio cable from your BPTimecode machine's audio output to the Disguise server's audio input
  2. Use a balanced line-level connection if possible (XLR or TRS)
  3. LTC is a robust signal but keeping levels healthy (-12 to 0 dBFS) improves reliability

Step 3: Configure Disguise LTC Input

  1. In Disguise Project Settings → Timecode
  2. Set Timecode Source: LTC
  3. Select the correct Audio Input device/channel
  4. Monitor the timecode display to verify signal is being received

Show Control Integration

For complex shows, you'll often want to trigger BPTimecode from a show controller (QLab, Companion, etc.):

# OSC commands for show control integration
/bptimecode/slot/1/play          # Start playback
/bptimecode/slot/1/stop          # Stop playback
/bptimecode/slot/1/timecode "01:00:00:00"  # Jump to time
/bptimecode/preset/recall "Act2Start"       # Recall named preset

This allows your show controller to:

  • Start timecode at the beginning of each act/section
  • Jump to specific cue points
  • Stop timecode during breaks

Troubleshooting

Disguise isn't receiving timecode
  • Art-Net: Check that both machines are on the same subnet. Try using broadcast address.
  • LTC: Verify audio signal is reaching Disguise (check input meters). Ensure correct audio input is selected.
  • Confirm BPTimecode slot is actually playing (not paused/stopped)
  • Check firewall isn't blocking Art-Net ports (6454 UDP)
Timecode is drifting or jumping
  • Ensure frame rates match exactly between BPTimecode and Disguise
  • For Art-Net: Check for network congestion or packet loss
  • For LTC: Check audio cable quality and signal levels
  • If using WiFi, switch to wired Ethernet
Drop-frame vs non-drop-frame issues

29.97 fps can be drop-frame (DF) or non-drop-frame (NDF). These are different:

  • DF: Timecode matches wall-clock time (used for broadcast)
  • NDF: Timecode runs slightly slow (used for film)

Both BPTimecode and Disguise must use the same DF/NDF setting. BPTimecode displays DF with semicolons (01:00:00;00) and NDF with colons (01:00:00:00).

Best Practices for Live Production

🔄 Test Before the Show

Run through your entire show file with timecode chase enabled. Verify all cue points trigger correctly.

📊 Monitor Status

Keep BPTimecode's web UI visible on a monitoring station during the show. Use the health indicators to spot issues early.

🎯 Use Presets

Create presets in BPTimecode for key show points (Act starts, scene changes). This allows quick recovery if something goes wrong.

🔌 Redundancy

For critical shows, consider running a backup BPTimecode instance. Use Art-Net broadcast so both can feed the same destination if needed.

Related Resources