Skip to content

spacebabies/sync-test-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

AV Sync Transient Generator

The Journey & Philosophy

This tool was born out of a gut feeling during live audio gigs in large cinema spaces, specifically Cinema 1 at the Eye Filmmuseum. When sending video and audio over SDI to a professional digital cinema projector, the video typically suffers a 20-40ms electronic processing latency.

Initially, measuring AV sync from the FOH position (e.g., row 12) created a dangerous illusion. At that distance, the acoustic travel time of the sound from the Alcons PA behind the screen perfectly masks the projector's electronic delay. Correcting it at FOH means row 1 gets audio before video, which ruins the psychological experience.

The Golden Rules of AV Sync discovered along the way:

  1. Always measure on Row 1: Forget the FOH position, and forget the "Koperen Kees" (the architectural zero-point in traditional theaters). Row 1 strips away the acoustic delay and reveals the true system latency between the projector and the PA.
  2. Delay the Inputs, not the Master: Delaying the LRCS master delays live speakers, causing an unnatural disconnect and nasty acoustic reflections from the screen. Video audio inputs must be delayed individually. (This is native on modern desks, but requires a 100% wet Stereo Delay FX insert workaround on vintage gear like the Yamaha LS9).
  3. Transients over Noise: Human brains predict motion and pinpoint sharp auditory transients. A traditional "dancing ball" is hard to track. A predictable timeline sweeping across the screen, culminating in a 1-frame 1kHz beep and a white flash, provides a razor-sharp, sample-accurate anchor for the human senses.

A note on the delay: actually in Eye, there are two audio systems in place. One is for the cinema sound and the speakers are behind the screen. The other is a line array and is used for presenters, background music, etc. So in that specific case, delaying the outputs does work, as long as you only delay the cinema audio.

Configuration Constants

The script uses the following internal parameters which can be tweaked if necessary:

  • FPS = 50: Frames per second.
  • DURATION_SEC = 10: Total length of the generated loop.
  • WIDTH, HEIGHT = 1920, 1080: Resolution (1080p).
  • SAMPLE_RATE = 48000: Audio sample rate (matches standard live desk processing).
  • BEEP_FREQ = 1000.0: The frequency of the 1-frame transient beep.

Requirements

Python 3.

Ensure you have ffmpeg installed on your system. Python dependencies can be installed via pip:

pip install opencv-python numpy

Invocation

python sync_test_generator.py

The script will generate the frames, build the exact audio transients, and multiplex them using ffmpeg into a file named sync_test_50fps.mp4.

About

Python script to generate sync test videos

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages