Join audio files so the end of one fades out while the start of the next fades in over the same seconds. Add the files, set the order, pick a length and a curve, then listen to any seam before writing the output.
Crossfade length
The slider sets the overlap at every seam, from 0.1 to 15 seconds. Two to four seconds suits songs in a playlist. Ambience, room tone, and music beds under speech take longer overlaps, around 6 to 10 seconds, so the change in texture is hard to place.
Each seam is capped at half of the shorter file next to it. A short clip between two long crossfades gets shorter fades, never overlapping fades.
Per-seam lengths
Every seam row has its own length field. Leave it alone and the seam follows the slider; type a value and that seam keeps it. A playlist that moves from a slow intro into a fast track might use 8 seconds at the first seam and 2 at every other one. Reset returns a seam to the slider.
Silence at joins
Songs ripped from albums and exports from editors often end with a second or two of silence and start with a few hundred milliseconds more. Overlap them as they are and a 3 second crossfade spends most of its time blending silence, which sounds like a fade out followed by a fade in.
Trim before fading cuts silence at the end of each outgoing file and at the start of each incoming one, then places the overlap on what remains. The threshold sets what counts as silence: -50 dB catches digital silence and quiet hiss, while -35 dB also takes a long reverb tail. The start of the first file and the end of the last are never trimmed, and the stats show how much silence was cut.
Silence at the end of a file is held back up to 60 seconds while the file streams, since it only counts as trailing once the file is over. A quiet passage longer than that stays in.
Equal power vs linear
A crossfade is two gain curves running in opposite directions.
- Equal power follows a quarter sine and cosine. Their squares always add to 1, so two unrelated signals keep a steady loudness through the overlap. Use it for different songs, different takes, or recordings from different rooms.
- Linear runs one gain from 1 to 0 and the other from 0 to 1. The two always add to 1, which keeps the level steady only when both sides carry the same waveform. On unrelated material it dips by about 3 dB halfway through.
When the curve is wrong you hear it: a linear fade between two songs sags in the middle, and an equal-power fade across two cuts of the same take swells by up to 3 dB.
Listen to a seam
Each pair of cards has a seam row between them. Listen renders 3 seconds before the overlap, the overlap itself, and 3 seconds after, then plays it. Change the length or curve and listen again before exporting.
Where the seam lands
MP3 and some AAC files carry a duration in their header that can be off by tens of milliseconds, especially with variable bitrate encoding. Placing a seam from that number would start the next file early or late. The joiner decodes each file to its last sample and starts the overlap from the real end, so a seam lands in the same place whatever the header says.
Levels and clipping
Crossfading does not change gain outside the overlap. A quiet file stays quiet next to a loud one, so level the sources with the normalizer first if they were mastered differently.
Inside the overlap, two loud masters can sum above full scale for a moment. The peak reading after export shows it, and a warning appears when samples were clipped. Lower the sources, or run the joined file through the limiter.
Formats and sample rates
Files are decoded before they are joined, so an MP3 can fade into a FLAC. The output takes the highest sample rate and channel count in the set: a mono voice memo fading into a stereo track is spread to both channels, and a 44.1 kHz file joined to a 48 kHz one is resampled up.