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 13 or later · Apple silicon & Intel · Licensed per production

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

Version 4.5

Released 3 days ago | 71.9 MB | Requires MacOS 14 Sonoma

New Features

  • Search Inspector: Project-wide search across segments, subtitles, audio-track starts, variable changes and usages in Lua, decision buttons, collectables, and markers. Results grouped as cards; double-click reveals in the Story Graph. ⌘ F opens it.
  • Asset Browser: New sidebar inspector with type/episode filter, search, Quick Look, and drag-to-graph for video assets.
  • DeepL translation workflow: Translations preferences panel with keychain-backed API key, plus Translations and Subtitles sheets with Translate Missing.
  • Subtitle editing: Bulk subtitle properties panel and subtitle splitting at the playhead.
  • Simulator: Variable debugger, on-the-fly language switch, resume, exportable session event log (PDF), and episode/segment in the timecode overlay.
  • Audio rubberbanding: Drag volume lines, start/stop handles, and fade durations directly in the timeline.
  • Timeline: Segment thumbnails, scrubber timecode label, volume badges, and persisted scrubber/scroll positions.
  • Story Graph: Visit probabilities, auto-scroll while dragging, and save graph as PDF.
  • Condition Editor in Branch Points with Lua highlighting and variable palette.
  • Encrypted export: Added an encryption switch for movie export.

Bug Fixes

  • Fixed audio fade across segment and episode boundaries.
  • Fixed audio playback when a track started in a previous episode.
  • Fixed Add Branch hotkey, subtitles split view, timeline split view, and undo after pasting segments.
  • Fixed several crashes and stability issues across subtitles, audio, and asset handling.

Improvements

  • Faster, more reliable asset folder reorganization.
  • Main-thread execution redesign for smoother loading of large projects.
  • Subtitle Properties pane performance.
  • Redesigned audio level views and improved audio level coloring.
  • 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
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

The composition analyzer walks every path through the graph and reports reachability, runtime min/mean/max, and ending probabilities. Useful for festivals, scheduling, and finding the dead branches you didn't know you had.

  • Path enumeration with constraint solver
  • Ending probability distribution
  • Export results as JSON / 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
  • Coverage report per language
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
  • Asset pre-flight 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

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

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