Apple provides two ways to make plug-ins and effects in Final Cut Pro: FXScript and FxPlug. Apple also provides a means for third-party applications to interact with FCP, which is briefly described next.
Initially, for version 0.1, we were going to create an external Mac application that uses a combination of Apple Events and the Final Cut Pro XML Interchange Format. We would use this powerful combination to manipulate the data used in Final Cut Pro projects, and then use this information to interact with Butter, which would display a preview of the results. Recently, however, after a meeting with Scott Downe, Chris De Cairos, and Dave Seifried, we decided that we will take advantage of the fact that FxPlug allows us to embed controls directly in Final Cut Pro, and then use the data from those controls to create the data that is neeeded. Below is the plan for version 0.1.
Make a plug-in that embeds custom controls directly in Final Cut Pro. The user will be able to use these controls to specify which plug-ins they want to show up on the web page at what time. This data will be sent to Popcorn, and the results will be displayed in a web view.
How it will be done
Information about which plug-in to display at what time will be extracted from our own custom controls (and from the FCP project itself, if necessary), convert it to JSON, and store this JSON in a file. There will be an HTML file that links to this JSON file, and also to a JSON parser (from Popcorn) that will convert the JSON to the appropriate Popcorn objects. The result of this will be displayed in a web view. The web page will use a placeholder video, and then display the specified plug-ins at the appropriate user defined times.
After speaking with Bobby Richter, we thought it would be cool to use sockets so that Butter and Final Cut Pro could interact with each other. This would allow someone to work on their Final Cut Pro project, while adding the annotations to their video using Butter on their iPad at the same time. Very interesting!