├── .gitattributes ├── .gitignore ├── Audio Denoiser.scpt ├── Blend mode.scpt ├── CONTRIBUTING.md ├── Keyboard-layout.psd ├── LICENSE ├── MVMT.scpt ├── Outro.scpt └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /Audio Denoiser.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JFtechOfficial/FCPX-macro-keyboard/75f37a7590ea062d125e5872354b7f452a856ab7/Audio Denoiser.scpt -------------------------------------------------------------------------------- /Blend mode.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JFtechOfficial/FCPX-macro-keyboard/75f37a7590ea062d125e5872354b7f452a856ab7/Blend mode.scpt -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | When contributing to this repository, please first discuss the change you wish to make via issue, 4 | email, or any other method with the owners of this repository before making a change. 5 | 6 | Please note we have a code of conduct, please follow it in all your interactions with the project. 7 | 8 | ## Opening Issues 9 | 10 | Before you open a new issue search for similar issue in the [Issues tab](https://github.com/JFtechOfficial/repository_template/issues) 11 | 12 | 13 | ## Coding Style 14 | 15 | - lint your code 16 | - use unix line endings (not windows) 17 | - indent your code with TABs instead of spaces 18 | - use utf8 file encoding (ANSI encoding is strictly forbidden!) 19 | - use speaking names for variables 20 | - avoid code dups -> if you write similar code blocks more the 2 times -> refactoring! 21 | 22 | 23 | ## Pull Request Process 24 | 25 | 1. Update the README.md with details of changes 26 | 2. Increase the version numbers in any examples files and the README.md to the new version that this 27 | Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/) 28 | 3. Reference an issue (optional). 29 | 30 | ## Code of Conduct 31 | 32 | ### Our Pledge 33 | 34 | In the interest of fostering an open and welcoming environment, we as 35 | contributors and maintainers pledge to making participation in our project and 36 | our community a harassment-free experience for everyone, regardless of age, body 37 | size, disability, ethnicity, gender identity and expression, level of experience, 38 | nationality, personal appearance, race, religion, or sexual identity and 39 | orientation. 40 | 41 | ### Our Standards 42 | 43 | Examples of behavior that contributes to creating a positive environment 44 | include: 45 | 46 | * Using welcoming and inclusive language 47 | * Being respectful of differing viewpoints and experiences 48 | * Gracefully accepting constructive criticism 49 | * Focusing on what is best for the community 50 | * Showing empathy towards other community members 51 | 52 | Examples of unacceptable behavior by participants include: 53 | 54 | * The use of sexualized language or imagery and unwelcome sexual attention or 55 | advances 56 | * Trolling, insulting/derogatory comments, and personal or political attacks 57 | * Public or private harassment 58 | * Publishing others' private information, such as a physical or electronic 59 | address, without explicit permission 60 | * Other conduct which could reasonably be considered inappropriate in a 61 | professional setting 62 | 63 | ### Our Responsibilities 64 | 65 | Project maintainers are responsible for clarifying the standards of acceptable 66 | behavior and are expected to take appropriate and fair corrective action in 67 | response to any instances of unacceptable behavior. 68 | 69 | Project maintainers have the right and responsibility to remove, edit, or 70 | reject comments, commits, code, wiki edits, issues, and other contributions 71 | that are not aligned to this Code of Conduct, or to ban temporarily or 72 | permanently any contributor for other behaviors that they deem inappropriate, 73 | threatening, offensive, or harmful. 74 | 75 | ### Scope 76 | 77 | This Code of Conduct applies both within project spaces and in public spaces 78 | when an individual is representing the project or its community. Examples of 79 | representing a project or community include using an official project e-mail 80 | address, posting via an official social media account, or acting as an appointed 81 | representative at an online or offline event. Representation of a project may be 82 | further defined and clarified by project maintainers. 83 | 84 | ### Enforcement 85 | 86 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 87 | reported by contacting the project team on [Facebook](https://www.facebook.com/JFtechOfficial/), [YouTube](https://www.youtube.com/JFtech) or [Instagram](https://www.instagram.com/jftechofficial/). All 88 | complaints will be reviewed and investigated and will result in a response that 89 | is deemed necessary and appropriate to the circumstances. The project team is 90 | obligated to maintain confidentiality with regard to the reporter of an incident. 91 | Further details of specific enforcement policies may be posted separately. 92 | 93 | Project maintainers who do not follow or enforce the Code of Conduct in good 94 | faith may face temporary or permanent repercussions as determined by other 95 | members of the project's leadership. 96 | 97 | ### Attribution 98 | 99 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 100 | available at [http://contributor-covenant.org/version/1/4][version] 101 | 102 | [homepage]: http://contributor-covenant.org 103 | [version]: http://contributor-covenant.org/version/1/4/ 104 | -------------------------------------------------------------------------------- /Keyboard-layout.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JFtechOfficial/FCPX-macro-keyboard/75f37a7590ea062d125e5872354b7f452a856ab7/Keyboard-layout.psd -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MVMT.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JFtechOfficial/FCPX-macro-keyboard/75f37a7590ea062d125e5872354b7f452a856ab7/MVMT.scpt -------------------------------------------------------------------------------- /Outro.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JFtechOfficial/FCPX-macro-keyboard/75f37a7590ea062d125e5872354b7f452a856ab7/Outro.scpt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FCPX Macro Keyboard 2 | [![banner](https://dl.dropboxusercontent.com/s/kjas0ec2ibrgzes/banner-FCPX-macro-keyboard.png?dl=1 "banner with JFtech logo & social")](https://linktr.ee/jftechofficial) 3 | [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com) 4 | 5 | Convert any kind of USB keyboard into a fully programmable macro keyboard and add functions for FCPX. 6 | 7 | Integrate MIDI controls using your smartphone/tablet touchscreen. 8 | 9 | This repo will provide you with **instructions** on how to set it all up, along with **custom keycaps designs** for your macro keyboard and some **scripts** I personally use during my videoediting sessions. 10 | 11 | 12 | [![Imgur](http://i.imgur.com/RGC4NYc.gif)](https://youtu.be/XESwceo-a9U) 13 | 14 | ## 🚀 Getting started 15 | 16 |
17 | Table of Contents (click to expand) 18 | 19 | * [Getting started](#-getting-started) 20 | * [Configuration](#️-configuration) 21 | * [Resources](#-resources) 22 | * [Contributing](#-contributing) 23 | * [Support Me!](#-support-me) 24 | * [Release History](#️-release-history) 25 | * [License](#-license) 26 |
27 | 28 | ### Requirements 29 | 30 | * [CommandPost](https://commandpost.io) 31 | 32 | * [USB Overdrive](http://www.usboverdrive.com/USBOverdrive/News.html) 33 | 34 | * [TouchOSC(paid) + TouchOSC Editor + TouchOSC Bridge](https://hexler.net/products/touchosc) 35 | 36 | 37 | ## ⚙️ Configuration 38 | Make sure: 39 | - you have a dedicated Settings profile in USB Overdrive for the keyboard you intend to use as macro keyboard 40 | - that Settings profile is selected in the dropdown menu. 41 | 42 | ### Macro Keyboard 43 | if you want to assign a FCPX shortcut to a key: 44 | * Open USB Overdrive Settings panel 45 | * Select a key (add a new one if needed) 46 | * Select "Press key" and assign the shortcut 47 | 48 | 49 | if you want to assign CommandPost actions to a key: 50 | * Open CommandPost Shortcuts preference panel 51 | * Select a new action 52 | * Select modifiers and key (make sure it does not collide with FCPX own sortcuts) 53 | * Open USB Overdrive Settings panel 54 | * Select a key (add a new one if needed) 55 | * Select "Press key" and assign the same shortcut 56 | 57 | 58 | if you have more advanced needs (concatenating multiple CommandPost actions / FCPX shortcuts, calling CommandPost functions via Lua, you have no modifiers+key combinations left): 59 | * Open USB Overdrive Settings panel 60 | * Select a key (add a new one if needed) 61 | * Select "Execute AppleScript" and write the script (see [Outro.scpt](https://github.com/JFtechOfficial/FCPX-macro-keyboard/blob/master/Outro.scpt) for an example) 62 | 63 | 64 | ### MIDI Controls 65 | * Create a new user interface with TouchOSC Editor and send it to your device OR use one of the already made UI in the TouchOSC app 66 | * Make sure you have both TouchOSC and TouchOSC Bridge up and running 67 | * Open CommandPost MIDI preference panel 68 | * Select a new action 69 | * Click on learn and use the corresponding UI element on your TouchOSC app 70 | 71 | 72 | ## 📚 Resources 73 | 74 | The [Keyboard-layout file](https://github.com/JFtechOfficial/FCPX-macro-keyboard/blob/master/Keyboard-layout.psd) contains custom made keycaps you can print on adhesive paper and stick on your orignial keycaps. 75 | 76 | The keycap design is kept as simple and accessible as possible. It always contains text in the center portion of the key to describe the key function (with full words or abbreviations) and a symbol in the top left corner to represent what the key originally was, in case you want to use the keyboard as standard keyboard once again. The font is the one used by Apple in its own keyboards. The shapes are ment to create contrast with the text and add meaning (that matches with the keycap function). The background colors are chosen from [Apple Accessible + Vibrant macOS system color palette](https://developer.apple.com/design/human-interface-guidelines/macos/visual-design/color/). Color gradients are trendy these days, but printers don't get along with them, and, since the keycaps have to be printed, solid colors were a better choice. 77 | Background colors were assigned as such: 78 | 79 | | COLOR | ASSIGNED TO | NOTES | 80 | | :-----------: |---------------| ------| 81 | | Blue | Video | Video role is blue. Everything you can inspect in the Video inspector | 82 | | Green | Audio | Music role is green. Everything you can inspect in the Audio inspector | 83 | | Grey | Transition | Transitions are grey. Everything you can inspect in the Transition inspector | 84 | | Orange | FCPX layout | Everything you can change about FCPX layout (es. workspaces) | 85 | | Purple | Title/Generator | Title role is purple. Everything you can inspect in the Generator inspector | 86 | | Red | Clips, media & other | Everything left | 87 | 88 | The currently available keycap designs are: 89 | 90 | | KEYCAP | NOTES | 91 | | :-----------: | ------| 92 | | Add-Blend | Set Blend Mode to Add | 93 | | Adjustment-Layer | Add an Adjustment Layer title to the timeline | 94 | | Audio-Denoiser | [Apply Audio Denoiser effect to an audio clip and open Audio inspector](https://github.com/JFtechOfficial/FCPX-macro-keyboard/blob/master/Audio%20Denoiser.scpt) | 95 | | Behind-Blend | Set Blend Mode to Behind | 96 | | Brush | Add Brush title to the timeline | 97 | | Cam-Rig | Add Cam Rig title to the timeline | 98 | | Chroma-Key | Apply Keyer effect to a video clip | 99 | | Custom-Generator | Add Custom generator to the timeline | 100 | | Custom-Title | Add Custom title to the timeline | 101 | | Draw-Mask | Apply Draw Mask effect to a video clip | 102 | | Detach-Audio | Detach audio from a clip | 103 | | fit | Set video player size to fit | 104 | | Folder-BK | Open Backup folder in Finder | 105 | | Folder-YT | Open YouTube folder in Finder | 106 | | Font | Apply a given font to a text | 107 | | Grid | Add Guides title to the timeline | 108 | | Ink | Add Ink title to the timeline | 109 | | Line-Solid | Add Line Solid title to the timeline | 110 | | Lut | Apply Lut effect to a video clip | 111 | | MVMT1&2 | [Open a given submenu in the title and generator sidebar](https://github.com/JFtechOfficial/FCPX-macro-keyboard/blob/master/MVMT.scpt) | 112 | | Normal-Blend | Set Blend Mode to Normal | 113 | | Outro | [Add Outro generator at the end of the timeline and wrap it in a new compound clip called "Outro"](https://github.com/JFtechOfficial/FCPX-macro-keyboard/blob/master/Outro.scpt) | 114 | | Point-Tracker | Apply Point Tracker effect to a video clip | 115 | | Slide-Right | Apply Slide Right transition to a video clip| 116 | | Slide-Left | Apply Slide Left transition to a video clip| 117 | | Speed | Open retiming menu of a clip | 118 | | Sync-Clips | Syncronize selected clips | 119 | | Vertical | Add Vertical title to the timeline | 120 | | Volume -∞ | Set a clip audio volume to -∞ dB | 121 | | Volume 0.0 | Set a clip audio volume to 0.0 dB | 122 | | Workspace-Color | Set the workspace to your "color correction" workspace | 123 | | Workspace-Cut | Set the workspace to your "rough cut" workspace | 124 | | Workspace-Effect | Set the workspace to your "effects and refinements" workspace | 125 | | 1x | Set retiming of a clip back to 100% | 126 | | 10% | Set retiming of a clip to 10% | 127 | | 150percent | Set video player size to 150% | 128 | | 2x | Set retiming of a clip to 200% | 129 | | 25% | Set retiming of a clip to 25% | 130 | | 4x | Set retiming of a clip to 400% | 131 | | 4pt-Blur | Apply 4 Points Blur effect to a video clip | 132 | | 50percent | Set video player size to 50% | 133 | | 50% | Set retiming of a clip to 50% | 134 | | 8x | Set retiming of a clip to 800% | 135 | 136 | 137 | 138 | Use the [Keyboard-layout file](https://github.com/JFtechOfficial/FCPX-macro-keyboard/blob/master/Keyboard-layout.psd) to preview and customize how you want to arrange your macro keys. 139 | 140 | How to modify the layout: 141 | 1) modify keycap layer position 142 | 2) open keycap psd 143 | 3) change the character in the top left corner (should match the key it's covering) 144 | 4) save and close the keycap psd 145 | 146 | If the keyboard layout you are using fits in an A4 paper sheet you are ready to print, otherwise you have to rearrange the keycap designs to make them fit. 147 | 148 | Supported layouts (also A4-compatible): 149 | * Apple en_US keyboard layout 150 | * Apple en_International keyboard layout 151 | 152 | 153 | ## 🎁 Contributing 154 | Do you want to help this project? You did some modification or created something new for this setup? Contribute! 155 | Here you can find the contribution guidelines 156 | 157 | ### New Keyboard Layout 158 | In order to add a new keyboard layout you must add to the [Keyboard-layout file](https://github.com/JFtechOfficial/FCPX-macro-keyboard/blob/master/Keyboard-layout.psd) the following layers: 159 | * 1:1 scale keyboard layout 160 | * 1:1 scale keyboard layout mask that excludes any symbol on the "standard-sized" keys (keep "odd shaped" keys) 161 | 162 | 163 | ### New/Modified Keycap Design 164 | How to add a new keycap: 165 | 1) duplicate `TEMPLATE` layer 166 | 2) set `TEMPLATE copy` layer to visible 167 | 3) change `TEMPLATE copy` position (should be covering a key) 168 | 4) open `TEMPLATE copy` psd 169 | 5) modify `TEMPLATE copy` psd 170 | 6) change the character in the top left corner (should match the key it's covering) 171 | 7) save and close the `TEMPLATE copy` psd 172 | 8) rename `TEMPLATE copy` with a descpritive name 173 | 174 | In order to keep the keycap designs consistent you should follow these guidelines: 175 | 176 | ***Design*** 177 | 178 | Do not obstruct top left corner (that's the spot for the keycap symbol!), keep the design centered, avoid adding design details near the canvas edges (when cutting the keycap from the paper, small errors could chip that detail away), align to guides. New design must be consistent with the current one. 179 | 180 | 181 | ***Colors*** 182 | 183 | Use one of the provided levels as background color for the keycap. Keep background colors consistent with their usage 184 | 185 | 186 | ***Text*** 187 | 188 | You must include text (in english). You can use full words or abbreviations. Use 30 pt San Francisco Heavy. Prefer capital letters, color black, white outline/background. It must be vertically centered and not obstructed by other layers. 189 | 190 | 191 | ***Shapes*** 192 | 193 | You must include simple shapes (fine details get lost during the printing phase). Prefer color white for the shapes, use other colors only if it's necessary to convey meaning. Text and shapes should “merge” to be perceived as a single element that convey the meaning of the key. 194 | 195 | 196 | ### New Script 197 | If you created a new script: 198 | * test it 199 | * be sure that the same function cannot be achieved via FCPX shortcuts 200 | * be sure that the same function cannot be achieved via CP actions 201 | * open a pull request 202 | 203 | 204 | For other information please see [CONTRIBUTING.md](./CONTRIBUTING.md). 205 | 206 | 207 | ## 💵 Support Me! 208 | 209 | [![ko-fi](https://www.ko-fi.com/img/donate_sm.png)](https://ko-fi.com/Y8Y0FW3V) 210 | 211 | 212 | 213 | ## 🗓️ Release History 214 | 215 | * 22/08/2019 - 1.0 - first release 216 | 217 | 218 | ## 🎓 License 219 | 220 | [MIT](http://webpro.mit-license.org/) 221 | 222 | 223 | --------------------------------------------------------------------------------