├── .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 | [](https://linktr.ee/jftechofficial)
3 | [](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 | [](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 | [](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 |
--------------------------------------------------------------------------------