iMovie and Final Cut Pro X 10.1 part 3: Scripting and plugins
Here’s more of what I’ve found inside iMovie (2013).
As I wrote in part 2, the new OS X version of iMovie is based on an unreleased version of Final Cut Pro X. Previous versions of Final Cut Pro X have UI-less versions of Motion and Compressor. In that case have the Motion framework and the (313 MB) Compressor plugin also been updated as much as Final Cut Pro X?
Oddly enough, alothough there are new elements in the ‘Final Cut Pro X’ part of iMovie, the version of Compressor that is included is older than the version available on the Mac App Store or via software update, and there doesn’t seem to be anything new in the Motion framework.
The Compressor code supports the background encoding features and sharing to online services features of iMovie.
As well as US-based services, iMovie 2013 has presets that encode and upload files to Youku and Tudou. There also presets for DVD, BluRay, Compressor, Image Sequence and HTTP Streaming – but these are probably left over from Final Cut Pro X version 10.0.X.
It is odd that Motion doesn’t seem to have been updated. For seven out of the nine Final Cut Pro X updates from version 10.0.0, Motion was updated in lock step. Over the last two years I’d guess that bugs that seemed to be in Final Cut were in the built-in Motion framework, so the standalone Mac App Store version was updated at the same time. Although Motion’s file format didn’t change with each update, each edition of the Motion app stored its version number in the documents it saved.
In previous versions of iMovie, most of the effects, transitions, generators and titles were implemented using Quartz compositions (small files used to create UI animations in OS X and iOS apps). iMovie (2013) replaced these with Motion templates – the files used to implement plugins in Final Cut Pro X. That’s why it is possible to place Final Cut plugins inside iMovie (as I showed in Final Cut Pro X plugins work in iMovie 2013).
Some of the Motion plugin templates in iMovie seem to have been created using Motion version 5.0.7.1. Here are the first few lines in the template that implements one of iMovie’s Titles that isn’t yet available in Final Cut Pro X:
Motion’s version number hasn’t incremented in this way before – adding ‘.1’ as a fourth number. Even when an update was a maintenance release with no new features, the third number increased from 5.0.0 up to 5.0.7 (released in March 2013).
If not Motion…
If the future of Motion as a tool for creating Final Cut plugins is in doubt, what could be the alternatives?
Although some people are worried at the lack of AppleScript support in recent Apple applications, there’s a possibility that future versions of Final Cut will be more controllable using a scripting language.
There are already some references to scripting in Final Cut Pro X 10.0.9. The appear in iMovie with these additions:
setDescriptor:forKeyword
scriptingUserDefinedRecordDescriptor
scriptingUserDefinedRecordWithDescriptor
descriptorWithObject
scriptingUserListDescriptor
scriptingUserListWithDescriptor:
descriptorWithURL
Quartz Compositions were used to implement effects, titles, transitions and generators in previous versions of iMovie. Quartz Composer is an Apple developer tool that can create these node-based animation files. FxFactory from Noise Industries was introduced as a system that allowed Quartz Compositions to implement advanced plugins in Final Cut Pro Classic (It now also acts as a plugin management system).
iMovie (2013) includes Quartz Composition handling libraries. The Sports theme uses Quartz Compositions to animate team names and member names:
There’s also the chance that Final Cut Pro X 10.1.X will be able to use plugins created in the free Quartz Composer developer application.
Here are some of the Quartz Composer references in iMovie:
FFQCEffect
FFQCIMEffect
…implies a difference between Quartz Composer effects and Quartz Composer iMovie effects.
[FFQCEffect compositionName]
[FFQCEffect backgroundCompositionName]
[FFQCEffect compositionDirectoryName]
[FFQCEffect setCompositionParameterValuesAtTime:]
[FFQCEffect setBackgroundCompositionParameterValuesAtTime:]
[FFQCEffect compositionInputKeys]
[FFQCEffect inputParameters]
[FFQCEffect valueForInputKey:]
[FFQCEffect setBackgroundRenderValue:forInputKey:required:]
[FFQCEffect setValue:forInputKey:required:]
[FFQCEffect setString:forInputKey:required:avoidEmptyString:]
[FFQCEffect percentDoneForTime:][FFQCScheduleToken setInputValues:]
[FFQCScheduleToken time]
[FFQCScheduleToken setTime:]
[FFQCScheduleToken frameCompleteSemaphore]
A new Pro App?
As well as Quartz Composer, there are references to another graphics development system in iMovie. ‘Mica’ is mentioned very few times in Final Cut Pro X 10.0.9, around 100 times in iMovie 9 but over 600 times in iMovie (2013):
reloadMicaDocument
animatorClass
stopAndReport:taskName:
configureAfterMicaLoadmicaPluginProperties
descriptionOfNonRasterizedTextLayersInMicaAnimator:
appendBasicDescription:detailedDescription:toFinalDescription:micaAnimatorName:
descriptionOfRasterizedTextLayers
descriptionOfUnknownPublishedLayersInMicaTitleAnimator:
descriptionOfTextLayersNotInPublishedObjects:descriptionOfPublishedVideoLayersWithBadAnchorPointsInMicaAnimator:
descriptionOfRasterizedProjectThumbnailTextLayersInMicaAnimator:logAllFontsInMicaAnimator:
saveToMicaFileWithPath:micaAnimatorTemplate
animationDuration
addLeftSlideInAnimationToLayer:micaAnimatorTemplate:
addMiddleSlideInAnimationToLayer:micaAnimatorTemplate:
addRightSlideInAnimationToLayer:micaAnimatorTemplate:
setMicaAnimatorTemplate:
addAnimations
ANIMATION IS NOT COMPATIBLE WITH AVFOUNDATION. Open the file with Mica, and manually set the beginTime to zero.
KEYFRAME ANIMATION HAS BAD KEYTIMES. The first keyTime must be 0.0
KEYFRAME ANIMATION HAS BAD KEYTIMES. The last keyTime must be 1.0
EXPENSIVE LAYER. It has filters, or a non-rasterized shadow, or a non-rasterized complex font such as SketchBlock or Shababa.
The Mica document ‘%@’; has an unknown published layer ‘%@’. Please check your spelling.[MicaAnimator bestURLForUserInterfaceFileName:]
[MicaAnimator bestURLForProjectContentFileName:]isMacOnlyPoster:
It seems that Mica documents also work in iOS. It is possible that Mica is used by Apple to create plugins that work in iMovie on iOS as well as on the Mac. Mica might not be made available to users and third-party plugin developers.
I couldn’t find any internet references to ‘Apple Mica’ as an OS X animation tool. However, here’s a recent Twitter conversation:
@Alex4D: Has anyone heard of an animation/compositing tool from Apple called ‘Mica’?
@BroadreachMedia: that was the code name of Shake/Motion combo.
@Alex4D: ‘was’ not ‘is’?
@BroadreachMedia: well there were rumours of another app joining fcpx et al. Would make perfect sense with new Mac Pro OpenCL power to have RT Shake.
On the other hand, this is not to say that Motion won’t be updated when Final Cut Pro X 10.1.0 is launched – it might be that the Motion code they plan to release wasn’t ready to be included in iMovie.
Whatever happens, at least we don’t have long to find out…