A professional timecode routing and conversion tool built with C++ and JUCE. Receives timecode from multiple sources and routes it to multiple outputs simultaneously — ideal for live events, broadcast, post-production, and AV installations.
- MTC (MIDI Time Code) — receive timecode from any MIDI device
- Art-Net — receive Art-Net timecode over the network (configurable interface/port)
- LTC (Linear Time Code) — decode LTC audio signal from any audio input device and channel
- System Time — use the system clock as a timecode source
- MTC Out — transmit MIDI Time Code (Quarter Frame + Full Frame messages)
- Art-Net Out — broadcast ArtTimeCode packets on any network interface
- LTC Out — generate LTC audio signal on any audio output device and channel
- Audio Thru — passthrough audio from the LTC input device to a separate output device (independent routing)
- VU Meters — real-time level metering for all audio paths (LTC input, LTC output, Audio Thru input, Audio Thru output) with color-coded feedback (green → yellow → red)
- Per-channel gain control — independent input/output gain for LTC and Audio Thru paths
- Frame rate support: 24, 25, 29.97 (drop-frame), 30 fps
- Auto-detection: frame rate is automatically detected from incoming MTC, Art-Net, or LTC signals
- Output frame offsets — independent offset per output (MTC, Art-Net, LTC) from -30 to +30 frames, to compensate for device latency or synchronization differences
- Stereo or mono output: configurable per output (LTC Out and Audio Thru)
- Driver type filtering: filter audio devices by driver type (WASAPI, ASIO, DirectSound on Windows; CoreAudio on macOS)
- Configurable sample rate and buffer size
- ASIO support for low-latency professional audio interfaces (Windows)
- Device conflict detection to prevent multiple outputs from opening the same device
- Persistent settings — all configuration is saved automatically and restored on launch
- Dark theme UI with a clean, professional look
- Windows 10/11
- Visual Studio 2022 (Community, Professional, or Enterprise)
- JUCE Framework — download from juce.com
- Projucer (included with JUCE) — used to generate the IDE project
- ASIO SDK (optional, for ASIO device support) — download from Steinberg
- macOS 12 Monterey or later
- Xcode 14+
- JUCE Framework — download from juce.com
- Projucer (included with JUCE)
-
Clone the repository:
git clone https://github.com/fiverecords/SuperTimecodeConverter.git cd SuperTimecodeConverter -
Open the
.jucerfile in Projucer:- Set the JUCE modules path to your local JUCE installation
- Windows: if using ASIO, set the ASIO SDK path in the exporter settings
-
Export and build:
- Click "Save and Open in IDE" in Projucer
- Windows: Build the solution in Visual Studio (Release or Debug)
- macOS: Build the project in Xcode (Release or Debug)
-
Run:
- Windows:
Builds/VisualStudio2022/x64/Release/ - macOS:
Builds/MacOSX/build/Release/
- Windows:
To enable ASIO support:
- Download the ASIO SDK from Steinberg
- Extract it to a known path (e.g.,
C:\SDKs\asiosdk_2.3.3_2019-06-14) - In Projucer, go to the Visual Studio exporter settings and add the ASIO SDK path to the header search paths
- Enable
JUCE_ASIO=1in the project preprocessor definitions
- Select an input source from the left panel (MTC, Art-Net, System, or LTC)
- Enable one or more outputs from the right panel
- Select the frame rate or let it auto-detect from the input signal
- The timecode display in the center shows the current time in real-time
Each timecode output (MTC, Art-Net, LTC) has an independent frame offset control (-30 to +30 frames). Use this to compensate for device latency or to intentionally advance/delay timecode to specific destinations. Double-click the offset slider to reset to zero.
The Audio Thru feature lets you route audio (e.g., music or program audio) from a channel on the LTC input device to a separate output device. This is useful when your LTC signal arrives on one channel while program audio arrives on another — you can decode LTC and pass through the audio independently.
All settings are automatically saved to:
- Windows:
%APPDATA%/SuperTimecodeConverter/settings.json - macOS:
~/Library/Application Support/SuperTimecodeConverter/settings.json
The application is built around a modular architecture:
| Component | Description |
|---|---|
TimecodeCore.h |
Core timecode and frame rate types |
TimecodeDisplay.h |
Real-time timecode display widget |
LevelMeter.h |
Real-time VU meter component |
MtcInput.h |
MIDI Time Code receiver (Quarter Frame + Full Frame) |
MtcOutput.h |
MIDI Time Code transmitter (high-resolution timer) |
ArtnetInput.h |
Art-Net timecode receiver (UDP) |
ArtnetOutput.h |
Art-Net timecode broadcaster (UDP) |
LtcInput.h |
LTC audio decoder with passthrough ring buffer |
LtcOutput.h |
LTC audio encoder/generator |
AudioThru.h |
Audio passthrough with independent device routing |
AppSettings.h |
JSON-based persistent settings |
MainComponent.* |
Main UI and routing logic |
- Lock-free audio: LTC decode and audio passthrough use lock-free ring buffers (SPSC) for real-time safety
- Independent audio devices: LTC Input, LTC Output, and Audio Thru each manage their own
AudioDeviceManager, allowing independent device selection - Background device scanning: audio devices are scanned on a background thread to avoid blocking the UI on startup
- Two-phase initialization: settings are loaded in two phases — non-audio settings are applied immediately, while audio device settings are applied after the background scan completes
- Cross-platform: built with JUCE for native performance on both Windows and macOS
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License — see the LICENSE file for details.
Developed by Joaquin Villodre — github.com/fiverecords
Built with JUCE — the cross-platform C++ framework for audio applications.
