A music bed has one job: fill the silence without being noticed. That means the right length, a clean start and end, and a level well under the voice.
Generate the bed
Describe something steady. A bed with a lead melody, vocals or big changes competes with the speaker.
Light, upbeat background music, acoustic guitar, soft claps, steady, no lead melody
Calm corporate ambient, soft pads, gentle piano, slow, minimal
Warm lo-fi beat, mellow keys, vinyl crackle, relaxed, no vocals
Make it a few seconds longer than you need. Fading the end of a longer track sounds better than a track that stops on its own.
Trim and fade
Cut the bed to 30 seconds, fade it in over 1 second and out over the last 3:
ffmpeg -i music.wav -t 30 -af "afade=t=in:d=1,afade=t=out:st=27:d=3" bed.wav
-t is the length, and st is where the fade-out starts: the length minus the
fade.
In a video editor the same thing is a trim and two fade handles. Use whichever you are already in.
Set the level
Loudness is measured in LUFS, which follows how loud something sounds rather than its peaks. Measure first:
ffmpeg -i bed.wav -af ebur128 -f null -
The summary at the end prints I:, the integrated loudness of the whole file.
To bring a file to a target, loudnorm does it in one pass. This sets a podcast
mix to -16 LUFS with peaks below -1.5 dB:
ffmpeg -i mix.wav -af loudnorm=I=-16:TP=-1.5:LRA=11 -ar 48000 mix-16.wav
Run it on the finished mix, voice and music together, not on the bed alone. The bed's own level is set by ear against the voice in your editor.
- Generate an instrumental a few seconds longer than the edit, and download the WAV.
- Trim it to length and fade both ends.
- Put it under the voice in your editor and lower it until it supports rather than competes. Check on a phone speaker.
- Export the mix and measure it. Normalise to the target of the platform it is going to.