UPDATE: A newer compile of QJACKCTL (0.3.10) is available here.
I deal with SMPTE Timecode all the time; This is no secret. I use a few programs to be able to see/verify the timecode on an audio track for programming. This is specifically for a Mac; While one of the programs is available in all flavors (Mac, PC, Linux), the timecode reader is not.
I used to use a program called SoundFlower, which is seemigly a great and simple program, however it is abandoned software and completely unsupported. The problem, I found out one night during programming, is that there is an immense amount of latency that can occur with some external audio devices in SoundFlower, and you may not even realize it until it’s too late. I had to find something with no latency and was very reliable.
That’s when I found the internal audio routing program Jack OSX. Head on over to this link and download the latest for your mac and install it:
After Jack is installed, and you have rebooted, open up JackPilot in the Applications/Jack folder. Do not push Start in JackPilot. Go to Preferences in JackPilot and Change the Input Channels to 8, and the Output Channels to 16. Close JackPilot. This is the last you’ll ever need to open it (but don’t delete it of course).
As of 0.9.0b8, they were including the very helpful program Qjackctl with the installation which is the GUI front end for Jack (gives you way more control than JackPilot). They have typically been including Qjackctl v0.3.6 with the install. You can get a newer version here. Open up Qjackctl in the Applications/Jack folder.
Push the Setup button at the right. You’ll need to change a few entries to get it to work properly. Change the Server Path to:
Also change the Driver to “coreaudio”. This should be all that you need to adjust in this setup window. Push OK.
Note: If you are using a USB/Firewire audio device, you would select it in the “Interface” area by pushing the right arrow button (not the drop down).
Back in the main window click Start. Hopefully the Jack Server should start up without any errors. If it does not, it is usually because the server path, driver, or interface was not entered correctly in Setup. If it starts successfully, you should see this in the center screen:
Now that Jack is running, we can now internally route audio around our system. To actually read the SMPTE, you can use the aptly titled SMPTE Reader from Sononum (Freeware!). As for my audio playback, I’m going to use Twisted Wave. After installing Twisted Wave, open your audio file with it and head over to Preferences/Devices and change the Output Device to JackRouter.
Now open up SMPTE Reader and change the Audio Input to JackRouter as well (I also recommend changing Jam Mode to OFF). You’ll notice that this little applet also has a cool feature where it will convert the LTC into MTC using any midi output your system might have (say built into a usb/firewire audio device or even a usb midi dongle). Super useful, but I digress.
Go back to Qjackctl and click on the Connect button. QJackctl will try to be very helpful and will have already made some connections for you, they’ll be wrong. Push the Disconnect All button on this window and say Yes to the next popup.
Expand the entries for TwistedWave on the left area and SMPTE Reader and System on the right area. This is where you will make your connections. Assuming that your audio file has the program audio on the left channel and the SMPTE stripe on the right channel, you’d do the following; Under TwistedWave, click on out1 then under System, click on playback_1 (This equals the left channel of your Mac) and then click on Connect at the bottom. A red line will draw between those two entries to make the connection. With out1 still selected on the left, click on playback_2 (Being the right channel of your Mac) and then Connect. The reason for this is you can now take that single channel of program audio and push it to both of your speakers. Next, click on out2 and under SMPTE Reader on the right, click on in1 then Connect. It should look like this:
At this point you can close the Connections window. Go ahead an push play in TwistedWave and you should get your program audio playing on both speakers and the SMPTE being routed to your SMPTE Reader. If you are getting audio but the clock isn’t moving in SMPTE Reader, try closing and then reopening SMPTE Reader. You may get a message when you close SMPTE Reader, but just click through it and close and reopen the program. Push play again in TwistedWave and you should get the clock running now too.
If you’d like to save your connections as a Profile that you can recall (you can do multiple of these so that you can have different routing setups), open up the Patchbay window in Qjackctl (button at the bottom center). Select New from the top left and then select Yes regarding a snapshot for your current setup. You can then save this and recall it for next time if your configuration gets messed up.
When you are all done with Qjackctl, close all of your programs that are linked to Qjackctl and then push the Stop button in Qjackctl, then Quit.
Sometimes when you start up all your programs above, the settings may have been forgotten and you’ll need to Disconnect All the connections in the Connect dialog again. You can then go back into the Patchbay dialog and select and Activate your Preset that you saved. It’s all a little wonky sometimes but it is very solid and reliable once it’s working.
Another great reason about operating Qjackctl is that you can also program to stereo audio in a multitrack audio program and route SMPTE to the reader as well, all without an external audio device. I do this all the time in Final Cut Pro 7, where I have a stereo program track and then a separate stripe of SMPTE. Life is too short for Mono! 😉
Jack OSX and Qjackctl is all open source and not officially supported by anyone. There is though, a support group and some coders who take care and are still developing the software (it’s used by many pro audio editors). You can find that group here at http://tech.groups.yahoo.com/group/jackosx/.