Lockstep Documentation

What Lockstep Is

Lockstep allows other software on your computer to lock to incoming timecode by converting LTC (linear or longitudinal time code) to MTC (MIDI time code). By accomplishing this step entirely in software, Lockstep eliminates the need for expensive hardware timecode converters.

Although LTC is a digital format, it is designed to be carried on an analog audio connection. Lockstep takes advantage of this by reading LTC from any input of any CoreAudio-compatible audio device. This could be as fancy as a 1/4” or XLR input on a Firewire audio interface, or it could be as simple as the built-in input mini jack on a laptop. (Note, though, that dedicated LTC/SMPTE inputs are not visible to Lockstep.)

What Lockstep Is Not

Lockstep is not a clock source, and won't guarantee that the synced machine won't drift over time. If you need to maintain drift-free sync over a fairly long period of time, you'll also need to set your audio hardware to resolve to an external clock source such as word clock.

Lockstep's Anatomy

Lockstep's main window consists of four elements:

  1. LTC Input. This is where you select the device and channel on which Lockstep should listen for incoming timecode. (Note: Lockstep processes on analog audio inputs, so if your device has a dedicated LTC/SMPTE port, Lockstep won't see it; use an audio input instead.)
  2. Level Indicator. This shows the current level of the audio being received on the currently selected channel, so you can quickly troubleshoot a dropout.
  3. MTC Output. Ordinarily, you can leave this set to Lockstep (virtual output). If your sequencer doesn't give you the option of reading MTC from a virtual endpoint, create an IAC bus to send to another application on the same computer, or select any existing MIDI port to send to an external device.
  4. Status display. This will tell you at a glance whether timecode is being received, what framerate it is, and the most recent frame received. It also includes a running input level history display, for troubleshooting intermittent dropouts.

How to use Lockstep

Lockstep has been designed to be very easy to set up. The following instructions assume that you'll be running Lockstep alongside a MTC-capable sequencer on the same machine, though many other configurations are possible.

  1. Select any audio input where timecode will be received.
  2. Select a MIDI port where your sequencer can receive MTC.
  3. Set your sequencer to listen for MTC on that port.
  4. That's it! Well, that and actually sending timecode from the master computer. There are a couple other things to keep in mind with Pro Tools, but for most other software, the above steps are all you need.

How to...

Send MTC to Pro Tools

Pro Tools is a special case among MTC-enabled sequencer and DAW applications, in that it will not read MTC from a virtual output (which appears only while Lockstep is running). Instead, you need to use a more persistent connection, such as an IAC bus, to route MTC from Lockstep to Pro Tools.

Setting up an IAC bus takes a few steps in OS X's Audio MIDI Setup application, but this only needs to be done once.

To create an IAC bus:

  1. Launch Audio MIDI Setup (from the Lockstep application menu, or under /Applications/Utilities).
  2. Open the MIDI window.
  3. Double-click on the IAC Driver icon.
  4. Make sure Device is online is checked.
  5. If there are no ports listed, click on the + button to add one.

Note: Earlier versions of Lockstep included a shortcut to create an IAC bus with one click, but OS X no longer supports this functionality.

Meanwhile, in Pro Tools:

  1. Go to Setup > Peripherals. In the Synchronization tab, set the MTC Reader Port to Lockstep's IAC bus.
  2. Select Options > Transport Online, or click on the Online button in the Transport window.

Troubleshoot a Dropout

Occasionally something goes wrong and a synced machine will suddenly stop syncing to timecode, or will have trouble syncing in the first place. Here are a few tips to figure out where the problem lies:

First, check Lockstep's status display. If it reads "Receiving", the problem lies either in the MTC routing or in the sequencer's sync settings. Double-check that MTC is being sent out to a port that your sequencer can read, and that the sequencer is online. (See How to send MTC to Pro Tools above for help syncing Pro Tools to Lockstep.)

Check the level indicator on Lockstep's main window. If there is no level, Lockstep is not receiving a timecode signal. Some things to check:

  • Make sure the correct audio input is selected in Lockstep.
  • Check the master computer's sync settings to ensure that timecode is being transmitted.
  • Check all physical connections along the audio pathway, and try a different cable if necessary.

In case of intermittent dropouts, check the level history display. It should stay solid at a consistently high level while timecode is rolling; any dips, spikes, or notches indicate a problem with the LTC connection.

If there is signal coming in, but Lockstep's status display reads "Online - waiting", the timecode signal may be degraded somewhere along the signal path, or may be picking up interference. Double-check all connections and make sure no cell phones are on in the vicinity.

Frequently Asked Questions

What is an IAC bus and why should I care?

The IAC driver is an alternative to standard virtual MIDI endpoints. Both virtual endpoints and IAC buses allow applications to send MIDI to each other on the same machine without any external hardware. The primary difference under the hood is that while a virtual endpoint belongs to the application that created it (e.g. only Lockstep can write to the Lockstep virtual output), an IAC bus shows up as both an input and an output to all applications.

As far as Lockstep is concerned, there is little difference between Lockstep (virtual output) and an IAC bus; the only difference is that some applications, notably Pro Tools, will only accept MTC on an IAC bus, not from a virtual endpoint.

Can Lockstep output LTC?

Currently, no. Converting MTC to LTC is a completely different challenge, with largely different usage scenarios, so Lockstep currently focuses on the more common problem of converting LTC to MTC.

Does Lockstep have any freewheel/jam sync?

No; Lockstep simply converts LTC to MTC one frame at a time. (Okay, technically, this isn't quite true; when Lockstep sees one frame of LTC come in, it schedules a frame of MTC slightly in the future, in order to compensate for the latency involved in processing audio. So Lockstep actually has something vaguely akin to a 2-frame freewheel... but it's easier just to say no.)

Why does Lockstep sometimes take a second or two to sync up?

LTC, perhaps surprisingly, does not include the framerate anywhere in its data stream. MTC, on the other hand does—to an extent. So Lockstep has to wait until it's received enough frames of LTC to be able to tell definitively what framerate is being received before it can safely start transmitting MTC. This can take as long as a full second, depending on where the timecode stream starts.

Why does 23.976 fps show up as 24 fps?

Neither MTC nor LTC distinguishes between film speed and video speed. So, e.g., 23.976 and 24 are the same MTC or LTC data, 29.97 non-drop and 30 non-drop are the same data, etc.—just progressing at different rates. Since Lockstep transmits MTC in continuous sync with incoming LTC, incoming 23.976 LTC will get transmitted as 23.976 MTC, even if the status display simply reads "24".