A DJ controller sends a MIDI message every time you press a button or turn a wheel. Install the free macOS app Hammerspoon and write a short Lua script that turns each of those messages into a Premiere Pro keyboard shortcut.
This works with any controller your Mac sees as a MIDI device. The example below uses a Pioneer DDJ-WeGO4, a cheap entry-level controller. Hammerspoon is Mac only, so these steps are for Premiere Pro on macOS.
What you can map
Here's a layout that works well on a two-deck controller:
- Buttons: Play/Pause, Mark In, Mark Out, Cut, Ripple Delete, Add Marker, Clear Markers and Full Screen Preview
- Jog wheels: one for frame-by-frame stepping, the other for fast scrubbing
- Tempo slider: timeline zoom
- Volume slider: your Mac's output volume while you monitor
It won't replace a pro editing surface, but it's much faster than reaching for the keyboard for every cut.
How to map a DJ controller to Premiere Pro
-
Install Hammerspoon. Download it from hammerspoon.org, drag it into Applications and open it. A hammer icon appears in your menu bar.
-
Give Hammerspoon Accessibility access. Go to System Settings > Privacy & Security > Accessibility and turn on Hammerspoon. Without this, it can't send keystrokes to Premiere.
-
Plug in the controller and find its name. Connect the controller over USB. Click the hammer icon, choose Console, type
hs.midi.devices()and press Return. Copy the controller's name exactly as it appears, for exampleDDJ-WeGO4. -
Log the MIDI messages. Click the hammer icon and choose Open Config. This opens
~/.hammerspoon/init.lua. Paste this in, save, and choose Reload Config:local dj = hs.midi.new("DDJ-WeGO4") dj:callback(function(_, _, commandType, _, meta) print(commandType, meta.channel, meta.note, meta.controllerNumber, meta.controllerValue) end)Open the Console again and press every button and turn every wheel you want to use. Each press prints a line. Write down the note number for each button and the controller number for each wheel and slider.
-
Map each control to a Premiere shortcut. Replace the logging code with a table that links each note number to a Premiere shortcut. Swap in the numbers you wrote down:
local dj = hs.midi.new("DDJ-WeGO4") -- note number from step 4 -> Premiere Pro shortcut local buttons = { [11] = { {}, "space" }, -- Play/Pause [12] = { {}, "i" }, -- Mark In [13] = { {}, "o" }, -- Mark Out [14] = { {"cmd"}, "k" }, -- Cut (Add Edit) [15] = { {"shift"}, "delete" }, -- Ripple Delete [16] = { {}, "m" }, -- Add Marker } -- controller number of the jog wheel from step 4 local JOG = 33 dj:callback(function(_, _, commandType, _, meta) if commandType == "noteOn" and meta.velocity > 0 then local b = buttons[meta.note] if b then hs.eventtap.keyStroke(b[1], b[2], 0) end elseif commandType == "controlChange" and meta.controllerNumber == JOG then -- most jog wheels send values above 64 for clockwise, below 64 for counterclockwise if meta.controllerValue > 64 then hs.eventtap.keyStroke({}, "right", 0) else hs.eventtap.keyStroke({}, "left", 0) end end end)The left and right arrows step one frame in Premiere. For the fast-scrub wheel, send
landjinstead. For the tempo slider, send=to zoom in and-to zoom out. For the volume slider, pass its value tohs.audiodevice.defaultOutputDevice():setOutputVolume(value / 127 * 100). -
Limit the mapping to Premiere Pro. Add this check as the first line inside the callback, so the controller does nothing in other apps:
if not hs.application.frontmostApplication():name():find("Premiere") then return end -
Reload the config and test it. Click the hammer icon and choose Reload Config. Open a project in Premiere Pro and try each control on the timeline. If a button does the wrong thing, check its shortcut under Premiere Pro > Keyboard Shortcuts, since custom layouts and older versions can differ.
For Clear Markers and Full Screen Preview, look up the shortcut in the same Keyboard Shortcuts window and add another line to the buttons table.
FAQ
Does this work on Windows? Hammerspoon only runs on macOS, so these steps are Mac only. On Windows you need a different tool that turns MIDI messages into keystrokes.
Will the controller mess with other apps while it's plugged in? No, as long as your script checks that Premiere Pro is the frontmost app. When you switch to another app, the script ignores every button press.
Do I need a Pioneer DDJ-WeGO4 for this? No. Any controller that shows up as a MIDI device on your Mac works. Only the note and controller numbers change, and you find those by logging them in step 4.
If you're still learning which shortcuts matter, start with how to learn Premiere Pro for beginners. To get more room for the timeline you're scrubbing through, see the best ultrawide monitor setup for Premiere Pro editing.
Caption Your Videos in Minutes
and keep people watching
Try Sycamore