I was a little shocked to find people posting on Twitter and Facebook that they had tried to import Final Cut Pro 7 XML into Final Cut Pro X with the new “import XML”. That would be like opening a Word document and complaining that it didn’t translate from Spanish to English while opening the file.
By itself, XML tells you nothing. It is a generic term that tells you as much about the content as having a “Text” document tells you about the content. As I wrote four years ago for KenStone.net XML stands for eXtensible Markup Language. You may be familiar with another markup language: HTML, or HyperText Markup Language. In HTML only the WC3 consortium can add new tags because it is not extensible. On the other hand XML is “extensible”, meaning anyone can extend it to mean whatever they want it to mean.
And that’s true for every type of XML. In the case of XML for editing applications, the XML represents the underlying data structures from the application. So, we have:
- Final Cut Pro 7 XML known as xmeml
- Final Cut Pro X XML known as fcpxml
- Motion Project XML files are ozxmlscene
- Premiere Pro file is XML in the PremiereData format.
Each one is XML, and there is zero compatibility between them. The design of data in an XML file is called a “schema” and every variation of XML is a different schema. More on schema at Wikipedia. The best way to think of the generic thing that is XML is that it is like an alphabet: one that can display French, English, German, Spanish and a whole bunch of other languages that use that alphabet.
So the first takeaway is that every format of XML is different and incompatible. So we need to stop thinking of “XML” as having any more meaning than saying “QuickTime” without specifying the codec(s): neither has any useful meaning without the further detail.
So that brings us to the specifics of translating xmeml to fcpxml (FCP 7 to X respectively) or going from fcpxml to xmeml. Jon Chappell did a great job of explaining the differences in his blog post, but the important point is that the XML must relate to the data structures that it is trying to represent.
So when we come to going from Final Cut Pro X to FCP 7 we are immediately struck with the fact that FCP X has Events (media) and Projects (timelines), each with its own XML file, while FCP 7 puts them all together in one XML file. Because FCP X and FCP 7 are so different it will be impossible to ever do a truly perfect translation, just as all other inter-NLE transfers lack full fidelity. Import FCP 7 XML to Premiere Pro and say goodbye to most of you metadata (all Master Comments are lost, in fact all but scene, shot, take and description are lost). Also say goodbye to all your tiles and expect only imperfect mapping of filters and transitions.
And that is between applications that are fundamentally the same (having both come, originally, from the mind of Randy Ubillos). Final Cut Pro 7 and Final Cut Pro X are fundamentally different in ways both visible and not.
FCP 7 counts all time measures in frames; FCP X counts time as rational seconds.
FCP 7 rounds frame rates to 3 decimal places; FCP X uses rational time so frame rates will be accurate, not approximate.
FCP 7 has tracks with time down the track as the only deliminator: FCP works with relationships between connected clips and story lines.
FCP 7 Title are a mix of FXscript and proprietary Boris Calligraphy formats (hidden in the metadata); FCP X titles are Motion 5 templates with rigs published to FCP X.
FCP 7 uses bins for media organization (and subclips); FCP X works with metadata (keywords) for media organization.
The way the media file information is stored in the XML is very different.
There is no common dictionary between the two versions of XML. There’s much more difference than say between English and Spanish, in the vocabulary.
The entire structure of the XML is much simpler and, at first blush fcpxml seems to miss a lot of necessary information, which isn’t really needed.
And so on. This is just a quick list of the differences off the top of my head. Translating is difficult!
We had a lot of difficulty translating fcpxml to xmeml – trust me, Project X₂7 was not created in the two days from FCP X 10.0.1’s release to the announcement Wednesday night. And we’ve got the easy conversion. Going from FCP 7 to FCP X seems to be much more difficult. For example, all FCP X title text is visible in plain text, so we can insert that to an Outline Text Generator in FCP 7. Not so anything in FCP 7 that uses Title 3D, Vector, Crawl or Random. They are hidden in the xmeml XML as a “private data block” only Boris knows. So any of those titles cannot give you more than what Premiere Pro conversion does: there’s a title there but we have no idea what was in it.
Effect filters cannot be translated either way because the effect architectures are just so different. FCP 7 applies filters directly to clips; FCP X’s filters are applied in Motion templates and published to FCP X. There’s no way to reproduce that in a translation.
Another way of thinking about why translation might be difficult is when translating between two languages where the culture is very different. I recall, during the year I spent in Japan as an exchange student, trying to make a pun in Japanese. This fell completely flat because the pictographic basis to their language makes the concept of a pun impossible.*
Similarly, the very difference between the “culture” that is FCP 7 and the “culture” that is FCP X means that there are untranslatable bits.
Going from Final Cut Pro X to Final Cut Pro 7 has been a total pain and we’re still only at about a 65% fidelity, by which I mean we bring in the basic edit, including connected clips, markers, todos, etc. Going the other way should be even more problematic and I wish whoever’s working on it “good luck” because they’ll need it.
* I am told that a pun in Japanese is not impossible. Apparently my language skills never got good enough, or it was just a really bad pun!