In 2015 there are still people who love the tactility of editing 16mm film by hand on a flatbed editor rather than transferring to digital video. Most of those people are less interested in editing their sound by hand, since their recordings would need to be transferred to 16mm mag stock and then edited one or two tracks at a time on the flatbed before a final mix at an expensive (non-existent?) studio somewhere.
It would be best to edit sound on a computer (in Pro Tools, Logic, Reaper, etc) and have it synchronized to the playback of the actual film on the flatbed editor. This is nothing new, and certain Steenbeck flatbeds have had “interlock” options for decades that allowed other devices to “chase” their position and speed to maintain sync. (This could be another flatbed, a mag dubber, or computer.) But, as with all things in the professional film world, it was expensive! Now that the economics of film have basically collapsed, some of the specialized gear is now cheaper, and we can improvise the rest.
To sync two devices, you need to communicate position and speed. For film devices we usually start with a protocol called bi-phase which is a set of 2 square-waves carried on separate wires. They overlap slightly in time, so the arrival of one before the other tells us which direction the film is traveling. (This overlapping relationship is called “quadrature”, as explained in this Wikipedia description of a rotary encoder.) Bi-phase is a loosely-defined protocol, so different devices use different connectors and phase, and more importantly different numbers of square-wave pulses per frame.
If you can generate a bi-phase signal then you can feed it to a Digidesign USD (“Universal Slave Driver” what an ignorant name) or a Rosendahl BIF or WIF. These boxes count the bi-phase pulses and convert them to timecode formats that most decent audio software can chase. (In this case we generate MIDI Timecode, connected to the computer via a USB MIDI interface.) Bi-phase interfaces were originally very expensive, but now pop up on eBay for < $100 USD. See the filmlabs.org tips for digital sound sync for a thorough explanation. The Steenbeck schematics PDF from their editing and telecine page is also indispensable. You’ll see images from it throughout this page.
When everything is setup, You start an editing session by threading your film and parking it on a specific frame that will be considered “zero”. Then reset the USD/BIF/WIF counter to zero. Set your audio software to chase incoming MTC and make sure your timeline matches the timecode format you’re sending. After a few seconds of Steenbeck playback, the audio software should lock onto the MTC and play the corresponding position in your timeline. When the Steenbeck stops, so does the sound. Magic!
Plan A: The Interlock Port
I recently helped somebody add digital sound sync to her Steenbeck 921. I was happy to find a port on the back labeled INTERLOCK. A look through the Steenbeck schematics PDF revealed that this port provided a bi-phase signal from an optional interlock board, as well as accepting an incoming bi-phase signal in case you wanted this Steenbeck to chase another device.
The PDF file has a detailed description but here is the important stuff:
I didn’t find those signals when I probed the INTERLOCK port because there was no interlock board installed inside the machine to generate them! I guess it was removed long ago during an earlier repair, but they left the port on the chassis. Oops!
Plan B: The Digital Frame Counter
Since the INTERLOCK port didn’t work out, I switched to Plan B: This Steenbeck has a digital frame counter with an LED display. It is driven by an optical encoder under the rotating prism, which creates a bi-phase signal at 1 pulse-per-frame. Here is the board that generates the signal:
The 5-pin connector on the board is a standard single-row “header connector” with .1″ spacing. The board is labeled with a “1” and “5” to indicate pin numbers. They match the schematic from the PDF file: (pin 3 = 5V power bus, pins 1 and 5 = bi-phase signals, pin 2 and 4 = ground)
I made a pass-through adapter with a piece of extra-long female header (intended to make stackable “shields” for Arduino microcontrollers) so I could tap the required pins without interrupting the existing cable. I wired it up to a 2-conductor shielded cable and terminated the other end to match the Digidesign USD, based on the specs in its excellent manual. It sort of worked, but it turns out that the USD needs a bi-phase signal with at least 2 pulses-per-frame, twice the rate that the Steenbeck’s optical encoder provides. The Rosendahl BIF or WIF would work since they support 1 pulse-per-frame. (Another caveat: When my cable was plugged into the USD it disabled the built-in Steenbeck frame counter. I think a simple transistor buffer would have prevented that.)
Plan C: The Magnetic Pickup, A Lucky Solution
Onwards to Plan C! I knew that the Steenbeck has some sort of feedback loop for sensing motor speed, and the schematics PDF confirmed that there is a hall-effect sensor mounted on the motor. They call it a “magnetic pickup” and it creates a pulse for each tooth on a special gear attached to the motor. The schematic:
- In 24 fps mode the sensor in the “24A” position reads the 75 tooth gear to produce a 600Hz waveform.
- In 25 fps mode the sensor in the “25A” position reads the 72 tooth gear to produce a 600Hz waveform.
But this machine lives in North America and will only run at 24 fps. I think most Steenbecks have only one sensor, so in our case the “leftover” sensor was the key to completing the project.
First I confirmed that the signal from the “24A” sensor was a healthy waveform that matched my expectations. At 24fps I got a 600Hz sine wave between pins 1 and 2, as promised by the schematic. It increased to 4.4kHz at max fast forward. That’s 25 pulses-per-frame. Peak-to-peak amplitude was 1.3v with a 1v offset (so min 1v, max 2.3v). The 3V supply (pin 6) measured 3.56v and looked like clean DC.
Great news, but it only gets us half way there. To generate bi-phase we need 2 waveforms, offset by 90° to establish direction as well as speed. I made a guess that there was a hole in the motor casing for a “24B” sensor, and that it would be offset by 90° compared to the “24A” position.
I guessed right! Here’s the before & after:
I used an allen wrench to loosen the “25A” sensor and move it to the empty hole, matching the orientation the best I could. Then I confirmed on the scope that the 2 signals were offset in relation to eachother. I didn’t try to feed the raw signals to the USD, considering they were sine-waves with a massive DC-offset, so I built a conditioning circuit using a comparator. It runs from the existing 3V supply and outputs reasonably clean square-waves.
This napkin-style schematic shows one channel of the improvised circuit. The incoming sine waves are compared to an adjustable threshold via the LM339 Quad Comparator to produce clean square waves. (We only use 2 of its 4 channels.) The LM339 output sinks current to ground so it needs a little help from a 2N3906 PNP transistor to produce the required pulses. An LED is included for visual feedback. Note: It would be wise to add a 33-100uF cap across the board’s power input and a .1uF bypass cap across the LM339’s power pins, as close as possible to the chip.
In the end it worked. I didn’t stick around long enough to see the software end of things, but in the video below you can see the USD accurately tracking the Steenbeck. I hope something in here helps you achieve the same. Contact me with questions, corrections, additions, etc.