Premiere Pro Extensions - To UXP or not to UXP
Hi all,
Skip the preamble if you'd like and just jump to the question....
PREAMBLE
I'm a long-time Avid editor, but have just been asked to cut my next project on Premiere Pro. I was initially resistant, fearing the effort required both to re-map muscle memory and missing features between products. For the past few days, I've been digging into PPRO and have found it's not the software I once tried briefly in 2003! In fact, it's got something amazing that Avid doesn't have: AUTOMATION. Wow! This might convert me to Premiere long-term!
I've been hacking automation in the Avid for years now, writing horribly hacky global keyhooks and mimicking keyboard and mouse movements to automate repetitive tasks that you can't keymap in Avid. It's pretty janky, and just to be able to have an API to do repetitive stuff would change my editing life. I've been using the 3d modelling software, Blender, quite a bit recently, and I just love the way you can type a bit of Python and pretty much automate anything in the interface. If I had this level of automation in an editing package, I genuinely think I could save myself hours a week, and a great deal of unnecessary mouse faffing,
Now I'm trying to write some polyfill automations for Premiere to make my migration from Avid a bit more pleasant.Using CEP and Extendscript, I've successfully implemented:
- Set audio mix level in-out (based on what's under the cursor)
- Set pan in-out (on selected tracks)
- Create subsequence from in-out selection and load it in source (Ctrl+Alt+C in Avid - I thought I was going to really miss this one).
- Add filler between all clips (probably just me, but I do pulls and I like a second of black between things. Just feels neater)
- Load filler (or load black video in PPRO speak).
I'm planning to implement:
- Add head and tail audio dissolves
- Remove audio dissolves in-out
- Quick add custom audio dissolves (head/centered/tail) 15frames 20 frames.
- Source patching mapped to a button (For e.g. to quickly map audio A1,A2 from a source to A5,A6 - which is where I always put sync audio from archive sources. Similarly A9-10 is where I put non-sync atmos, so I'd have a quick patch for that too).
- Extract a sequence of clips based on markers in a source sequence. I add a GREEN marker every time I see a GV when I'm looking at doc rushes. I'd then basically be able to pull these out into custom GV sequences.
- I'd love to create a quick input box I could pop up and have some quick commands that might be customized for a particular setting. The idea would be I could quickly type quick aliases for commands: AL 1,2 -15 might mean set Audio levels on tracks 1 and 2 to -15. AN 1-6 -10 might mean nudge audio on tracks 1-6 by 10 dB.
What I've found is that Extendscript development is cool, but definitely a bit hobbled. From a day's worth of hacking, I've found:
- The old-school Javascript is a bit of a pain, and talking between the JS engine and the Extendscript engine by only passing basic objects can get restrictive.
- It doesn't seem possible to issue common PPRO contextual commands. It would be great to issue global commands to PPRO with just a command name (lots of programs do this now. e.g. VSCode, Visual Studio proper) activeTimeline.addThroughCut (I've made up this command name, assuming that there must be some internal reference to commands within PPRO).
- It would be great to be able to capture global keypresses when the extension panel isn't active, but this doesn't seem possible.
- It doesn't appear that the API is complete even when you dig into the QE DOM. For e.g., it doesn't seem possible to set the source-target patches for instance. Or to do things like control the zoom or view of the timeline.
QUESTION
Long story short...I've seen there's migration to UXP which should be based on a more modern javascript implementation - and might have a bigger surface area on the internal API. What I can't find is any documentation on how to migrate to UXP other than an April 2019 blog-post. Before I really dig into writing more fully fledge extensions, can anyone point me towards how I start UXP development for Premiere Pro? Is it mature enough to do the kinds of things I describe above, or should I concentrate my efforts on Extendscript?
