Crossfade Concatenator — User Guide
Join multiple sounds with smooth crossfade transitions. Optionally randomize order for creative arrangements.
What this does
This script concatenates multiple Sound objects with smooth 25% crossfade transitions between them. It joins sounds seamlessly, eliminating abrupt cuts. Optional randomization of sound order enables creative arrangements and variations.
How crossfade concatenation works:
- Select multiple Sound objects in Praat
- Script calculates 25% of each incoming sound's duration
- Fade out the end of the previous sound (over last 25%)
- Fade in the beginning of the next sound (over first 25%)
- Overlap the faded sections during concatenation
- Result: smooth transitions between all sounds
Quick start
- In Praat Objects window, select 2 or more Sound objects
- Run script:
concatenate_crossfade.praat - Choose whether to Randomize order (optional)
- Click OK
- Output named "concatenated_crossfade" appears in Objects window
- Script automatically normalizes and plays the result
Key features:
- 25% crossfade: Fixed percentage ensures consistent transitions
- Order randomization: Create variations of the same material
- Automatic normalization: Peak normalized to 0.99 (prevents clipping)
- Clean processing: Removes temporary objects automatically
- Preserves metadata: Output inherits sample rate/channels from first sound
Important notes:
- Minimum 2 sounds: Script requires at least 2 selected Sound objects
- Crossfade percentage: Fixed at 25% (not adjustable in current version)
- Very short sounds: If sound duration < 0.1s, crossfade may be too short for smooth transition
- Different sample rates: Praat handles conversion automatically
- Mono/stereo mixing: All sounds converted to match first sound's channel configuration
Parameters
| Parameter | Default | Description |
|---|---|---|
| Randomize_order | 1 (enabled) | Randomly shuffle sound order before concatenation |
Technical Details
Crossfade calculation:
fade_percentage = 25
fade_ratio = fade_percentage / 100 = 0.25
For each incoming sound:
current_duration = Get total duration
overlap_time = current_duration × 0.25
Processing steps:
- Copy first sound as starting point
- For each subsequent sound:
- Calculate overlap = 25% of its duration
- Fade out last 25% of current result
- Fade in first 25% of incoming sound
- Concatenate with overlap
- Normalize peak amplitude to 0.99
- Clean up temporary objects
Applications
🎵 Music Composition
Create seamless transitions between musical phrases:
- Join different sections of a composition
- Create smooth medleys from multiple recordings
- Experiment with phrase ordering via randomization
- Build longer textures from short sound snippets
🎬 Sound Design
Smooth sound effect sequences:
- Create evolving soundscapes from individual elements
- Design smooth transitions between different environments
- Build complex Foley sequences
- Generate randomized sound textures for games/film
🔬 Audio Research
Stimulus generation for experiments:
- Create continuous audio streams from discrete stimuli
- Generate randomized presentation orders
- Build test sequences with smooth transitions
- Prepare audio materials for perception studies
Creative Techniques
Workflow suggestions:
- Randomization iterations: Run multiple times with randomization enabled, select best results
- Layering: Combine multiple crossfaded sequences for complex textures
- Source preparation: Trim sounds to similar durations for consistent crossfade timing
- Post-processing: Apply effects (reverb, EQ) to the final concatenated result
- Nesting: Concatenate concatenated results for hierarchical structures