Skip to main content
← Back to list
01Issue
FeatureOpenExtensionsPublic
AssigneesNone

Relationships

#4690 @swamp/video: generate intro and bed music sized to the take (ElevenLabs first; Suno once its API is open)

Opened by skunk-ape · 11/12/2026

Problem

The intro music and the bed are mp3 files picked by hand from a stock-music folder (music, bed on @swamp/video/media). Rendering the Slack integrations demo (2026-11-12) ran into three problems with that:

  • Intro cue point. The intro card plays about 5s of the track from second 0. Most stock tracks open with a quiet build, so the card got the build instead of the hit. The workaround was to find the onset by measuring RMS (a hard hit at 30.7s in luminewave-devil-time), ffmpeg-trim a copy (…cue-30.65s.mp3) and point music at it. The media settings have no option to start a track partway in.
  • Bed loops. With bedMode: full the bed runs the whole video. A 1:50 track loops about 3.5 times under a 6:35 video, and the loop point is audible. Even a 3:11 track loops twice.
  • Fit and taste. The first pick was "too Seinfeld" (slap-bass funk). Choosing a track meant guessing from file names, since the agent can't listen. Nothing ties the music's length or structure to the video's.

Proposal: @swamp/video/music

A behavior with a compose method that generates instrumental music sized to a specific take:

  • Intro sting: a hit on the first frame, sized to the intro card plus its fade, read from the render's intro length (introSeconds, or the hook offset when there's a cold open). No cue-point hunting and no trimmed copies.
  • Bed: exactly the output length (video-render durationSeconds), with a fade at the end, so it never loops. Ambient by default: no melody hook, no drums, sits under voice.
  • Data: writes the file paths plus provenance (provider, model, prompt or plan, seed, length, generation time, license or plan the output was made under) as versioned data. A recut that keeps the same length reuses the tracks. compose with a new seed or prompt regenerates one track.
  • Wiring: media music/bed take the generated paths (CEL from the music data, or a musicFrom input on video-edit/video-recut like cardsFrom).
  • Provider is a setting. API key from a vault.

Provider research (2026-11-12)

Suno: promising but not ready to build on

  • There is now an official API sign-in page at https://platform.suno.com ("Suno's music generation engine behind a simple REST API": songs, covers and mashups from a prompt). Docs, pricing and endpoints are only visible after signing in, so instrumental mode, exact length and extend are unconfirmed.
  • In July 2026 Suno opened partner-only early access via an intake form (Music Business Worldwide). In September, third-party reviews still couldn't confirm self-serve signup. Nothing shows consumer Pro/Premier credits working through the API.
  • Unofficial wrappers and resellers exist but break Suno's terms and break without warning. Not suitable for a published extension.
  • Licensing: paid plans (Pro $10/mo, Premier $30/mo) allow commercial and YouTube use; the free tier is personal use only. Rights reportedly persist after cancelling. Suno keeps a license to outputs. Content ID claims can still happen and are disputed with the license.
  • Registry: the only Suno-related extension, @alvagante/content-music, goes through the 1min.ai reseller and targets lyric songs. Not a fit.

ElevenLabs Music: best fit for a first provider

POST https://api.elevenlabs.io/v1/music:

  • music_length_ms from 3,000 to 600,000: exact length
  • force_instrumental: true: guaranteed no vocals
  • composition_plan: sections, each with its own duration (3–120s) and positive and negative styles. Lets one request ask for a hit then a hold for the sting, or an intro, body and fade-out for the bed.
  • seed (with composition plan) for repeatable results; models music_v1, music_v2, music_v2_5
  • Output up to mp3_48000_192 or PCM 48 kHz, matching the render's 48 kHz audio
  • Optional C2PA signing
  • Reported price about $0.15 per generated minute direct (third-party comparisons; verify). A sting plus a 6.5-minute bed would cost about $1 per take.

Others

  • Stable Audio 2.5/3.0: instrumental-oriented, up to 3 or 6 minutes per generation, about $0.20–0.26 per generation (reported).
  • Google Lyria: Lyria 2 via fal is about $0.10 per 30s; the RealTime API is instrumental-only over WebSocket. Reports conflict on whether Lyria 3 has an API. Output is SynthID-watermarked.

Open questions

  • ElevenLabs as the only provider at first, with Suno added once platform.suno.com's docs confirm instrumental mode and exact length? Or a provider interface from day one?
  • Where license provenance should surface: in video-describe output (YouTube description), in data only, or both.
  • Default prompts and styles per brand: should @swamp/video/brand supply a house sound (synthwave, to match the cards)?
  • Caching: key generated tracks on (provider, model, prompt or plan, seed, length) so recuts don't re-spend.
  • Content ID: whether to keep generated outputs registered or listed somewhere for disputes.

Sources

02Bog Flow
◉OPEN○TRIAGED○IN PROGRESS○SHIPPED

Open

11/12/2026, 8:31:01 PM

No activity in this phase yet.

03Sludge Pulse
Editable. Press Enter to edit.

system commented 11/12/2026, 8:31:01 PM

Classified automatically when this issue was filed.

  • Source: Extensions

If you feel this classification is incorrect, add a ripple to tell us so.

Sign in to post a ripple.