Loading...
This module connects to 1stPass, the live production console for macOS that builds your first cut while the show is still on air. Every camera cut, fade, marker and title is logged the instant it happens, stamped with frame-accurate timecode from an LTC box or the Mac's own clock. When the show wraps, export a ready-to-edit multicam timeline straight to Final Cut Pro or DaVinci Resolve, with every cut already made and every marker and title already in place. Run the whole show from your Stream Deck, with live tally on every camera button.
localhost)19455)These reach the physical camera bound to that cell in 1stPass, rather than the switcher. Each takes only a camera number.
Exposure:
+ closes the iris, to a higher f-number. This is the one control where + means less light: an f-number rises as the lens shuts, and that is the direction a shooter reads a lens in.+ lengthens the shutter, so brighter.+ raises ISO.+ is warmer. Only movable while the camera's white balance is on a K setting — on auto or a preset the body owns the number and the press does nothing.Shading — the trims a shot gets painted with:
+ lifts it.+ toward blue, − toward amber.+ toward magenta, − toward green.+ rotates toward magenta.The steps walk the value ladder the camera itself publishes, so a press moves to the next value that body actually offers — not a number we guessed. The camera has to have a body bound to it in 1stPass (Cameras → Edit Camera → Control Source); a cell with nothing bound does nothing.
Not every camera has every control. LUMIX bodies have no saturation or color phase to trim, and a fully manual or adapted lens has no iris the body can drive; those presses report that the camera is not reporting such a control, and change nothing. The same wording appears for a second or two right after a camera connects, while it is still telling 1stPass what it has — press again.
A press that cannot be honored is not an error and leaves last_error alone — the module logs why and the button is unaffected. The usual reasons:
The Cameras category has a ready-made button for each camera, 1 through 20. Drag one onto a button and it is finished — no options to fill in.
Each preset combines the Select Camera action with the Camera Tally & Name feedback, so pressing the button arms that camera and the button itself shows what the camera is doing. Cameras your show does not have stay blank and do nothing when pressed.
The Markers category has a Quick Marker button, ready as it is.
Connection Status — Boolean feedback that changes the button appearance based on whether the module is currently connected to 1stPass.
Camera Tally & Name — Colors and labels the button from 1stPass. The only thing to set is the camera number:
The button's label comes from the camera name in 1stPass, so renaming a camera in the app renames the button. Untick Use camera name from 1stPass to keep your own label instead.
This makes the button work with tally lights that mirror a Stream Deck button's color, such as Companion Buddy: point one at a camera button and it becomes that camera's tally.
connection_status — Current connection state (Connected, Disconnected, Bad config).last_marker_timecode / last_marker_text — Most recent marker created.last_title_timecode — Most recent title recorded.last_cut_timecode / last_fade_timecode — Most recent cut/fade timecodes.last_quick_marker_timecode — When the most recent quick marker was stamped.program_camera — Name of the camera currently on program.standby_camera — Name of the camera currently in standby (preview).camera_1_name … camera_20_name — Camera names as configured in 1stPass. Empty for camera numbers the show does not have.camera_1_state … camera_20_state — program, preview, idle, or empty when there is no such camera.last_error — Most recent error reported by the server or by the module (e.g. dropped commands when disconnected).program_camera, standby_camera and the camera_* variables follow 1stPass live, including cuts made in the app itself. They are cleared while the module is disconnected, so nothing on a surface keeps showing a state that has moved on.
unknown_command, which does land in last_error.unknown_command, which lands in last_error.