Final Cut Pro Hacks

Updated (28th September 2016):

Based on lots of fantastic user feedback, I’ve made some major improvements to the script.

This latest version has been tested on both macOS 10.10.5 and 10.11.6 with Final Cut Pro 10.2.3 and Hammerspoon 0.9.48.

I’ve also changed around the shortcut keys to avoid conflicts with other commands and programs:

CONTROL+OPTION+COMMAND:

L = Launch Final Cut Pro (System Wide)

F1 = Show list of Keyboard Shortcuts

H = Highlight Browser Playhead
F = Reveal in Browser & Highlight
S = Single Match Frame & Highlight
D = Reveal Multicam Clip in Browser & Highlight
G = Reveal Multicam Clip in Angle Editor & Highlight

B = Change Backup Interval
T = Toggle Timecode Overlays
Y = Toggle Moving Markers
P = Toggle Allow Tasks during Playback

M = Select Color Board Puck 1
, = Select Color Board Puck 2
. = Select Color Board Puck 3
/ = Select Color Board Puck 4
1-9 = Restore Keyword Preset

CONTROL+OPTION+COMMAND+SHIFT:
1-9 = Save Keyword Preset

For those that are interested, I’m currently working on a shortcut key to move a storyline up and down in position on the timeline, and another to add audio fade handles. If you have any other ideas, requests, or come across any bugs or issues please let me know in the comments below or shoot me through an email.

Please be aware that I’m a filmmaker, not a programmer, so use at your own risk!

If you find this script useful, please consider making a small donation or buy some cool Wizards Merchandising so that I can continue hacking away in my spare time:



You can download the latest script here (version 0.20 – 28/09/2016 @ 1412).

After downloading and installing Hammerspoon, the files contained in the above ZIP should be moved to ~/.hammerspoon/. For more detailed instructions read the original blog below.

Thanks for testing! Happy Cutting!

Over the last few days, I’ve been having lots of discussions with other Final Cut Pro users on social media about how annoying the Reveal in Browser (aka ‘Match Frame’) feature in FCPX is. The problem is that if you have hundreds of clips within your browser, when you match frame it’s really hard to instantly visually see where the playhead is in a sea of other clips. It’s also really annoying if you’ve got your playhead at a specific position in the browser, then continue editing in the timeline for a hour or so, and want to easily jump back to that browser playhead position to continue where you left off. It’s VERY hard to spot which clip is selected and where the tiny white playhead is hiding in the browser!

To try and solve this, I quickly threw together a simple little AppleScript that uses the macOS Accessibility API to find out where the browsers playhead currently is, and then instantly move the mouse cursor to the playhead position. It was a bit of a hack job, but after a bit of experimenting, it finally worked. However, as many people commented, it’s a pretty bad idea to move the mouse as it breaks all the Apple Human Interface Guidelines. After playing with it for a while, I have to agree – it’s a bit strange having the mouse move on you!

One of the original ideas that Scott Simmons suggested was to somehow highlight the playhead position in the browser. My idea was to do this with a GIANT arrow, so the editor can instantly see where the playhead is. Despite a lot of Googling, I couldn’t work out how to do this with AppleScript or Automator, and I don’t have the time (or the skills) to jump into Xcode. Luckily however I discovered something called Hammerspoon.

To quote the manual: “At its core, Hammerspoon is just a bridge between the operating system and a Lua scripting engine. What gives Hammerspoon its power is a set of extensions that expose specific pieces of system functionality, to the user”.

Essentially – it’s like a more powerful and geekier version of Automator, and allows you to script a bunch of stuff to speed up everyday tasks. For example, you could write a script that changes which wireless access point you’re connected to with a click of a button, or have an alert pop up on your screen when a render is finished. There’s lots of examples here.

What I discovered is that Hammerspoon has the ability to not only handle AppleScript (so I could reuse the code I’ve already been playing with), but it can also draw things on the screen – which is exactly what I needed.

It’s also free, and open source. Bonus!

It uses the Lua scripting language – which I’ve never used before, but it seemed simple enough.

So, with a LOT of trial and error, playing with my new favourite tool UI Browser, reading through heaps of examples, and thanks to some helpful Tweets – I was able to throw something together that seems to work!

Basically, the script I’ve made does three things (so far):

  • When you press CONTROL + OPTION + COMMAND + F it will perform a normal match frame in FCPX, but will also draw a red circle around the browser playhead temporarily so you can easily see where the playhead is.
  • When you press CONTROL + OPTION + COMMAND + H it will draw a red circle around the browser playhead (without doing a match frame). This is helpful if you’re just working in the browser, but you’ve ‘misplaced’ where the playhead currently is.
  • When you press CONTROL + OPTION + COMMAND + S it will perform a normal match frame, but it will also take the name from the clip you are match framing, and apply it to the search tool, so that only the match frame clip appears in your browser. I call this a “Single Match Frame”.

I’ve tried to code it so it works with all the common window layouts, however I’ve only tested it with FCPX 10.2.3 and macOS 10.11.6 on a MacBook Pro and a 5K iMac – so it MAY not work well on other systems. If it doesn’t work for you – let me know in the comments below.

I’ve noticed that the script can get very sluggish when you have lots (i.e. more than 500) clips in your event – whereas it’s really quick and snappy with events that only 50-100 clips. This seems to be a limitation of AppleScript, which I’ve been unable to solve thus far (if anyone has any ideas, please let me know!).

You’re also MORE than welcome to modify the script for your own needs (or fix my poorly designed code). I’ve been experimenting with it for saving/restoring FCPX window layouts, and also trying to implement a scrolling timeline – so there’s definitely some cool stuff you can do with it! I think a keyboard shortcut for “apply audio fade handle” is next on my list! If you come up with something cool, please make sure you share it in the comments below.

DISCLAIMER: I’m a filmmaker, not a programmer, so use this at your own risk. This script is provided “as is” with no warranty, so don’t come back to me if it blows things up. I’ve done very little testing outside my own machine, so the script may not work on all systems and configurations.

If you want to test it out, here’s how:

  • Download Hammerspoon. It’s free.
  • Hammerspoon comes as a ZIP file. Unzip it and drag the Hammerspoon.app to your Applications folder.
  • You can now run Hammerspoon. The first time you run it you’ll be presented with a Preferences panel:

hammerspoon-01

  • To actually function properly, Hammerspoon needs Accessibility permissions. Click the Enable Accessibility button.
  • You’ll then be presented with a Security window like the below. Click Open System Preferences.

hammerspoon-02

  • This will open the Security & Privacy system preferences. You’ll need to unlock the panel by clicking the paddock in the left hand corner of the screen, and enter in your computers password. Once the panel is unlocked, you’ll need to make sure the Hammerspoon item is ticked as per below. Once done, you can now close this window.

hammerspoon-03

  • Out of the box, Hammerspoon does nothing. What you need to do now is feed it some code!
  • So let’s Quit Hammerspoon for now.
  • You can download the latest script at the top of this page (I’ll be constantly updating this link as I slowly improve the script based on your feedback). This also comes as a ZIP. When you unzip it, you’ll find a file called init.lua and a folder called hs. This is what we need to give to Hammerspoon. The file is just a plain text file, so you can open it up in TextEdit (or my preference BBEdit) if you want to check out the code. The hs folder contains some additional Hammerscript modules not written by me.
  • We now need to move the downloaded init.lua and hs folder to ~/.hammerspoon/. The easiest way to do this is click Go > Go To Folder from the menubar in Finder (or press COMMAND + SHIFT + G from the desktop).

hammerspoon-04

  • You’ll then be presented with a dialogue box, where you need to type ~/.hammerspoon/.

hammerspoon-05

  • This will open the hidden Hammerspoon folder, where you need to drop in the previously downloaded init.lua file and hs folder.
  • Now when you open Hammerspoon it should load the script, ready to rock and roll!
  • You can now launch FCPX and see if it works by trying to match frame something (CONTROL + OPTION + COMMAND + F).
  • If it doesn’t work for some reason, the Hammerspoon application has a Console (COMMAND + R) which displays any error messages. If things don’t work as expected, let us know in the comments below so that we can fix things up.

hammerspoon-06

That’s it! Hopefully it works for you and you find it useful. If it doesn’t work for you, or if you have any ideas, comments or suggestions, feel free to leave them in the comments below. Happy Cutting!

13 Responses

  1. Brian Seegmiller
    Sep 18, 2016 - 03:38 AM

    So I get the error message:

    — Lazy extension loading enabled
    — Loading ~/.hammerspoon/init.lua
    — Loading extension: hotkey
    11:35:55 hotkey: Enabled hotkey ⌘⌥⇧F19
    — Loading extension: application
    — Loading extension: uielement
    ********
    11:35:55 ERROR: hotkey: The hotkey was deleted, cannot enable it
    ********
    — Done.
    ********
    11:36:11 ERROR: hotkey: The hotkey was deleted, cannot enable it
    ********
    ********
    11:37:17 ERROR: hotkey: The hotkey was deleted, cannot enable it
    ********

    How do I fix this

    Reply
    • Chris Hocking
      Sep 18, 2016 - 10:02 AM

      Hi Brian,

      Thanks so much for testing out the script! Sorry it didn’t work for you straight out of the box.

      The hotkey error in the console is normal – so that’s not the issue.

      What version of macOS are you using? What version of FCPX?

      Are you using dual or multiple screens?

      If you are using dual screens, try switching to a single screen and see if that works.

      If you send me a screenshot of your WHOLE screen when the error happens, I might be able to work out a fix.

      Any questions let me know!

      Best Regards, Chris!

      Reply
      • Chris Hocking
        Sep 23, 2016 - 12:17 PM

        Hi Brian,

        I’ve just uploaded a new version of the script to the blog. Let me know if that fixes your issues.

        Any questions let me know!

        Best Regards, Chris!

        Reply
  2. Bruce Macbryde
    Sep 27, 2016 - 11:39 AM

    Using MacPro late 2013, 3.5 GHz 6-Core Intel Xeon E5, 24 GB 1866 MHz DDR3 ECC, AMD FirePro D500 3072 MB
    Final Cut Pro 10.2.3,
    Sys: 10.11.6.

    All shortcuts appear to work well

    Regards

    Bruce

    Reply
    • Chris Hocking
      Sep 27, 2016 - 11:41 AM

      Legend, thanks Bruce! Appreciate it!

      Reply
  3. Guillaume Solar-Pelletier
    Sep 27, 2016 - 11:09 PM

    Hi Chris!!

    This is so cool…First the script had an error but after restart it work fine!

    What you did with “Multicam Match Frame & Highlight Playhead” is very very nice.

    I was wondering if it is possible to highlight the playhead directly in the angle editor.

    As you did it in the browser is just crazy good, but in the angle editor would be awesome good!

    Thank Chris, this will help a lot!!!!

    Reply
    • Chris Hocking
      Sep 28, 2016 - 06:37 AM

      Thanks for your kind words Guillaume!

      Did you happen to take a screenshot of the errors you were having when you first opened the script?

      So basically, you want a “Reveal Multicam Clip in Angle Editor” as opposed to “Reveal Multicam Clip in Timeline”? If so, yes, that’s definitely possible – I’ll add it later today.

      Reply
      • Chris Hocking
        Sep 28, 2016 - 02:18 PM

        Version 0.20 now has a “Reveal Multicam Clip in Angle Editor & Highlight” feature.

        Hope this helps!

        Reply
  4. Sasu Riikonen
    Sep 27, 2016 - 11:15 PM

    How about making mark in/out and append to storyline commands work in full screen mode? That would be nice.

    Reply
    • Sasu Riikonen
      Sep 28, 2016 - 01:14 AM

      Just noticed append to storyline actually works when playing full screen, but mark in/out doesn’t .

      Reply
      • Chris Hocking
        Sep 28, 2016 - 06:40 AM

        Thanks for your feedback Sasu.

        Just so that I can get my head around it – you basically want the ability to add in and out points whilst in fullscreen playback mode (i.e. COMMAND + SHIFT + F), so that if you’re watching a clip from the browser you can apply in and out points, that appear in the browser? Is that correct?

        I’ll have a play – but I think the only way I could make this happen is that if I quickly jump back from full screen mode to the browser then back again, which would disrupt playback. Would this be an issue, or are you expecting continuous playback?

        Reply
  5. jose angel
    Sep 28, 2016 - 06:13 AM

    Go to install and try it. Sounds all fantastic.

    Hope will be possible to “make playhead” static in the middle of the screen, moving timeline not playhead.

    Also some kind of usefull color correction under shuttle pro will be welcome.

    Thanks for your job and for share with us.

    King regards.

    Reply
    • Chris Hocking
      Sep 28, 2016 - 06:42 AM

      Thanks for your kind words Jose!

      I think doing a “static playhead” in the timeline should be technically possible. I’ll have a play and see if I can make it work – although I’d expect Apple to do this themselves in the next update (fingers crossed!).

      What shortcuts keys are you missing that prevents you from currently doing colour correction using the Shuttle Pro?

      Reply

Leave a Comment