Skip to content

Releases: amateurmenace/control-z

Hush v3.7.0 — the handoff: clean matte to alpha

Choose a tag to compare

@amateurmenace amateurmenace released this 16 Jul 16:03

The handoff release. Hush can now hand its clean-confidence matte down the node chain — which makes the "clean early, reconstruct late" pairing with Speak (released today, early beta) a working chain instead of a diagram.

New

  • Export Clean Matte to Alpha (Output group, default off). In the Result view, writes clamp((effN − 1) / 6, 0, 1) — the exact calibration of the Matte: Clean Confidence view — into the output alpha, leaving RGB untouched. Downstream, Speak's grain keys on it: full grain where the temporal stage averaged deep (texture was flattened), less where the gate protected motion (real noise survives). Replaces the incoming alpha while on — the hint says so. Off by default, so every existing project renders bit-identically.
  • The inspection views keep the true alpha; only the Result view exports.

Meet Speak

Speak v0.2.0 — film tone scale, subtractive color, split toning, halation and grain, built from original color science with every curve on screen — is now its own plugin: amateurmenace/Speak. Set Hush's Export Clean Matte to Alpha on and Speak's Use Incoming Matte on, and grain lands exactly where Hush cleaned.

Shared downloads hub: control-z (hush-v3.7.0).

🤖 Generated with Claude Code

Hush v3.6.0 — texture reconstruction

Choose a tag to compare

@amateurmenace amateurmenace released this 16 Jul 12:46

Hush — the noise-reduction half of the toolkit. Source & issues: amateurmenace/Hush-OpenNR.

Downloads: macOS .pkg (installer) or .zip; Windows .zip (OpenCL, x64). See the README for install steps.


The texture-reconstruction release. A real-footage audit found the denoising
core is already strong — so this release builds the other half: after the
noise is gone, put the image's optical character back. There is now a stage
that ADDS high-frequency energy (nothing before this could), grain that is
matched to the noise that was removed instead of a flat mid-gray dither, a
texture path that no longer re-noises the shadows it fills, a fix for the
blotchy color speckle left deep in shadows, and a confidence matte that hands
downstream nodes a map of where the denoiser actually succeeded.

Everything here is off by default, so existing projects render bit-for-bit
identically until you reach for it. All new math is ported across the CPU
reference and the Metal / CUDA / OpenCL kernels at the usual ~2e-5 parity, and
every idea was CPU-prototyped and gated on real 4K night footage before it
shipped.

Added

  • Optical Acutance (Refine). The first stage in the whole pipeline that
    raises high-frequency energy: an edginess-gated high-pass on the cleaned
    luma, hard-clamped to the local 3×3 min/max so edges get their slope back
    with zero ringing by construction — sharpness that reads like a lens,
    not a halo. Gated to real edges by the noise field, so it never amplifies
    noise. Measured +7.9% edge slope on the reference clip; flats untouched.
  • Shadow Color Cleanup (Refine, the WEAK-1 fix). The residual mid-frequency
    color speckle in deep shadows sits above the ~23 px reach of the chroma
    bands. A wide luma-guided chroma pass averages it — guided by the clean luma
    so it never crosses a real object edge, and kept to a moderate reach so the
    frame-scale lighting gradient (warm vs cool ambient over dark fabric) stays
    put. −70% shadow chroma speckle on the clip with the real color preserved.
  • Clean-Confidence matte (view mode). Exports the per-pixel effective
    sample count — how deep the temporal stage averaged — calibrated into
    RGB + alpha. A downstream node can key shadow-lift, grain and local contrast
    off where the denoiser succeeded (high on static, low on the motion the
    gate had to protect). The complement of the existing noisiness matte.
  • Grain Fineness (blue-noise spectrum). High-passes the grain toward the
    eye's contrast-sensitivity peak; at matched RMS it reads sharper and hides
    the plasticky look better than full-band grain.

Changed

  • Film Grain is now reconstructed, not dithered. Amplitude follows the
    measured brightness-noise curve (loud in shadows, quiet in highlights —
    where real noise and the plasticky waxing actually live) instead of a
    mid-gray parabola, and it is contrast-masked off edges so it never dithers
    over detail or acutance. (Only affects clips that had grain turned on.)
  • Luma Texture now cores the noise out first. The re-injected texture is
    soft-thresholded at the input-noise scale, so it puts back real
    micro-structure without pushing the removed noise back into the shadows —
    measured shadow re-noising dropped from ~4.7× to ~1.2×. (Only affects clips
    that had Luma Texture turned on.)
  • Adaptive Strength (effN-steered spatial): the spatial cleaning is now
    spent per pixel where frame-averaging couldn't help (moving subjects) and
    relaxed where it already worked, keeping the residual uniform across motion.
  • Auto Setup deep-tune: the self-tuner now also runs a coordinate descent
    over the motion/detail/EQ axes and a chroma-SURE pass, with hold-out
    cross-validation so a tune that only fits the probe's own noise is rejected.

Fixed

  • Chroma auto-tune on correlated speckle. Plain MC-SURE is only a valid
    error estimate for white noise; on the spatially-correlated shadow chroma
    speckle it read the win backwards and de-tuned a good profile by ~0.9 dB.
    The probe is now matched to the measured chroma-noise correlation length, so
    the estimator becomes generalized SURE and tracks true error — turning that
    0.9 dB loss into a 3.0 dB gain on the correlated case.

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

Choose a tag to compare

@amateurmenace amateurmenace released this 16 Jul 15:57

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.

Source & issues: amateurmenace/Speak. Also released there as v0.2.0.

🤖 Generated with Claude Code