unplugged Download free
unplugged/User guide

Documentation

User guide

For Unplugged 2.1.0. Covers every control visible in the settings panel: what it does, its full range, and what the picture does when you move it.

Download 2.1.0

Playback keys

Media Player mode only for the transport keys — live capture has no position to seek or pause. The chrome keys (↑ / F1 / Esc) and N work in video processor mode as well. Every binding is an ordinary key inside the Unplugged window: nothing is captured while another app has focus, so Unplugged never interferes with anything else running on the machine.

KeyAction
Space / Enterpause / resume
← / →back / forward 10 s; Shift = 60 s. While paused, one frame per press
PgUp / PgDnprevious / next chapter
Home / Endstart / end of the title
0 – 9jump to 0 % – 90 % of the title
↑ or F1show / hide the full chrome
+ / − or ↓volume up / down
Mmute
NNLS on / off (same as the transport-bar button)
Sstop back to the library
Ctrl+Ssave the current frame as PNG (paused only)
Escclose settings → stop back to the library → recover the chrome, one layer per press
Alt+F4asks before closing

How to get started

Quick config

  1. Press F1 to open the live status and settings panels (or Up while something is playing); Esc closes them again.
  2. Convert to SDR — On.
  3. SDR display nits, Static nits (max) and Display black (nits) — set to your display's calibrated, measured values.
  4. The user trims — Exposure, Shadow detail, Contrast — live on the HDR tab.
  5. Leave the Zion tab settings on Auto where applicable.
  6. Calibration LUT files load from Output → Display calibration.
  7. Frame captures come from Output → Save frame as PNG (asks where), or Ctrl+S while the picture is paused, which writes straight to Pictures\Unplugged\<date>\frame_NNNN.png — one folder per day, numbered so captures never overwrite each other. The shortcut does nothing while playing: pause first so the frame is the one you are looking at.

Why that order — three stages, in sequence:

  1. Calibration settings first. The tone curve maps HDR into your display's measured range. A wrong white, black or peak means every downstream decision is made for a display you don't own. These numbers are set once per display and never used for taste. If you have a measured calibration LUT, load it at this stage.
  2. Zion grade second. With Mode: Auto and the Band controller On, the grade's scene model and closed loop do their work — and they correct what calibration measured, so they only make sense after stage 1.
  3. Trims last. Exposure, Shadow detail and Contrast are the final taste layer, and the only controls to touch day-to-day. Trim before calibrating and you tune against a moving baseline — every stage-1 or stage-2 change rewrites what "right" looks like.

How the panel works

  • Open the settings panel and pick a tab on the left icon rail: ▶ Playback · ⬡ Source · ◑ HDR · ✦ Zion · ▣ Output · ≡ System.
  • Each tab is split into sections. Sections are an accordion: click a header to open it; only one section is open at a time. A tab with a single section (Source, System) is always open.
  • Toggles flip ON/OFF with one click. Option rows (‹ value ›) cycle through their choices — click the right side to advance. Sliders are dragged on the bar; hover the bar and use the mouse wheel for one step of that row (1 on whole-number rows; the row's own increment on decimals — 0.01 on most, 0.05 on NLS Curve, 0.001 on Display black) — this is how you land on a measured value like 174 nits. With the panel focused, ←/→ move the row focus; ↑ stays the chrome toggle everywhere, including here.
  • Everything applies live to the running picture and is saved immediately — including Convert to SDR and the debug passthroughs, which reselect the converter/shader in place rather than rebuilding the pipeline.
  • Your settings are plain text at %LOCALAPPDATA%\Unplugged\s3_shell.ini. Every row writes itself there on first start, so you can back it up, or hand-edit a value a slider can't reach (like hdr.maxNits above 1000).
  • The Preset chip in the title strip keeps whole setups side by side — see Presets below.

Presets

A preset is a saved snapshot of the rows that describe the picture — tone curve and trims, the Zion grade, Output scalers, Geometry and non-linear stretch — plus the System switches that are not UI-only. It does not contain the Playback or Source tabs (see below). It is how you keep, say, a Projector setup and a Daylight TV setup side by side instead of re-tuning when the room or the display changes.

First start: the app creates five presets — Preset 1 … Preset 5 — and makes Preset 1 active. On an upgrade they are seeded from your existing settings, so nothing changes on screen; on a fresh install they start from the compiled defaults. Rename them as you like.

The active preset's name is shown in the title strip as Preset Name ▾. Click it to open the preset card.

In the cardWhat it does
The listDefault first, then your presets alphabetically. Click a preset to switch to it — it applies immediately, and the card stays open so you can click through several to compare them on the same frame.
NewAsks for a name (pre-filled Preset 1, Preset 2…) and creates a preset that starts as a copy of the one you are using — tune once, name it, and it is yours from then on.
RenameSame settings, new name.
DeleteAsks first. Deleting the preset you are on drops you back to Default.
Close (×) / click outsideCloses the card. Nothing is lost: custom presets save themselves (below).

There is no Apply button: presets save themselves, so clicking one is the whole action, and switching while the card stays open is how you compare two setups against the same paused frame.

Default is read-only — and custom presets save themselves

  • Default is locked. Trying to change any picture row while it is active is refused — the control does not move — and a warning appears in the centre of the screen, "Default is read-only — Default is the locked baseline: picture changes are refused while it is active. Switch to a preset, or create one, to change anything.", which stays until you press OK (Enter or Esc also dismiss it). The N key behaves the same way. That is deliberate: Default is the compiled baseline, so what you see there is always repeatable. To start working, switch to a preset or create one with New — a new preset starts as a copy of the current values, so nothing is lost.
  • Exception — Playback and Source. The Playback and Source tabs are never locked and never part of a preset. Choosing the audio mode, an input device, rescanning ports or running first-time setup is a property of the machine and the session, not of a look — so it stays available on Default, and a preset never drags the input along with it.
  • Exception — the display rows. SDR display nits, Static nits (max), Display black (nits), Convert to SDR and Output gamut describe the screen you calibrated, not a look, so they are never part of a preset. They can be changed at any time — on Default or on any preset — the change applies to every preset, and it neither marks the preset dirty nor shows the popup.
  • Any preset of your own is live. There is no Save button: as soon as you change a row, the preset file is rewritten (about a third of a second later, so a slider drag lands once). The * next to the name only means a write is still pending.
  • Your presets live at %LOCALAPPDATA%\Unplugged\presets\<name>.ini — one plain text file each, alongside the base s3_shell.ini.

What a preset does not contain

Five rows describe the display you calibrated, not your taste, so they stay with the machine and switching presets never changes them — and, as above, they are always editable, even on Default:

SDR display nits · Static nits (max) · Display black (nits) · Convert to SDR · Output gamut

Also not part of a preset: the Playback and Source tabs (audio mode, input device, setup), the two UI-only rows on the System tab (context banner, auto-next), and the playback position. Those belong to the app and the session, not to a look. The other System switches (automatic update check, tray icon) are ordinary rows and do travel with a preset.

One behaviour worth knowing: the preset you last used is re-applied when the next picture comes up (the first play or capture after launch), after the base settings file has loaded. So a preset's value wins over a hand-edit you made in s3_shell.ini — change the row while that preset is active (it saves itself) or switch to Default first.


Playback (media files)

The Playback tab is dimmed and unreachable during live capture — its controls address the file-playing pipeline, which capture never builds.

Audio

SettingChoicesDefaultWhat it does
Trackevery audio stream in the filefirst trackPicks the language/format. Names come from the file itself: "Deutsch TrueHD Atmos 7.1".
HD audioBitstream / PCMBitstreamBitstream: the compressed audio (Dolby, DTS, TrueHD, Atmos) is passed untouched to your receiver, which decodes it and shows its logo. PCM: the PC decodes it first — use this if the receiver can't decode the format, or to hear everything through TV speakers. Bitstream is the shipped default: an AVR decodes its own formats better than a PC downmix.
Delay−500…+500 ms0Intended for lip-sync correction. In this version the slider saves but nothing reacts to it yet — it has no effect.

Subtitles

SettingChoicesDefaultWhat it does
TrackOff / every subtitle streamOffPicks the subtitle track. Names keep the format in brackets — (SRT) etc. — because only text subtitles can be styled; bitmap ones (PGS, VobSub) are images and always look how the disc made them.

Source (live capture)

One row per physical DeckLink input, plus three actions.

RowShowsWhat it does
Port rowname + badgeClick to switch the player to that HDMI input. The active port gets ●. Badges: 🔒 HDR PQ = an HDR signal is locked and being carried, 🔒 Dolby Vision = a Dolby Vision source (the card cannot flag DV, so this is read from its signature — BT.2020 colours with an SDR range flag, and confirmed by the picture being a PQ base layer without static mastering metadata), 🔒 HDR HLG = HLG, ○ no signal = nothing is plugged in or the source is off, — unknown = signal present but not identified yet.
⟳ Rescan inputs—Re-asks the card what is plugged in. Use after connecting a new device.
✎ Rename inputs…—Names your ports ("Console", "Bluray") — the name is yours only; the underlying input is unchanged.
▶ First-time setup… (restarts app)—Restarts the app into the setup wizard. Stops any playback.

HDR tab

Everything here shapes how an HDR signal arrives on your display, plus a few post-processing tools. SDR display nits and the Display Target numbers are set once — they describe your display, not your taste — and day to day most people only touch Tone curve, Exposure and the taste sliders.

Tone Mapping

SettingChoices / rangeDefaultWhat it does
Convert to SDROn / OffOnOn: HDR video is tone-mapped into the normal (SDR) range this app renders. Off: the HDR signal is passed on for your TV itself to map — only sensible with an HDR-capable TV in HDR mode. When Off, everything else in this tab and the Zion tab stops mattering, because this app is no longer doing the picture.
SDR display nits25…40080The measured SDR white luminance of your display — a calibration number like Static nits (max) below, never a taste knob. Enter your measured value (a TV in a bright room typically 100–200; a projector in the dark 40–80) and leave it there. What a wrong number does: declared below your measurement, the picture runs bright and the highlights pay — the shoulder clips sooner and sky detail goes first; declared above it, films render dark with headroom unused. Brightness without lying about your panel is what Exposure is for.
Tone curveUnplugged / GT7 AdaptUnpluggedHow HDR's brightness range is squeezed into your display's. Unplugged — the house curve, and the default for every HDR source, including Dolby Vision. Dolby Vision is recognised as its own case, and the Zion models grade it. GT7 Adapt — the house curve for HDR10/HLG, which blends the title's declared peak with what each scene measures. The taste trims below work on both; switching curve changes the Curve Settings dials shown.
Exposure−5…+50A brightness dial that works before the tone curve, in thirds of a stop: ±1 = ±⅓ stop, ±3 = ±1 stop. Because it's pre-curve, the shoulder absorbs it — brightness without spending your highlights. The safest lever when a specific film looks dark or washed.
Shadow detail−5…+50How much texture survives in the dark end. Positive spreads dark values apart — you see fabric weave, night-scene layout, object edges — while true black stays black (it is detail, not a brightness lift). Negative compresses blacks together, for a denser, more "filmic" shadow that hides crushed masters. Never greys the image.
Contrast−5…+50A symmetric S-curve around mid grey: black, mid grey and white stay exactly where they are, everything between moves away from (positive) or toward (negative) them. Positive = more "pop"; negative = flatter, softer. If you want one dial to taste day-to-day, this is the safe one.
Output gamutBT.709 (standard) / BT.2020 (wide)BT.709 (standard)The colour space delivered. 709 is what SDR (and effectively every TV's SDR mode) expects. BT.2020 keeps wide colour only for a display actually in HDR/wide-gamut mode — on a normal SDR pipeline it makes colours wrong. Leave on 709 unless you know exactly why you changed it.
Gamut capacity (709)0.20…1.001.00Active only with Output gamut = 709. Colours can look garish not when they exceed the gamut but when they sit exactly on its edge — the maximum for their lightness. This lands each colour at a fraction of its own distance to the edge: 1.00 = off; 0.55 is how much breathing room measured reference software leaves a deep-blue sky. Pale colours have long distances and stay untouched at any setting, so this can never "desaturate the whole film" — only edge-crowded blues/reds relax.
Highlight desat0…10A companion to the row above for the Unplugged curve: at higher brightness levels, pull saturation toward the level's own neutral point (hue preserved). Measured against reference renderers, 0.50 matches; 0 is off. Note: it runs inside the grade, so it needs Enable ML grade (Zion tab) on.

Exposure, Shadow detail and Contrast are taste trims — they work the same on both tone curves. The Curve Settings section is the opposite: every row in it belongs to the GT7 Adapt curve, so the rail shows the section only while that curve is selected. On Unplugged the trims above are the whole adjustment surface, and no Curve Settings section appears at all.

Curve Settings (appears only for GT7 Adapt)

SettingRangeDefaultWhat it does
Title peak (nits)100…40001000The content peak the curve squeezes from. Leave at 1000 unless you know the disc's MaxCLL.
Auto exposureOn / OffOffSolves the working peak from each scene's measured average instead of guessing (updates at scene cuts, never mid-shot). Use when a title looks consistently a third of a stop off.
Exposure target0.20…0.700.42With Auto exposure On: where the scene average should land (0 = black, 1 = white).
GT7 blend (ch<->UCS)0…10.6How much highlights keep their source colour: 0 = curve re-derives it, 1 = source colour returned intact.
GT7 chroma fade from0.3…2.00.98The level where that colour blend starts. Default leaves it a highlights-only move.
GT7 adapt to scene peak0…10.25How far the peak moves from Title peak toward the measured scene peak. Raise for sources without usable metadata (HDMI consoles, streaming apps).
GT7 desaturation0…10Colour pulled out of highlights only, in proportion to how hard they were compressed. Mid-tones and skin are untouched.
GT7 shoulder reach0.02…0.900.25Highlight headroom: lower = longer shoulder, more brightness band survives before detail merges to white; higher punches mid-highs but clips sooner. The first dial to turn down if explosions clip.
GT7 debug viewOff + 4 greyscale modesOffDiagnostic overlays of the curve's internals. Leave Off for watching.

Display Target

These describe your TV/projector, not the content. Set once per display.

SettingRangeDefaultWhat it does
Windows HDRDo not change / On (fullscreen) / On / On/off (fullscreen) / On/offDo not changeWhether this app toggles Windows' own HDR mode for the display when playing. Leave Do not change if you set HDR/SDR mode in Windows yourself; the others switch it for you at playback start (the "on/off" pair restores your previous state afterwards).
Static nits (max)10…10001000Your display's measured peak white in SDR mode. This is the destination the tone curve maps to — get it wrong and everything is wrong. Measured 174 on a projector? Type nothing: drag near it, then mouse-wheel over the bar, 1 nit per click. A display brighter than 1000 nits: edit hdr.maxNits in the INI directly (the engine accepts up to 10000).
Display black (nits)0…20Your display's measured black level. At 0 the curve assumes a perfect black and spends shadow detail on range you can't actually see. A projector measuring 0.3: enter 0.3 — the destination range starts there and the shadow band is redistributed into what the panel shows. For OLED (true black), 0 is right.
Subtitle/OSD brightness0…1000How bright subtitle and on-screen text renders against the finished picture. 0 = normal. Raise if text gets lost in bright content — it lifts the text layer only, never the film.

Post-FX

These run after tone mapping and grading, on the final image — they behave identically on SDR, HDR10 and Dolby Vision sources.

SettingChoices / rangeDefaultWhat it does
Adaptive sharpenOn / OffOffEdge-adaptive detail: measures each edge against its local neighbourhood and limits itself, so it adds detail without white halos. Soft SD/HD sources benefit; clean 4K rarely needs it.
Sharpen strength0.3…1.51.0How much of that adaptive detail to add. 0.3 is a whisper, 1.0 strong and still safe, ~1.2+ starts showing its hand on film grain.
DebandOn / OffOnRemoves the stepped bands that appear in slow gradients (sky fades, dark walls) — the banding the 10→8-bit conversion creates — by flattening each band edge then covering the work with fine grain. On by default; only turn it off if you would rather keep the grain exactly as encoded.
Deband threshold0…25632How small a gradient step gets treated; pushing it high starts eating real picture detail.
Deband range1…6416How wide an area is blended per band.
Deband iterations1…41Processing passes; 2 is usually the honest maximum.
Deband grain0…12824The noise that hides the blending — 0 exposes it as mush; matching real film grain (~20–30) is the target.

Zion tab — the grade

The Zion pipeline models your display and content and corrects both. One switch owns the whole tab, and there's a one-click undo for a session gone wrong.

SettingDefaultWhat it does
Enable ML gradeOnThe master switch for everything on this tab. Off = the render is pure tone curve + post-FX; every section below becomes decorative. Turning it on while Mode is Off also sets Mode to Auto — the switch is the master, and it says so in the row above it.
⟲ Reset grade to defaults—Asks, then restores every row on this tab to its factory value. The quickest way out of a grade you can't diagnose.

Tone Curve

SettingRangeDefaultWhat it does
Band controllerOn/OffOnThe closed loop. Instead of applying shadow/gamma/highlight corrections blindly, it solves all three together every frame so the delivered picture lands on fixed house levels (deep shadow, mid, and highlight anchors). While it's On, it owns the legacy Shadow slider and the manual Gamma top-up — those stand down because applying them on top would double the move. Off returns you to the older, open-loop path (the sliders below act directly again).
ModeAuto / Manual / OffAutoAuto: the scene model judges shadow toe, gamma and highlight per scene and applies the corrections itself. Manual: the model's per-scene gamma freezes and the sliders become the sole authority — this is the starting point for manual tuning. Off: the tone-curve leg of the grade does nothing; micro-contrast and the rest still run.
Shadow0…0.400A legacy multiplicative toe on the dark end. Effective in Manual mode with the Band controller Off (otherwise the controller's own solution overrides it — see its row). Positive opens blacks progressively; past ~0.15 you will start seeing it everywhere, because a toe lift is global, not local.
Shadow dehaze0…10Auto-mode correction: the model sometimes lifts shadows for safety, which greys dark scenes (a "haze"). This scales down that lift — 1 fully removes the model's shadow boost. It only acts on what the model did, so it cannot grey or crush a scene on its own. If dark Auto-mode scenes look foggy, this is the dial.
Gamma0.5…1.51.0Manual-mode mid-range brightness. Below 1 lighter, above 1 darker, applied around fixed black/white anchors. Ignored in Auto (the model writes it). Not a "brightness" knob for whole titles — that's Exposure or SDR nits.
Gamma top-up−0.50…+0.500A signed offset on top of the model's own Auto answer — a taste trim that survives scene changes. Positive brightens mids everywhere the model said "normal"; highlights stay put. With the Band controller On, the controller owns this band too (see its row), so test it with the controller Off.
Mid-tone target0…0.950The grade's delivery-referenced brightness dial: where (0=black, 1=white) you want the scene average to end up on your screen. The renderer computes what the curve is about to deliver and solves the gamma that lands it — so unlike every earlier brightness route, moving SDR display nits afterwards doesn't drag your brightness off this target. 0 = off; 0.42-ish matches a conventional bright-scene average. This is the dial that lets you make the house look brighter without costing you clouds.
Highlight−0.3…+0.40Gain applied to the bright band above the curve's working range — the level of specular detail, sunlit walls, whites. Positive pushes them up (airier), negative pulls them back. Manual-mode centric.
Highlight shoulder−0.2…+0.20Auto-mode correction, the mirror of Shadow dehaze: a signed offset on the model's highlight roll-off. Negative softens the shoulder's grip (bright areas keep separation, more "film"); positive tightens it (punchier but merges faster toward clip).

Chroma

Colour saturation shaping — how vivid a colour gets, with a brake for skin. (Note: the "Mode" row on this section currently saves but nothing acts on it; the Default behaviour is what always runs.)

SettingRangeDefaultWhat it does
Normal1.0…1.31.08Chroma gain for ordinary-saturation colours: skin, foliage, interiors. The small default boost is the house vividness; 1.0 is pass-through.
Fire1.0…1.31.15Chroma gain for the hottest band — flames, neon, emissives — where extra saturation reads as heat rather than error.
Knee0.1…0.90.45Where "ordinary" stops and "fire" begins, as a saturation level. Lower classifies more of the image into the hot band.
Skin0.5…1.00.95The skin brake: what fraction of the boost faces are allowed. 1.0 = faces get the full push, 0.5 = half. Guards against actors going lobster-orange.

Micro Contrast

Local clarity — texture inside objects, not edge sharpening. Runs on its own enable switch even if the tone-curve Mode is Off.

SettingRangeDefaultWhat it does
EnableOn/OffOnSwitches the micro-contrast engine.
Strength0…0.50.15How much local contrast to recover. The effect is texture-gated: flat gradients are left alone, real structure gets pushed. Past ~0.3 surfaces mastering noise and grain noise as "detail".
Zone lo0…0.60.15The brightness floor where the engine works at all. Everything below (night scenes' true blacks) is skipped — low-luma is where local contrast invents dirt. Raise it if dark scenes get mottled.
Ratio cap1.0…2.01.4The halo limiter: the maximum contrast ratio one pixel's neighbourhood may be pushed to. Lower = gentler, no rims; higher = stronger effect, but >1.7 on hard edges is where halos come from.
Skin protect0…10.65Faces get only this fraction of the effect — the difference between "pores" and "stubble texture on a model".

Debug

Diagnostics for finding out why the picture is what it is. Leave every row here Off for normal viewing.

SettingWhat it does
HDR passthroughBypasses this app's entire picture pipeline and hands the raw signal to the display — the "is it the renderer or the TV" test. Applies immediately (it swaps the shader the render loop binds, with no pipeline rebuild). On a non-HDR display you'll see flat/green-grey nonsense; that's expected, not broken. Mutually exclusive with the next row by design.
Tone curve passthroughSkips the Zion ML grade and nothing else: the picture is what the tone curve alone delivers — HDR converted to SDR by the selected curve, no per-scene model, no grade. It applies live. This is the A/B for the grade: if the picture is right here and wrong with the grade on, the grade is the suspect; if it is already wrong here, the tone curve or the display side is. Also auto-switches HDR passthrough off.
Frame logWrites a verbose per-frame telemetry line to the engine log (%USERPROFILE%\.unplugged\logs\engine.log) — what each stage computed, frame by frame. The thing to turn on when asking "why did the picture change there".
MC heatReplaces the picture with a greyscale map of where the micro-contrast engine is working, so a visible seam can be matched to a mask edge.

Black Bars

SettingDefaultWhat it does
Repaint barsOffOverwrites the letterbox mattes with true black every frame. For sources whose "black" bars carry lifted noise or crawl; clean masters don't need it and it's extra GPU work.
Highlight barsOffTints the detected bar regions so you can see what the app thinks is black bar — the way to verify detection before trusting Repaint.

Sky Seg

Experimental, off by default: the ML segmentor (ONNX/YOLO) carves the frame into sky regions so their highlight treatment can differ from the rest. If you did not go looking for this, leave it off.

SettingChoices / rangeDefaultWhat it does
EnableOn / OffOffSwitches the sky segmentor on. Off leaves the picture untouched.
Strength0…10.6How much the sky region's special treatment is applied there.
Mask overlayOn / OffOffDiagnostic: paints the detected sky mask so you can see what it locked onto.

Person Skin

Experimental, off by default: segments people so faces can be protected while the rest of the frame is graded.

SettingChoices / rangeDefaultWhat it does
EnableOn / OffOffSwitches the person segmentor on.
Strength0…11.0How fully the detected region is treated as skin.
Mask overlayOn / OffOffDiagnostic: paints the detected people mask.
Tone preserve0…10How much of a face's original tone survives the grade — raise it to pull skin back toward the source while the rest of the frame stays graded.

Output tab

Video Processing

SettingChoices / rangeDefaultWhat it does
Super ResolutionOn/OffOffThe renderer's upscaler for small sources: SD/HD material on a 4K panel gets a genuine reconstruction pass instead of plain interpolation. Turning it On also enables the two plumbing switches it needs (behind the scenes, no action from you). Know its limits: it doesn't engage for 10-bit or HDR sources, needs RTX-class NVIDIA or Intel graphics, and a 4K source on a 4K display has nothing to upscale. Windows' and the NVIDIA panel's own settings are outside this app's reach.
Chroma upsamplingCatmullRom / KrigBilateralKrigBilateralHow colour from 4:2:0 video (almost all of it) is expanded to full resolution. CatmullRom is the cheaper, always-safe filter; KrigBilateral reconstructs chroma edges from the luma (best on fine colour detail like red subtitle text) at noticeably more GPU cost.
UpscalingLanczos3 / Jinc2Jinc2The enlargement filter for smaller-than-display sources. Jinc2 is the sharper reconstruction (the default, best for SD/HD onto 4K); Lanczos3 is a touch calmer, with less ringing on hard edges and grain. On noisy material, sharper is not better.
DownscalingLanczos / BicubicSharpLanczosShrinking a source to fit. Lanczos keeps detail on fine patterns; BicubicSharp is a touch softer and calmer on grain. Matters most for 4K→1080p panels.

Geometry

SettingChoices / rangeDefaultWhat it does
Fit modeSource / Fixed aspect / Fill screenSourceHow the picture is fitted to the window. Source respects the video's own aspect; Fixed aspect uses the Fixed aspect value; Fill screen stretches to the window and can remove black bars.
Fixed aspect1.00 – 3.001.78The display aspect used in Fixed aspect mode. 1.78 = 16:9, 2.39 = scope. For a 2.35 screen use the screen's measured ratio.
Zoom50 – 200 %100 %Scales the fitted picture. Above 100 % crops the overflow; use with Pan. 100 % is the neutral fit.
Pan X-100 – 100 %0 %Moves a zoomed picture horizontally across its overflow. Has no effect while the picture fits inside the window.
Pan Y-100 – 100 %0 %Moves a zoomed picture vertically across its overflow. Has no effect while the picture fits inside the window.

Non-linear stretch

A separate section in the rail, below Geometry. Everything here applies live, including on a paused frame — the geometry moves with the sliders and with N. That is deliberate: it is the only practical way to judge the sweet spot.

SettingChoices / rangeDefaultWhat it does
Enable NLSOn/OffOffNon-linear stretch: expands the active picture toward the screen edges while keeping the central band close to its original geometry. Intended for scope screens, projectors and anamorphic setups. Off by default; switching it on with the stock settings fills a letterboxed scope title immediately — the rows below are for tuning that result, not for making it happen.
Bars removed0 – 100 %100 %How much of the letterbox the picture grows into. 0 shows it at its own aspect (bars untouched, no distortion); 100 fills the screen. The correction the fill costs scales with it — taking half the bars costs half the distortion — so this is the "how many of the black bars do I get rid of" dial. Whatever is left can be zoomed away, which spends side picture instead of shape.
AxisHorizontal / Vertical / SplitHorizontalWhich axis carries the aspect correction. Horizontal keeps the height untouched (sy = 1.000), so heads and legs never stretch — this is the default. Vertical pays the correction on height and visibly elongates faces; it exists for anamorphic setups only. Split shares the correction between both axes; it always introduces a vertical component (Split 25 measured +26 % vertical on a 2.39 title and was rejected in the field test on 2026-11-04), so it is an opt-in, not a default.
Strength0 – 100 %100 %How much of the correction the warp actually applies. At 0 the fill still happens but nothing is corrected — the picture is stretched uniformly, which is the worst-case look you are tuning away from; at 100 the whole correction is redistributed. Use it to find the point where the shape starts to hurt.
Centre protection0 – 90 %45 %The fraction of the picture kept at correct geometry, measured from the middle out. Everything inside it is a uniform zoom — no distortion at all — and the whole correction is squeezed into the rim beyond it. Low values (35–45) spread the distortion gradually, which is gentler on the very edge but starts to bend faces around 72 % of the way out. High values (80–90) keep the middle, including faces near the sides, perfectly clean and dump everything into a narrow rim: extreme at the edge, but it is the part you would crop anyway. A stretching axis cannot be protected as far as a squeezing one (the map would run out of range), so the effective cap is lower when Axis puts the correction on the vertical side.
Curve1.0 – 2.91.2Distribution of the stretch across the outer band. Higher values push more distortion toward the edges — the upper half of the range is what makes a very high Centre protection read as "clean middle, squeezed rim".
Split0 – 100 %50 %Horizontal's share of the correction when Axis = Split. 100 % is the horizontal-only pass; 0 % is vertical-only; 50 % is even. Only active when Axis = Split and greyed otherwise. Use with care: any Split value puts correction on height, and heads/legs visibly elongate even when the measured centre proportions are unchanged. Horizontal is the default for that reason.
Max distortion100 – 200 %140 %Per-axis limit on the aspect correction, in both directions (e.g. 110 % = at most 10 % on each axis). Whatever the warp refuses to take is covered by cropping the axis that has slack — the sides for a picture still too wide, the top/bottom for one still too narrow — so this is the dial between "distort a little and crop a little" and "distort more and crop less". At 100 % it is the Crop baseline (no warp at all); above it, the warp takes the correction up to the cap and the remainder is cropped. Fill mode = Stretch ignores it, because Stretch never crops. The INFO panel's GEOM CROP row shows how much the cap pushed into the crop.
Post NLS X-Crop0 – 45 %0 %Percentage of the screen width cut after the NLS pass (10 % removes 5 % from each side), with the remainder stretched to fill. It crops the whole frame including the black bars first: use it to consume bars left by a partial Bars removed; only once the crop passes the bar width does it start cutting picture.
Post NLS Y-Crop0 – 45 %0 %Same for the screen height. This is the "remove the remaining letterbox" dial: with Bars removed below 100, raise Y-Crop until the top/bottom bars disappear, then stop; raising it further cuts into the picture (the first thing to go is heads). On a scope screen the same logic applies to X-Crop and pillarbox bars.
Fill modeAuto / Stretch / Crop / OffAutoHow the picture is fitted. Stretch warps the outer band (keeps everything, distorts the sides; fine while small) and never crops, so it never caps. Crop is the zero-distortion baseline: it grows with Bars removed and covers with geometry, so at 0 % it is the plain fit rect and at 100 % it fills by cropping. Auto does the same but spends Max distortion on warping before cropping. Off letterboxes at the picture's own aspect.
Lock bandOn/OffOffKeeps the black band found at the start of a title for the whole title. Bars are a property of the title, but some titles switch aspect mid-film (IMAX sequences); with this On the picture keeps one shape instead of changing size. Off lets the detector re-find the band after it holds for a few seconds.

Nothing asks for your screen size. The app is full-screen, so the window it covers is the screen: every aspect decision (fill, crop, NLS) reads that surface. Press Info to see it as the DISPLAY row — resolution and aspect, e.g. 3840 × 2160 · 1.78:1. Physical size (a 185" screen, a projector, an anamorphic lens) does not enter the maths; only the aspect of that surface does. With the rail up, the picture is the same screen-aspect composition scaled into the visible area, so settings can be judged without waiting for the chrome to hide.

While tuning, the Info panel's Warp H / V, Geom crop and Post-NLS X/Y-Crop rows show what the current settings are actually costing, so "why does it look like that" has a number next to it.

Output (statistics & frame capture)

SettingChoices / rangeDefaultWhat it does
Show statisticsOn/OffOffThe renderer's on-screen performance overlay — frame render intervals, dropped frames, GPU figures. What to turn on when asking "is it smooth".
Save frame as PNGbutton—Captures the exact frame the renderer drew (not a screen grab: no overlays, no desktop compositing, no colour shift from screen capture) and lets you file it as lossless PNG. The right tool for showing someone a picture question.

Display Calibration

SettingChoices / rangeDefaultWhat it does
Calibration LUTfile pickerunsetLoads a display-calibration .cube (e.g. from DisplayCAL) applied as the final pass — it shapes what your panel actually emits, separate from tone mapping which shapes the signal. Clearing (mode → Off) frees the texture.
LUT modeOff / Gamma only / Greyscale / Full 3DFull 3DHow much of the loaded cube to honour. Gamma only: the neutral lightness curve (for a display whose colour balance is already set). Greyscale: per-channel tone and balance, no channel mixing. Full 3D: everything, including the gamut remap — the complete calibration, with the caveat that 3D cubes gently fade deep saturated colours.

System tab

App

SettingChoicesDefaultWhat it does
Check for updates automaticallyOn / OffOnAsks GitHub for the latest release once a day, in the background. When something newer exists, a card appears at start with the release notes and a link to the download page. Off stops the automatic check; Check for updates now still works.
Check for updates nowbutton—Runs the check immediately and always reports: a newer version opens its card, otherwise a short "you are on the latest version" message. Also useful after installing on a machine that has been offline.
Report a problembutton—The support action for a picture or playback problem. Not wired in this build — it only writes a line to the log.
Show context banner for settingsOn / OffOnDraws the short explanation banner above the rows while you move around the panel. Off gives more rows on screen once you know the controls.
Play next item automaticallyOn / OffOnWhen a title ends, offers the next episode/film in the library after a five-second countdown; Esc (or the card's Cancel) stops it. Off returns to the library at the end of the title.
Show IMDb ratingsOn / OffOnDraws the IMDb rating chip on posters and in detail rows. Ratings come from OMDb and can be incomplete or N/A for new or obscure titles — the badge says IMDb N/A when OMDb has no rating yet; it does not mean the title is unrated on IMDb. Off hides all rating chips for a cleaner poster wall.
⟲ Reset renderer settingsbutton—Deletes what the renderer stored in the registry (it keeps state of its own, and a previous machine's leftovers can ride along in a copy of the app). Your rail settings are re-applied immediately — this undoes registry state, not your configuration.
▶ First-time setup… (restarts app)button—Restarts into the setup wizard (stops playback).

Updates. The check reads the project's public GitHub release, compares it with the version shown in the title strip, and does nothing else: there is no silent download and the app never installs anything behind your back. When a newer version exists, a card opens when the app starts, shows the release notes and offers Open download page (your browser) or Later — Enter opens the page, Esc is Later. Choosing Later remembers that version and stops the automatic prompt until the next one; Check for updates now always asks. Offline, blocked or no releases yet: the check fails silently unless you asked for it. The only thing sent is an ordinary HTTPS request to GitHub — no identifiers, no telemetry.


Recipes — start here

"Everything looks dim." Check SDR display nits holds your display's measured white — a number above the measurement is exactly what renders every film dark, and the fix is the honest number, not a darker one. Still dim at the measured value → Exposure (+1 = one-third stop; pre-curve, the shoulder absorbs it). A specific film still off on GT7 Adapt → Auto exposure On.

"Bright scenes hurt / whites glare." Pull Exposure down; GT7 Adapt users whose explosions lose detail → GT7 shoulder reach down (0.25→0.15). Don't reach for SDR display nits — that row carries your display's measured white and stays there.

"Skies are neon / garish blues." Gamut capacity (709) down to ~0.6; GT7 curves: GT7 desaturation 0.3–0.6. Unplugged curve with grade On: Highlight desat ~0.5.

"Blacks are grey / no depth." Check Display black (nits) matches a measured value (a 0.3-black projector told "0 perfect" wastes shadow range). Auto mode: Shadow dehaze up (it strips the model's safety lift). Too much texture in shadows → Shadow detail down.

"The image feels flat." Contrast +1…+2, or Micro Contrast Strength 0.15→0.25. Both at once is usually one too many.

"Faces look waxy/oily." Every texture enhancer is a suspect: Micro contrast (Strength down, Skin protect up), Adaptive sharpen (off or strength down), Shadow detail down.

"Stepped bands in dark gradients." Deband On, defaults are tuned; only raise Threshold if bands persist, and check Grain isn't at 0.

"DVD/Blu-ray on my 4K TV looks soft." Super Resolution On (RTX GPU, SDR content). Upscaling to Jinc2 for a crisper baseline — or leave Lanczos3 and let SR do the work.

New projector/TV? Measure it (or use published numbers): SDR display nits from your white patch, Static nits (max) with the wheel, Display black (nits) from the black patch, load a calibration LUT if you have one — then leave everything else at defaults for a week before tuning taste controls.


Current limitations

  • Playback → Delay (audio lip-sync) saves but does nothing yet.
  • Zion → Chroma → Mode saves but does nothing yet; the Default behaviour always runs.
  • System → Report a problem saves a log line only; no report is sent.
  • Super Resolution is not available for HDR or 10-bit sources; it is a SDR-path feature.
  • With strong non-linear stretch, fine text can look slightly soft — both axes are being resampled when Axis = Split. Lower Strength or Centre protection if it bothers you.
  • Disc images (ISO) and BDMV folder playback are not supported; rip to a file.
  • Subtitle styling (font, size, colour) is not in this panel; only track selection is.

This guide ships with Unplugged 2.1.0. View the Markdown source on GitHub.

Back to top ↑