New FCP-XML Version Offers Exciting Project Management Possibilities

Apple released Final Cut Pro 5.1.2 (pdf link) which addresses a lot of the problems that I’ve been running into lately. I want to take a bit of time to dig into the extensive bug fixes, and folks are already doing just that, but one change that I was not expecting really caught my eye. A new version of the Final Cut XML interchange format introduced some new elements.

The two that I find most interesting allow for management of metadata in QuickTime files and management of project components. I’ve only read the summaries and there could be some implementation gotchas, but what these appear to do is to open up a lot of the project management possibilites I’ve been hoping for in Final Cut Pro

If you develop a rich catalog of media and a strong database you should be able to build, replace and alter projects based on your workflow using elements like replaceiffound which replaces a target component if found. and addifnotfound which adds the imported component to the project provided the target component is not found. Combine that with adding and altering metadata in Quicktime files your workflow can really be enhanced. Obvious stuff like all files for a project as well as non-obvious, fuzzier ideas like all clips in a certain color range. Very cool. Time to dig in.

UPDATE: 09-27-2006 So, the glue that will hold this together is a set of 7 apple-events to use as an interchange between your custom app and FCP. Lots of possibilites. Download the sample app here.

SECOND UPDATE: 09-27-2006 Well, it looks like this gets us part of the way there. The apple-events seem to work nicely for sending to FCP, but it still doesn’t have an applescript dictionary which I think means we won’t be sending anything (like maybe the selected clips in a sequence) from FCP with this update. What that means is you’ll be able to do cool batch processing on the days work as a chron job and have lots of interesting data, but won’t be able to do things like space elements in a sequence unless I’m missing something. There are some private and undocumented data interchange protocols, but those require reverse engineering and are going to be out of the scope of your average power user or scripter.If anybody knows more please post a comment.


  1. Allan W. said

    Wow – wasn’t expecting that. What is the process for altering metadata in the QT files themselves? I see that the XML v.3 has some support for it, but is there a command – or step when saving – that embeds/alters metadata in the files themselves?

  2. Dale said


    Yes, that’s what it looks like. You’ll have an add and remove element and since it will do the remove first, you’ll be able to alter existing metadata. You’ll also be able to write your own keys, so you can come up with your own metadata schemes


  3. Mark B said

    It seems the replaceif found command will only apply to certain elements – for instance master clips respond well to this command, but existing sequence elements do not seem to respond so well. Haven’t figured out where the limits are at this point.

    How did you come across the private data interchange protocols? This sounds very interesting, please elaborate as much as you can.

    Keep up the good work on this great blog,

  4. Mark…

    …It seems the replaceif found command will only apply to certain elements – for instance master clips respond well to this command

    The getXML apple-event seems to return the entire XML for the project so the sequence element and its components is nested in that XML. If you wanted to change elements in the sequence you’ d getXML to find the sequence in question, alter it and return the entire project back with the altered sequence with sendXML. At least that seems to work initially, I’m still digging intto it and I’m sure there will be some gotchas.

    …How did you come across the private data interchange protocols? This sounds very interesting, please elaborate as much as you can.

    I’m a curious guy, so I usually start investigating the internals of the programs I work with. There are a couple of plugins like Automatic Duck’s free XML exporter and the Panasonic frame rate convertor that exhibit behaviors I’m interested in. FCP is mostly written in Carbon, but some of the hooks are in Cocoa which makes for a much easier task for reverse engineering because you can override methods, adhere to protocols etc.

    If we use class-dump to take a look at the plugins we’re interested in, we find there is a protocol called PRODataInterchange being used. A protocol in Objective-C allows you to adhere to requested methods and you’ll recieve the events you adhere to. So, if you write a well-formed CF plugin that adheres to the PRODataInterchange protocol you’ll be able to do data interchange natively in FCP

    That said, I’ve stumbled a bit in the actual implementation and since it’s private Apple could change the spec at any time, so I’d lobby for them to make it public. It’s such an important missing piece in Workflow management for FCP and if the new set of apple-events don’t get us quite there we may be left wanting.


  5. Mark B said

    Thanks Dale. Lots of interesting things to look into. I made a mess of the test I did using replaceiffound in the XML, but now I see how that works. Very cool.

  6. xaxa said

    It works like this in Applescript:

    –open project
    set myfile to choose file
    tell application “Final Cut Pro” to «event KeyGofcP» given «class fcpP»:myfile

    And yes: its ‘fcpP’ for all events, ignore the typing error in FinalCutPro_XML.pdf

    I have all the simple events up and running, but i don’t manage to get a result back from Get XML (kKGAEGetDocumentXML ‘eXML’).

    Any tips?

  7. Thanks for the info xaxa…

    I’ve been using the raw apple-events in Cocoa instead of using Applescript so I’m not sure about your problems with GetXML. Hopefully somebody will read your comment and have some insight.

    Keep us informed if you turn up anymore good Final Cut XML/Applescript insight.

  8. Dale said

    More info for those using Applescript…

    Piers Goodhew runs down some of his routines using Applescript at
    FCP 5.1.2 for Script Kiddies

  9. […] New FCP-XML Version Offers Exciting Project Management Possibilities: “ […]

RSS feed for comments on this post

Comments are closed.