Workflow Enhancements for Creatives
This repository contains a Loupedeck Plugin written in C#, that allows you to connect CommandPost to the official Loupedeck software using the Loupedeck API.
Once installed you can then trigger a variety of CommandPost actions directly within the Loupedeck software.
This plugin will eventually be bundled within CommandPost, so you should never have to download it directly from this repository - as we'll include a compiled version within CommandPost.
However, prior to it being officially included in CommandPost, you can find beta builds here in this repository.
Feature requests and bug reports are very much welcome!
As we get questions about the Loupedeck Plugin for CommandPost we'll try and answer them here.
No, the CommandPost Loupedeck Plugin is an "Universal" plugin, so you can use it with any application.
To enable CommandPost Loupedeck Plugin actions within the LoupedeckConfig application, select the item next to plugins:
You can then tick "CommandPost" under the "Universal Plugins" list:
Currently the official Final Cut Pro support for Loupedeck forcefully installs and changes to the Loupedeck4.0 Command Set when you launch the Loupedeck service.
CommandPost does not require a specific Command Set to be installed, as it reads the active Command Set each time you try and trigger a Command Set action.
If you trigger an action that does not have a Command Set applied, you'll be presented with a macOS notification like the below:
When you hover your mouse over the notification, you're presented with the option to "Assign Shortcut":
When you click on "Assign Shortcut" it will take you to the Final Cut Pro Command Editor, and pre-populate the shortcut you want to assign:
You can download the latest beta release of CommandPost with the Loupedeck Plugin here.
During this beta testing phase, we strongly recommend completely uninstalling CommandPost prior to testing a new beta release using the Uninstall tool in the DMG download:
You can find general information on how to install CommandPost here.
Once CommandPost is installed click on the CommandPost menubar icon, then select "Control Surfaces > Loupedeck Plugin".
This will open the Loupedeck Plugin panel. You can then click the "Enable Loupedeck Plugin" checkbox to enable the plugin.
When installing the Loupedeck Plugin for the first time, or if the Loupedeck Plugin has been updated, CommandPost will restart both the Loupedeck service application and the LoupedeckConfig application.
Once installed, you can access the CommandPost actions from the CommandPost icon within the LoupedeckConfig application.
Because CommandPost has so many actions, as well as many user customisable actions (such as Lua Snippets), we offer a way for users to manually bring across specific actions from CommandPost to the LoupedeckConfig application.
In the Loupedeck Plugin control surface panel, there's a section for "favourites":
Here you have 50 favourites where you can assign press, turn left and turn right actions from anything in the CommandPost Search Console.
You can learn more about the CommandPost Search Console here.
In the above screenshot we've assigned "Toggle Mute Volume" to press, "Decrease Volume" to turn left and "Increase Volume" to turn right.
Now within the LoupedeckConfig application, when CommandPost selected, you'll see a new action folder called "CP: Favourites".
You can now apply "Favourite 01" to whatever knob or button you want to trigger the volume controls we set up in CommandPost.
To keep the CommandPost Loupedeck Plugin as simple and as friendly as possible, we use basic JSON files to store all localisation information.
The CommandPost Loupedeck Plugin defaults to using whatever language the LoupedeckConfig application is set to.
Currently if you change the LoupedeckConfig application language, you need to restart the Loupedeck Service and LoupedeckConfig application for the language to be updated in the user interface. We hope to fix this in a future beta.
However, if you change the language in the LoupedeckConfig application, some of the actions will actually update on the hardware displays.
English is regarded as the "hero" language, so if a translation doesn't exist in a language, it will fallback to English by default.
The CommandPost Loupedeck Plugin does contain a bunch of .xliff
files (found here), but these are essentially just empty dummy files used to tell the Loupedeck API that we support these languages.
Here's an explanation of the JSON files we currently use:
This stores all the adjustment (i.e. knob) actions in a simple JSON table, where the key is the internal identifier and the value is the group identifier.
For example:
{
"CommandPostFavourite01": "CommandPostFavourites",
"CommandPostFavourite02": "CommandPostFavourites"
}
You can modify this file on GitHub here.
This stores all the commands (i.e. button) actions in a simple JSON table, where the key is the internal identifier and the value is the group identifier.
For example:
{
"Command Set Shortcuts.General.Paste as Connected": "FCPCommandSet.General",
"Command Set Shortcuts.Marking.Range Selection Tool": "FCPCommandSet.Marking"
}
You can modify this file on GitHub here.
This stores all the commands (i.e. button) actions that are programatically generated via WebSocket messages in a simple JSON table, where the key is the internal identifier and the value is not currently used.
For example:
{
"Commands": "",
"Shortcuts": "",
"KeyboardMaestro": ""
}
This basically just means that when the CommandPost Loupedeck Plugin loads, it will send the following messages to CommandPost:
RequestCommands
RequestShortcuts
RequestKeyboardMaestro
It's then up to CommandPost to send back details about these commands to the Loupedeck Service.
You can modify this file on GitHub here.
This file translates a internal identifier (found in the adjustments.json
and commands.json
) to a human readable display name that you find in the LoupedeckConfig user interface.
The language code is a two character code, for example: "de", "en", "fr", "ja" and "ko".
For example:
{
"Video Inspector.Compositing.Opacity": "Opacity",
"Video Inspector.Transform.Position X": "Position X",
"Video Inspector.Transform.Position Y": "Position Y"
}
You can modify these files on GitHub here.
This file translate a group identifier to a human readable group display name that you find in the LoupedeckConfig user interface.
For example:
{
"CommandPostFavourites": "CP: Favourites",
"FCP.Video Inspector": "FCP: Video Inspector",
"FCP.Timeline": "FCP: Timeline"
}
You can modify these files on GitHub here.
This file contains general translations used by the CommandPost Loupedeck Plugin.
The key is the unique identifier, and the value is the human readable string.
For example:
{
"CommandPostURL": "https://commandpost.io",
"CommandPostNotRunningError": "CommandPost is not running.",
"CommandPostWebSocketError": "CommandPost is not connected.",
"CommandPostWebSocketSpecificError": "WebSocket Server Error: "
}
You can modify these files on GitHub here.
- Depending on how many effects, transitions, generators and titles you have installed on your system, LoupedeckConfig can be quite slow at loading the list of CommandPost actions. Searching for actions is also incredibly slow.
- Currently changing the language via the LoupedeckConfig menubar won't automatically update the CommandPost actions in the LoupedeckConfig interface. You'll need to restart both the Loupedeck Service & LoupedeckConfig application for user interface and actions to update. However, most actions will update on the hardware itself.
The Loupedeck Plugin uses CommandPost's Workflow Extension to control the timeline playhead in Final Cut Pro.
The Workflow Extension will load automatically when you trigger an action that requires it.
You can learn more about the Workflow Extension here.
CommandPost is a free and open source macOS application that bridges between control surfaces and software that doesn’t support them natively, such as Apple’s Final Cut Pro and Adobe’s After Effects.
It’s been downloaded over 114 thousand times, and there are over 2.3 thousands members in our Facebook Community.
It’s been translated into Arabic, Bengali, Catalan, Chinese (Simplified), Chinese (Traditional), Danish, Dutch, French, German, Greek, Hindi, Hungarian, Italian, Japanese, Korean, Malayalam, Norwegian, Panjabi/Punjabi, Polish, Portuguese, Russian, Spanish, Swedish, Ukrainian & Vietnamese by our awesome community.
It’s used by filmmakers, developers, scientists and macOS power users all over the world to seriously speed up mundane tasks through powerful and customisable automation tools.
For example, you can apply individual effects within Final Cut Pro or After Effects with the single tap of a button.
Powered by Lua (the same scripting language used by Blackmagic Fusion, Adobe Lightroom and even parts of Apple iOS), it's insanely customisable and powerful.
It runs natively on Apple Silicon and is fully compatible with Hammerspoon.
You can listen to Chris explain CommandPost on Final Cut Pro Radio Episode #57 and Episode #43.
You can access the Developer Guide here. This includes information on Installation & Usage.
You can participate in the translation here.
You can also read our Developer Code of Conduct here. The source is released under MIT-License.
To help continue CommandPost to grow, evolve, and stay completely free and open-source, we offer the ability to sponsor CommandPost directly through GitHub.