JOS JOS Compositor

The app

Everyday conveniences

Start screen

When JOS starts with nothing to open, a start screen shows over the window:

The project follows your first footage

The first footage you bring into a project sets its frame range and format. Drop a plate on the node editor, import it with File > Import, or pick it in an empty Read's file browser: the project takes the plate's frame range (and a movie's frame rate) and its format (width, height and pixel aspect, with the format's name when it is a standard one). The status bar says so, for example "Project format set to 4096x2160 from Read1", and the project settings show "From Read1's footage" under the format. It is part of the same undo step as the Read, so Ctrl+Z takes both back.

A project with values JOS can't use

A project always opens. If it holds a value JOS can't use (a setting this version doesn't have, a choice it doesn't know, a connection to a node that isn't there, a node type it doesn't have), that value is left out, the rest opens, and a message lists everything left out. Saving then writes the project without them.

Names in any language

Node names, labels, notes and text fields can be written in any language and script, with spaces and punctuation: Éclairage clé, 背景 プレート, إضاءة 2. Right-to-left scripts are laid out correctly.

Properties: several nodes at once

Properties keeps the settings of the last nodes you selected, the newest on top (select one again and it comes back up). - The number at the top: how many it keeps (10 by default); past it, the oldest go. - Clear closes them all, except the pinned ones. - On each one's bar: fold (the triangle), pin (it stays through new selections, the number and Clear), and close. - Opening or closing settings in the node editor doesn't change Properties. S puts the project's settings on top.

Colour wheels. Click a colour row's swatch to open its panel under the row: a hue and saturation wheel, and beside it temp (blue to orange), tint (green to magenta) and v (value), each with its colour gradient under the number. Temperature and tint keep the colour's average brightness. Open as many as you like; a drag is a single undo step. The full colour picker window is in the row's right-click menu (Colour picker...).

A Grade's settings in Properties with the gain row's panel open under it: the gain values (r 1.12, g 1, b 0.86), the temp, tint and v sliders with their colour gradients, and the hue and saturation wheel beside them

Hardware test

Edit > Preferences > Performance > Test this computer... takes a few seconds to measure:

It then suggests settings, with the reason for each:

Press Use these settings to fill them in.

Shortcut on any menu item

Right-click any item in the menu bar's menus to give it a keyboard shortcut. Press the keys, then OK. The node editor's right-click menu works too: right-clicking Blur there sets the Node menu's Blur.

Every key, panel by panel: Keyboard shortcuts.

Curve ends and noise

In the curve editor, right-click and use these menus:

No expressions needed. The curve and its keys stay editable.

A track speeding up until it leaves the frame at frame 20. Before: the curve holds after its last key. After: Extrapolate carries it on.

The curve editor: a curve keyed on frames 1 to 20 that holds flat after frame 20

The same curve with Extrapolate after the last key: it keeps rising past frame 20 as it was going

Fill gap

The trackers' fill gaps, for any curve. Select an in key and an out key, on one curve or on several at once, then right-click and choose Fill gap. On each curve, every frame between its in and out keys gets a key from a curve fitted to the keys on both sides (up to five each side), so a move on an arc keeps its arc. Keys that were between them are replaced. One undo step.

The curve editor: a curve with missing frames and two bad keys between the selected in key (frame 10) and out key (frame 19)

After Fill gap: a key on every frame from 10 to 19, following the curve's arc

Curve editor extras

More

Timeline markers and sound scrubbing

Each sound (an AudioRead node, or a movie Read's sound) is drawn along the timeline as a wave in its node's colour, from the frame it starts at. A marker's flag carries the start of its note:

The timeline with two sounds: a red wave of regular hits from frame 5 to about frame 89, and a blue wave swelling from frame 70; three markers with their flags, Door slam at frame 12, Cut to close-up at frame 49 and Music in at frame 90

Wipe compare, zebra and matte overlay

Wipe compare: Viewer1, a warm grade of a sunset plate, on the left of the wipe line, and Viewer2, the plate as it is, on the right; the toolbar shows Wipe on and Viewer2 picked beside it

Zebra on: the sunset plate pushed brighter by a Grade, stripes over the whole sky where the values are over 1, none over the darker ground

Placing an image in the viewer

One green box places an image wherever a node moves one: the Transform, TransformMasked and Text nodes, a Match Move's or Merge Tracks' image, a CornerPinTracker's source and a PlanarTracker's insert. It sits on the image's frame as the node leaves it.

File browser

Every Open, Save and Import uses JOS's file browser:

Path Manager

File > Path Manager... lists every file the comp uses, found or missing.

Each action is one undo step. Windows-to-Linux path mappings are set separately, in Edit > Preferences > Projects > Path mappings.

Read-only without a licence

Without a valid licence, JOS still opens your comps, in read-only mode. The title bar says so.

Help > Licence... shows this computer's ID and loads a licence file (.joslic).

Opening Nuke scripts

File > Import File..., or dropping a Nuke script (.nk) or gizmo on the node editor, adds it to the comp; File > Open... opens a script as a new comp. The tree is rebuilt with JOS's nodes and the same settings.

When something doesn't come across exactly, a report says so. You can keep it open while you work:

OpenFX plugins

JOS loads OpenFX plugins (Resolve's, Natron's, other studios'), but only the ones you choose:

Colour spaces. Every OpenFX node has two settings of JOS's own under Colour: input colour space, the space the plugin works in (JOS converts its inputs from the working space to it before the plugin renders, and the result back), and output colour space, the space of the plugin's result when it differs (empty: the same as the input's). Empty input colour space: no conversion, the plugin gets the working space (scene-linear), as in Nuke. Many plugins are made for video (grades, looks, film emulations) and expect display-referred values such as Gamma 2.4 Encoded Rec.709: set it on them. These settings aren't written to Nuke scripts (Nuke has no such knobs).

A DaVinci Resolve grade (.drx). DaVinci Resolve installs an OpenFX plugin, DaVinci Resolve Renderer, in the standard folder. Tick it in Preferences > Plugins: its node applies a grade exported from Resolve (a still's .drx file, chosen in its settings; the file browser shows .drx files) to the image you connect. The quickest way: drag the .drx onto the node editor, or bring it in with File > Import File... (the file browser lists .drx files). It becomes a DaVinci Resolve Renderer node with the grade as its effectFilePath: where you dropped it (Import File: the middle of the node editor), or, with a node selected, right after it and connected to it, as Tab places a node. Several .drx files at once give one node each, side by side; each is one undo step. When the plugin is found but unticked in Preferences > Plugins, the drop ticks it and loads it at once (the status bar says so); when DaVinci Resolve isn't installed, a message says so and nothing is added. The plugin starts Resolve's engine in the background: for the first few seconds frames come through ungraded, then the grade shows. It needs DaVinci Resolve Studio installed on the computer.

Natron's plugins. Natron's free OpenFX plugins add about 500 effects: G'MIC (360), CImg (30), Shadertoy, and Natron's Misc set (108 of its 110 render; JOS has its own Premult and Unpremult). On Windows, Get Natron's plugins... in Preferences > Plugins downloads them, and the first start offers it once:

Rendering

A Write's Render button (or Render > Execute selected Write..., F7) renders in the background: JOS stays usable while the frames are written. You can view, play, move around the node graph and keep editing.

jos-render, the AI assistants' execute a Write and Python's jos.render render the same frames, but they wait for the render to finish before returning.

Load render output

A Write's Load render output button makes a Read for every enabled output with a file, side by side under the Write, in one undo step. Each output's header also has its own load button, for that output alone. Each Read stays linked to its output: press the button again and it updates those Reads where they are, instead of adding more. Frames and colour space follow the output's settings; a movie output loads as a movie Read.

WebP output

A Write's file type can be webp (or a file name ending in .webp). quality sets the size against the look; lossless keeps every 8-bit value exactly (larger files). Alpha is kept. Nuke doesn't write WebP: a Write set to it exports to Nuke with a warning.

.braw camera files

JOS reads .braw camera files (JOS Compositor compatible with Blackmagic Design Blackmagic RAW): drop a .braw clip on the node graph (or choose it in a Read's file browser) and it reads like a movie, frames 1 to the clip's last, at the clip's frame rate, with its timecode and camera metadata. The project takes the clip's frame rate when it is the first Read. The Blackmagic RAW decoder comes with the installer (in its braw folder), so nothing else needs installing.

The Read shows a .braw section for these clips, with Nuke's settings:

Colour. The clip is decoded in the colour space its gamut and gamma give, and the Read converts it to the working space from there: Blackmagic Design gamut with Blackmagic Design Film is BMDFilm WideGamut Gen5, with Linear Linear BMD WideGamut Gen5; DaVinci Wide Gamut with DaVinci Intermediate is DaVinci Intermediate WideGamut; ACES AP1 with Linear is ACEScg, with ACEScct ACEScct; Rec.2020 with the Rec.2100 gammas Rec.2100 HLG or PQ; Rec.709 with Linear the working space itself. Linear decodes are scene-linear and never clamped. Another combination (or Generation 4 colour science) reads the values as they are, and the node's warning says so: set the Read's colour space to say what they are. Setting the colour space yourself always overrides the automatic one.

Blackmagic RAW and Blackmagic Design are trademarks of Blackmagic Design Pty. Ltd.

Reporting a bug or an idea

Help > Report a Bug and Help > Make a Suggestion open a short form: a title, what happened (or the idea), and for bugs the steps and how bad it is. Send files it in JOS's public issue list for you, with your version, system and graphics card; no GitHub account is needed. An email, if you leave one, stays private. After a crash, JOS offers the same form with the crash log.

After a Nuke import, the import report has Send as bug (the report's text only) and Send as bug with Nuke file (recommended), which also sends the script. A missing gizmo isn't a bug: when the only problems are gizmos not found, OpenFX plugins not installed or nodes JOS leaves out, the buttons aren't there and the report says there is nothing to report. When there are real problems too, the buttons are there and the report sent lists only those. When the script used gizmos that JOS found and read from your gizmo folders (a gizmo used inside another gizmo too), the form has Include the gizmos this script uses, ticked; hover it to see which files and folders. The script and the gizmos are kept privately by Jungle of Sharks to reproduce the bug, never published (the public issue only says how many files came with it), so send only files you may share. Together they can be up to 8 MB compressed; when they're bigger, the script goes alone and the form says so.

Precomp from a Nuke script

A Precomp node can load a Nuke script (.nk) as well as a JOS project. The script is rebuilt with JOS's nodes and computed inside your comp.