Skip to content

v2.63.0

Choose a tag to compare

@samuelgursky samuelgursky released this 22 Jul 11:06

v2.63.0

Waveform silence ripple for the edit engine — Resolve exposes Clip → Audio Operations → Ripple Delete Silence in the UI but not via scripting; this release adds that capability to the plan → confirm → execute edit loop. Contributed in PR #91 by @EliteSystemsAI, adopted with follow-up hardening and live-validated in Resolve Studio.

Added

  • edit_engine plan_silence_ripple / execute_silence_ripple — waveform-driven dead-air removal via ffmpeg silencedetect, mirroring Resolve's Ripple Delete Silence dialog. Tunable threshold_db (default −30 dB), min_strip_frames (10), pre_head_frames (0), and post_tail_frames (1). Execution assembles a tightened VARIANT timeline from keep ranges — the original timeline is never mutated, execution is confirm-gated, and kept video ranges are mirrored onto the item's linked audio tracks. New module src/utils/silence_ripple.py.

Fixed (hardening on the PR before release)

  • Skipped items ride along whole — items without a readable media file path emit a full-range keep so the variant never silently loses content; only items with no media reference at all are omitted, and the skipped reason says so explicitly.
  • All audio streams are merged before detection — production MXF often carries one mono PCM stream per channel, and ffmpeg's default stream selection could land on a dead scratch channel, reading entire takes as silence. Detection now merges every audio stream (silent only when ALL channels are silent — matching the Resolve dialog), with a single-stream fallback if amerge refuses the graph.
  • No pointless video decode — detection runs with -vn, so 4K sources no longer decode picture to scan audio.
  • Clear failure modes — missing ffmpeg reports itself instead of "no silence regions found"; a plan whose keep ranges are all empty (source quieter than threshold_db throughout) carries an explicit warning and is refused at execution.

Validation

  • Full offline suite: 1504 tests, green. Static release checks (parity audit, api-limitations, agent-rules drift, undefined names, action-list/doc-count/panel drift guards, npm pack dry-run) all pass.
  • Live Resolve Studio validation: 3-clip interview scratch timeline (5-audio-stream MXF masters), plan at −50 dB produced 18 lifts; execution assembled the variant 74.4s → 11.05s with 90/90 keep ranges placed and exact video/audio frame-lock (record ranges + source offsets) across 5 mirrored audio tracks. Scratch timelines removed after validation; source media untouched (read-only decode).