Skip to content

Releases: amateurmenace/Speak

v1.0.0 — clean early, reconstruct late

Choose a tag to compare

@amateurmenace amateurmenace released this 17 Jul 18:59

Speak v1.0.0 — clean early, reconstruct late

First stable release. Speak is the film-reconstruction counterpart to Hush: Hush quiets the noise at the first node of a grade, Speak gives the image its voice at the last. Free, MIT-licensed, and it works in the free edition of DaVinci Resolve.

The matte story, once and plainly

In v0.3, Use Incoming Matte with no key wired quietly fell back to the picture's alpha. On the color page that alpha is opaque — which reads as "the whole frame is clean" — so grain landed at full strength everywhere and the Matte Floor was ignored. The silent fallback was the bug.

So the matte source is now an explicit choice, not a guess:

  • Off — grain is uniform, alpha passes through untouched.
  • Key input (blue wire) — grain is keyed on Hush's clean-confidence matte, wired straight into Speak's key input. No key connected? The matte is treated as absent and grain holds at the Matte Floor. Absence means absence — nothing substitutes silently.
  • Incoming alpha — the old in-band path (Fusion page), now opt-in by explicit choice only.

Consume-on-use stays and now covers every backend: any active matte source forces Speak's own output alpha opaque, so the matte is spent at its consumer and never rides downstream where a host unpremultiply could lift it into the picture. Old projects migrate without changing a pixel — the v0.3 toggle survives hidden and resolves exactly as it used to render until you make an explicit choice.

Guidance moved onto the image

  • A status strip (on by default) reports the active stages, the matte source and its live state — matte: key ✓ mean 0.31, or key not connected — grain at floor, or incoming alpha is opaque — is Hush's export on?.
  • View → Setup Guide draws the whole Hush→Speak recipe on the viewer itself: node boxes, the blue key wire, the three setups, the one rule.

Both are drawn by the render kernel, so the documentation ships inside the plugin and cannot drift from it.

Stock and format presets, both measured

  • Stock families beside Neutral — Long latitude (soft, ~1.15), Punchy print (~1.7), Chrome (~1.8) — family shapes from published sensitometry, gray-balanced, no commercial stock cloned or named. A gate pins each family's measured system gamma against the number the hint states.
  • Format presets — Super 35, 35mm 2-perf, Super 16 — set Grain Size and Halation Radius together from one physical model, because grain and halation are physical sizes on the film.

Everything else

Group 6 is now "Grain — where film lives"; grain is documented display-referred. The gate weave gained a render-vs-playback gate (scrubbed order equals sequential order, bit-for-bit). A phase-by-phase completion audit closed the last verification gap. The full visual guide (also attached as PDF) tells the Hush + Speak story with real renders from the reference implementation.

Bit-exact identity at default, alpha honoured, deterministic, real-time UHD via Metal — unchanged and still gated. 160-plus gates across CPU/Metal/OpenCL green; CUDA syntax-checked.

Install

  • macOS: Speak-1.0.0-macOS.pkg (signed, notarized — double-click) or Speak-1.0.0-macOS.zip (drag-install script).
  • Windows: Speak-1.0.0-Windows.zip (prebuilt, from CI).
  • Speak-1.0.0-macOS-ci-unsigned.zip is a CI dev build — it will not pass Gatekeeper and is not for production use.

Restart Resolve after installing; Speak appears under OpenFX → Hush → Speak Film.

v0.3.0 — the Hush handoff gets a real KEY input

Choose a tag to compare

@amateurmenace amateurmenace released this 17 Jul 17:18

v0.3.0 — the Hush handoff gets a real KEY input

The blue wire is now the sanctioned route for Hush's clean-confidence matte:

  • A "Matte" mask input — Resolve feeds it from the node's blue KEY
    input
    on the color page. Wire Hush's key output (node right-click → OFX
    Alpha → Enable) straight into it; the matte travels its own wire and never
    touches the RGB path, so nothing can unpremultiply the picture. Read
    robustly as max(luma, alpha), whichever way the host delivers the key.
  • Use Incoming Matte keys the grain on that wire when connected, and
    falls back to the incoming image alpha (Hush 3.7.2's in-band export, the
    Fusion-page mode) when it isn't.
  • Consume-on-use: whenever Use Incoming Matte is on, Speak forces its
    output alpha opaque — the matte is consumed at its consumer and never rides
    further downstream, where host alpha math would otherwise touch the grain.
    Off = uniform grain, alpha passes through untouched.
  • The tooltip now carries the full three-step color-page recipe.

Verified: output alpha opaque everywhere; grain ~290× stronger where the
matte is 1 vs 0; Metal/OpenCL parity green (SpeakParams re-pinned at 384B).

Asset note: -ci-unsigned is an ad-hoc-signed dev build (right-click →
Open past Gatekeeper). Signed + notarized installers follow from the signing
machine.

Speak v0.2.0 — first public release (early beta)

Choose a tag to compare

@amateurmenace amateurmenace released this 16 Jul 15:56

Early beta — the first public release of Speak, the free film-emulation plugin for the last node of your grade, and the finishing counterpart to Hush.

Everything below is gated by measurement and verified across CPU/Metal/OpenCL (CUDA is a syntax-checked port, like Hush's, pending NVIDIA hardware). v0.2 has not yet had a full field test inside Resolve — use it, enjoy it, file issues.

What's in the box

  • Film tone scale — closed-form Hurter–Driffield negative → printer lights → print, color-managed (DWG/DI, Rec.709, ACEScct, linear), with a live H&D scope that samples the exact curve the pixels use
  • Subtractive color — saturation in the density domain (highlight chroma self-compresses; hues bend toward the dyes) + inter-image coupler
  • Split toning — density offsets by tonal zone; mids neutral by construction
  • Halation — highlight scatter re-injected as exposure before the curve (a blue neon halates blue, never red), multi-scale power-law skirt, radius in % of frame height so proxy and full res match
  • Grain — density noise per RGB dye layer, shadow-loud (σ_D ∝ √D), grainless at paper white, boiling every frame
  • The Hush handoff — pair with Hush ≥ 3.7's Export Clean Matte to Alpha: grain lands where the denoiser cleaned deepest ("clean early, reconstruct late")
  • Isolated halation/grain views (never auto-gained), Status-M density parade, identity at default, alpha passthrough

Install (macOS)

Run the .pkg, or unzip and copy Speak.ofx.bundle to /Library/OFX/Plugins. If Resolve doesn't see it, delete ~/Library/Application Support/Blackmagic Design/DaVinci Resolve/OFXPluginCacheV2.xml and relaunch. Windows/Linux: build from source for now.

Also published on the shared downloads hub: control-z (tag speak-v0.2.0).

🤖 Generated with Claude Code