VST3 plugin written in C++ using the JUCE framework. It automatically synchronizes multiple 360-degree camera recordings by decoding SMPTE LTC (Linear Time Code) timecode from audio tracks, computing per-track delays, and applying them in real time. When LTC degrades or cuts out, an audio-based fallback (Normalized Cross-Correlation on novelty curves) takes over seamlessly.
The plugin runs in two roles that must be configured in the DAW session:
- Master - placed on the reference LTC track. Decodes LTC, extracts an audio novelty curve, and writes both to shared memory. Does not delay its own output.
- Slave - one instance per additional track. Reads master data from shared memory, decodes its own LTC, computes the inter-track delay, and applies it via a delay engine. Up to 8 slave instances are supported per group.
Both roles share a group name (set in the plugin UI) which identifies the shared-memory region used for communication.
Navigate to the latest release and download a package compatible with your OS.
Extract the package into your DAW's VST3 scan directory. Typically ~/.vst3 for
Linux, and C:\Common Files\VST3 on Windows.
Alternatively, you can build the plugin yourself, as per instructions below.
Make sure the following are installed:
- JUCE - C++ framework for audio applications and plugins.
- CMake 3.22+ and a C++17 compiler (Linux/macOS build).
- Visual Studio 2022 (Windows build).
- Git - version control.
Clone the repository:
git clone https://github.com/filipleple/audiosyncmkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DJUCE_PATH=../../juce-8.0.10-linux/JUCE
cmake --build . -j$(nproc)Output: build/AudioSyncPlugin_artefacts/Release/VST3/
Open the repo directory in Power Shell and run:
cmake -S . -B build -G "Visual Studio 18 2026" -A x64 -DJUCE_PATH=C:\Users\vboxuser\Workspace\JUCE
cmake --build build --config Release
Replacing Visual Studio 18 2026 with your appropriate version, and
-DJUCE_PATH pointing to the actual path to JUCE on your machine.
- In your DAW, load the VST3 on the reference LTC track. Set its role to Master and choose a group name.
- Load a second instance on each additional track. Set its role to Slave and use the same group name.
- Press play. The master displays the decoded timecode (HH:MM:SS:FF). Each slave displays its computed delay in milliseconds and frames, and applies the delay automatically.
- A manual correction slider is available on each instance for fine-tuning.
- When LTC quality drops (Q_LTC < 0.5), the plugin transparently switches to audio-based delay tracking. The diagnostics card shows the active source (LTC / AUD / NONE).
- Dr. Bartłomiej Mróz - problem diagnosis and formulation, supervision and guidance
- Filip Lewinski - author
- Tsimafei Dalhou - initial work on LTC decoding and synchronization via delay
