github ronak-create/FableCut v1.10.0
FableCut v1.10.0 — pro audio: mixer, effects, buses, noise reduction; agents can edit and export

4 hours ago

Added

  • Mixer. A Mixer tab beside the Inspector: one strip per audio track
    with a fader (console taper, unity at ¾ throw, double-click for 0 dB, or
    type a level), pan, mute, solo and a meter, plus a master fader with a
    live LUFS readout. Levels are saved as tracks[].gain / tracks[].pan and
    master.gain in project.json, written only when they differ from 0.

  • Clip gain (props.gain, dB): a trim before volume, so volume
    keyframes and fades keep working on top of it.

  • Channels (props.channelMode): stereo, mono (L+R folded to one
    channel), left, right or swap, per clip.

  • Normalize. In the inspector, pick a target (−14 LUFS streaming, −16
    LUFS podcast, −23 LUFS broadcast, −1 dBFS peak) and Apply: the selected
    clips are measured (ITU-R BS.1770 integrated loudness with EBU R128
    gating, or sample peak) and their clip gain set to hit it. Linked stems
    are measured together and share one gain.

  • MCP: fablecut_normalize_audio does the same from an agent (needs ffmpeg),
    with the same measurement as the editor. fablecut_patch_project gains a
    setTrack op for track faders / pan and a master field on
    setProject; the compact project view shows a MIX: line when any
    level is off 0.

  • Audio effects. Effect chains on audio clips (Inspector → Audio effects),
    tracks and the master (Mixer → FX): EQ (3-band), high-pass, low-pass,
    compressor, limiter (brickwall, 5 ms lookahead), noise gate, delay, reverb,
    distortion and stereo width. Reorder, bypass or tweak each effect; preview
    and export run the same chain. Saved as fx on clips, tracks[].fx and
    master.fx.

  • Audio presets. Voice: Clean voice, Podcast, Radio, Deep voice (EQ-based),
    Telephone. Music: Cinematic, Wide, Muffled. A preset writes ordinary effects
    into the chain, so it can be adjusted afterwards.

  • MCP: fablecut_patch_project gains setFx (a chain or a preset on a clip
    and its linked stems, a track or the master; validated). The compact view
    lists chains. The MCPB bundle manifest now lists every tool
    (fablecut_encode_profiles was missing).

  • Volume line. Audio clips draw their volume as a line: drag it to change
    the level (with keyframes, the two around the pointer move together),
    Ctrl/Cmd-click to add a keyframe, drag a point to move it, Alt-click or
    double-click to remove one. Edits apply to linked stems too.

  • Fade grips and fade curves. Drag the grip in a clip's top corner to fade
    in or out. Audio fades take a curve: constant power, constant gain or
    exponential (inspector → Transition), drawn as the real curve on the clip.
    Fades without a curve sound exactly as before.

  • Crossfade (Shift+D, or the clip menu). Crossfades the audio cut next to
    the selection, or the one at the playhead: the overlap is borrowed from
    spare media on both sides of the cut, so nothing downstream moves; linked
    picture dissolves in. Overlapping audio that is crossfaded no longer shows
    the overlap warning.

  • Auto-duck. In the inspector (or the clip menu): the selected music dips
    by the chosen amount wherever the dialogue tracks have sound, ramping down
    just before and back up after, with short pauses bridged. Written as a new
    duck keyframe channel (dB) on top of volume, so the music's own levels are
    never touched and a re-run replaces the old dips. MCP:
    fablecut_auto_duck, same detection as the editor.

  • Agents can export. fablecut_export renders the timeline to a file in
    exports/ with the editor's own Fast export and returns its path. An open
    editor tab takes the job, or the server starts a headless Chrome / Edge
    (FABLECUT_CHROME to choose) and closes it afterwards. Range, encoding
    profile, waiting, status and cancel are options. REST:
    POST /api/export/request and GET /api/export/job.

  • MCP: fablecut_patch_project runs the editor's own timeline edits —
    split, rippleDelete, closeGap, lift, extract, insert,
    overwrite, rippleTrim, roll, slip, slide and crossfade — with the
    same linked-stem sync, track targeting and locks as the keyboard shortcuts.
    setProject takes inPoint / outPoint, and the compact view shows them.

  • Pitch shift effect (±12 semitones, speed unchanged). The Deep voice
    preset now lowers the pitch (−4 semitones) instead of only EQ-ing the tone.

  • Effect automation. Any effect parameter (except reverb decay) can follow
    keyframes: a ◆ beside each slider sets or removes a key at the playhead, and
    the slider then edits the key under the playhead. Clip, track, bus and master
    effects; preview and export follow the same curve. Saved as keys on the
    effect. MCP: the setFxKeys patch op, or keys inside a setFx chain.

  • Submix buses. + Bus in the Mixer adds a bus with its own effects,
    fader, pan, mute and meter; the menu under a track's name routes it into a
    bus instead of the master. Saved as buses and tracks[].out. MCP: setBus,
    removeBus, setTrack {out}, and setFx / setFxKeys on a bus.

  • Noise reduction. The inspector's Noise control (Light / Medium /
    Strong / Off) measures the file's noise floor and renders a cleaned copy with
    ffmpeg's FFT denoiser; the clip's audio stems switch to it, and Off switches
    back. MCP: fablecut_denoise; REST: POST /api/denoise. Needs ffmpeg.

Changed

  • The editor's split, ripple, insert, trim and crossfade code moved into
    edit-ops.js, which the editor and the MCP server both load.
  • The master loudness readout is measured on the finished mix, after master
    effects and the master fader.
  • Preview and export now mix audio through the same graph: each clip feeds
    its track, each track the master. Before, the export mix sent every clip
    straight to the output, so anything set on a track or the master could not
    reach the exported file.

Fixed

  • Titles draw in their own fonts again. Every title style (Anton, Playfair
    Display, Bebas Neue, Caveat, …) was falling back to the system sans-serif:
    • The 20 fonts in library/fonts were the wrong slice of each Google font
      (Cyrillic, Vietnamese, …) with no A–Z in them. They are now the Latin
      files, and the variable ones (Caveat, DM Sans, Inter, Montserrat, Oswald,
      Playfair Display, Roboto, Rubik, Teko) keep their whole weight range, so
      weight 100–900 draws real weights instead of a faked bold.
    • Fonts that aren't in the library (Cinzel for the Luxury style, or any
      Google Font typed by name) never loaded: the check meant to skip fonts
      already present passed for every name. They load now, and Load says
      so when Google Fonts has no family by that name.
    • A data directory seeded before this release (the Claude Code plugin keeps
      one) gets the new font files on the next start; a file you changed or
      added yourself is never overwritten.
  • Exports wait for every title font, including a font-cut title's whole
    set, before the first frame, so an opening frame can't come out in the
    fallback face.
  • The font list no longer shows a library font twice after a quick run of
    project reloads.

Don't miss a new FableCut release

NewReleases is sending notifications on new releases.