Author branching cinema.

From first scene to final master.

CtrlMovie Editor is the professional macOS authoring tool for interactive, branching-narrative films. Design the story graph, script every branch in Lua, edit the timeline, simulate the audience experience, and produce a distribution master for cinema, mobile, game console and CtrlMovie streaming — all in one document.

macOS 14.6 or later · Licensed per production

CtrlMovie Editor main window with story graph, timeline, properties and player

Version 4.6

Released Yesterday | 95.2 MB | Requires MacOS 14.6

New Features

  • Asset Formats Manager: File > Assets > Prepare Export Assets… transcodes the project's video, audio and poster assets into per-profile target folders with ffmpeg. Export profiles (platform, image and audio format, quality) are stored in the project; each folder shows what is ready, missing or in the wrong format, with per-file progress, a preview of the ffmpeg commands, and cancellation mid-encode. Streaming profiles produce faststart MP4s. The ffmpeg location is set in Settings > FFmpeg.
  • New export dialog: Finish Movie… takes platform and formats from a prepared Asset Profile instead of individual settings.
  • Packager Master: Mediablock packaging is now an export type of Finish Movie. Mediablock rendering (File > Assets > Prepare for Mediablock…) also supports Full HD and UHD projects, and renders every segment exactly once when Render Decision Overlays is off.
  • HDR projects: Image Transfer (SDR, HDR PQ, HDR HLG) and the P3 D65 colorspace in the project settings, with mastering display and content light levels. The values are written into the package (schema 15) and tagged onto prepared assets, mediablock assets and burned-in subtitles. The Validator reports export profiles whose platform cannot take the project's colour.
  • HDR preview: The player and the Simulator show HDR projects in HDR on displays with extended dynamic range, tone-mapped from the project's HDR metadata.
  • 7.1 projects: Preview, Simulator and export now build 7.1 compositions; 7.1 assets play on all eight channels.
  • QR-code markers: FFQR / LFQR markers mark where the multiplayer QR code is shown. The Simulator shows the QR screen between them; the Validator reports unpaired markers.
  • Scene sheet: File > Export Scene Sheet… writes an overview of the story as an Excel file.
  • Mute and solo in the timeline: Mute audio tracks and the embedded audio of video segments, solo a track or segment; mute states are saved with the project.
  • Change audio asset: Replace the asset of an audio track across all branches it runs through.
  • Maximum duration: The project carries its maximum run length (hh:mm:ss), filled in by Analyze and written into the package.
  • CtrlMovie Multiplayer Service (v2) in the Simulator, selectable in Settings > Multiplayer.
  • Sign-in in the browser: License activation signs in with your CtrlMovie ID in the browser, so accounts with two-factor authentication work.
  • Android audio assets as MP4/AAC; new Apple Desktop export platform.

Bug Fixes

  • Fixed projects being saved with every object twice after Revert to Saved or restoring a version. Reverting now closes and reopens the project.
  • Fixed stereo assets being silent in the preview after switching a project to 5.1 or 7.1. Audio with fewer channels than the project is placed into the project's layout (stereo on L / R).
  • Fixed a crash in Analyze, Simulate and export for projects without primary language, version or metadata key.
  • Fixed the Packager Master composition: branch points, button conditions with more than one condition, markers and collectables.
  • Fixed mediablock renders ignoring the project's subtitle style, and oversized overlays in 4K / UHD previews.
  • Fixed colour tags and the start timecode missing from prepared assets.
  • Fixed image sizes for Scope, Flat and 1.90:1 (exact DCI picture sizes, even pixel counts).
  • Fixed frame stepping at 23.976 and 29.97 fps, and exact audio / video pairing during playback.
  • Fixed audio stop actions getting out of sync with edits in the properties panel.
  • Fixed a repeating audio sample when an asset runs out of audio; it now fades to silence.
  • Fixed three playback crashes (subtitle cache, runtime controller, node lifetime).
  • Fixed the license check: signing out or a suspended account deactivates the Editor at the next start; server errors no longer remove the license.
  • Fixed the default target list of episodes, the Image Assets tooltip, and a spurious keychain error in the Translations settings.

Improvements

  • Analyze shows durations in minutes and reports the number of iterations it ran.
  • Validation: ProRes 4444 is accepted; audio / video duration mismatches in segment assets and non-numeric project versions are reported; selected issues can be copied to the pasteboard.
  • Subtitles: Delete selected subtitles directly in the segment's subtitle list.
  • Timeline: Deleting audio tracks can be undone.
  • Asset Browser: Drag assets out to Finder; filter and sidebar state are remembered.
  • Tasks: The Mac does not go to sleep while preparing or exporting; quitting warns about long-running tasks.
  • Render Subtitles was removed from the File menu; Prepare for Mediablock covers burned-in subtitles.
  • New app icon and a document icon for project files; the app is delivered as a signed disk image.
  • Updated to FFmpeg 9. Help book updated.
Contact us Full Version History

One document. The whole pipeline.

Editor unifies the parts of interactive storytelling that other tools split across editors, spreadsheets and scripts: story logic, picture, audio, subtitles, localization, validation and mastering.

Visual story graph

Lay out segments, branch points and episodes on an infinite canvas. Connect outputs to targets with a drag, drop branch points to fork the story, and group segments into episodes — including chapters that can be unlocked progressively or sold as in-app purchases for mobile and console rollouts.

  • Branch points with per-condition outputs
  • Status indicators for incomplete, warning, ready
  • Copy/paste full sub-graphs between projects
  • Project-wide search across segments, subtitles, variables and Lua
Story graph with connected segments and branch points

Frame-accurate timeline

Each segment carries its own timeline: multi-track audio with waveforms, subtitles, decision bars, markers and runtime actions. Edit with keyboard arrows, autoscroll during playback, lock finished timelines to prevent accidents.

  • Multi-channel audio with per-track volume curves
  • Decision time bars with jump guards and "always play"
  • Inline actions: variable changes, collectables, audio cues
Timeline with audio tracks, waveforms, subtitles and actions

Integrated Lua runtime

What makes a CtrlMovie interactive in the first place: a Lua scripting runtime that runs inside every player — desktop, mobile, console and theater. Every branch, decision and action can be scripted, so the story can react to anything you can express in code.

  • Project-wide variables, traits and collectables
  • Lua conditions on every branch and action
  • Inline editor with syntax highlighting and validation
  • Same runtime in the editor's simulator and the shipped player
Properties panel with scripted decision conditions

Simulate the whole audience

Play the project end-to-end inside the editor with the same playback engine your shipped app will use. Drive decisions yourself, shuffle for replay, or scan the QR code to run a full multiplayer session from real phones — no build required.

  • Single-player and multiplayer modes
  • Mediablock simulation for theatrical pre-flight
  • Session event log, exportable as PDF
Multiplayer simulator with QR code and event log

Catch problems before the audience does

A continuously running validation engine inspects every segment, condition, asset and subtitle. Grouped issues link straight to the object that needs attention, so the project is always ship-ready.

  • Missing assets, dead ends, unreachable branches
  • Lua condition syntax + variable scope checks
  • Subtitle timing, language coverage, codec compatibility
Validation window with grouped error messages

Know your story's shape

Analyze plays the film 1000 times with random decisions and stops on dead ends, missing assets and logic errors. It reports minimum, mean and maximum runtime and decision count, shows how often each segment is visited, and stores the longest runtime as the maximum duration a theater management system schedules with.

  • 1000 simulated runs with random decisions
  • Ending probability distribution
  • Save the shortest and longest path; export ending probabilities as CSV
Analyzer result with min, mean and max runtime

AI supported translation

Dedicated translation and subtitle sheets let you author every language directly in the project — no spreadsheets to chase, no re-import step. Coverage, fonts and per-language subtitle styles stay consistent across episodes.

  • Translation sheet for UI strings and decisions
  • Subtitle sheet with side-by-side language columns
  • Per-language subtitle styles and burn-in
  • Translate Missing fills the gaps with DeepL
Internal translation sheet

Master for any screen

Editor produces a distribution master — .ctrlmovie / .ctrlpack — that feeds the rest of the CtrlMovie pipeline: shipped apps for mobile and console, the CtrlMovie streaming platform, and the companion Packager app, which turns the master into a DCI-compliant DCP for theatrical release.

  • Encrypted distribution master with managed key handling
  • Export profiles per platform, with assets transcoded and checked before export
  • Separate "review render" of a timeline, with watermark burn-in, for sending cuts to external reviewers
  • Burn-in subtitles per language
Export dialog with format and asset options

HDR from project to package

Choose the project's image colorspace — Rec. 709, Rec. 2020 or P3 D65 — and its transfer: SDR, HDR PQ or HDR HLG. The player and the Simulator show HDR projects in HDR on displays with extended dynamic range, and everything Editor prepares or exports carries the matching colour tags and HDR metadata.

  • Mastering display luminance and content light levels (MaxCLL / MaxFALL) in the project settings
  • HDR preview, tone-mapped with the project's metadata where the display runs out of headroom
  • Prepared assets and burned-in subtitles tagged with colorspace and transfer
  • Validation flags export platforms that cannot take the project's colour
New project dialog with image colorspace and image transfer settings

From rough cut to release.

Everything you need to ship a branching film lives in one window — and every change is undoable.

01

Drop in assets

Auto-discover video, audio and images from disk. Editor organizes them per episode and warns on conflicts.

02

Draw the story

Wire segments and branch points on the graph. Use Lua conditions when you need variables, traits, or collectables.

03

Cut the timeline

Trim picture, drop in audio tracks with volume curves, position subtitles and decisions to the frame.

04

Simulate

Play it in the built-in simulator. Test multiplayer from phones with a QR code, no build pipeline.

05

Validate

Let the validation engine surface missing assets, dead ends and broken conditions before export.

06

Master & ship

Export an encrypted distribution master for mobile, console and streaming — or hand it to Packager for a DCI-compliant DCP.

Pro pipeline, no surprises.

Editor is a native macOS document-based app. Files are portable, undo is bottomless, and projects scale to feature-length stories.

Frame rates

23.976 · 24 · 25 · 29.97 fps

Image formats

Full HD · UHD · 2K · 4K

Colorspaces

Rec. 709 · Rec. 2020 · P3 D65

Dynamic range

SDR · HDR PQ · HDR HLG

Audio

1.0 · 2.0 · 5.1 · 7.1

Targets

Cinema · Mobile · Console · CtrlMovie streaming

Bring your branching project to CtrlMovie.

Editor is licensed per production. Get in touch and we'll set up a contract, provision your license, and onboard your team on the full CtrlMovie pipeline — Editor, Packager, the streaming platform and the mobile/console SDKs.

Contact us