Skip to content

Timeline export attenuates audio based on total delayed input count #23

Open

Description

@JaysonAlbert

MCP timeline export applies FFmpeg amix's default normalization to every audio input, including sequential clips delayed to their timeline positions. This lowers the gain of an audible clip according to unrelated clips that are silent at that time. A multi-shot export can consequently sound almost silent even when source audio has ordinary levels.

Reproduce by placing several clips with audio sequentially on a timeline at unity gain, then rendering through bdesign_editor_render. Compare RMS/peak levels for the first clip against its source; adding later clips changes its exported gain. The current filter in src/core/editor/render-project-timeline.ts uses amix without an explicit normalize option, so delayed silence participates in normalization.

Expected: exporting sequential audio preserves the timeline gain, independently of how many later clips exist. Overlapping sources should mix using their configured gains, with peak protection rather than attenuation based on total input count.

Proposed fix: disable amix normalization, add a non-boosting peak limiter with compensated lookahead, and add a deterministic audio-level regression test for delayed sequential inputs and overlapping full-scale tones. No model/provider-specific changes are required.

Activity

  1. JaysonAlbert commented on Oct 18, 2026

    @JaysonAlbert
    Author

    Implementation and FFmpeg regression tests are available in #24 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions