Skip to main content
Namida’s crossfade feature creates seamless transitions between tracks by fading out the ending track while simultaneously fading in the next track, eliminating gaps and harsh transitions.

Overview

Crossfade overlaps the end of one track with the beginning of the next, creating a smooth, continuous listening experience. This is particularly useful for DJ mixes, live albums, or any situation where you want uninterrupted audio flow.

Smooth Transitions

Fade out current track while fading in next track

Configurable Duration

Set crossfade length from milliseconds to several seconds

Auto-Trigger

Automatically start crossfade in the last seconds of a track

Manual Control

Skip to next track immediately with crossfade effect

Configuration

Enable Crossfade

Crossfade is disabled by default. Enable it in playback settings:
// From settings.player.dart
final enableCrossFade = false.obs;
1

Open Settings

Navigate to Settings → Playback
2

Find Crossfade Section

Scroll to the “Crossfade” section
3

Enable Toggle

Toggle “Enable Crossfade Effect” to activate
4

Configure Settings

Expand the section to adjust duration and trigger settings

Crossfade Duration

Control how long the crossfade transition lasts:
// From settings.player.dart
final crossFadeDurationMS = 500.obs; // Default: 500ms (0.5 seconds)
Configuration:
  • Minimum: 1ms (instant transition)
  • Maximum: Several seconds
  • Default: 500ms (0.5 seconds)
  • Display Format: Shows as milliseconds (ms) if <1000ms, or seconds (s) if ≥1000ms
Short Crossfade (100-500ms)
  • Quick, subtle transitions
  • Preserves track endings
  • Good for most music genres
  • Minimal overlap
Medium Crossfade (500-1500ms)
  • Balanced transition
  • Smooth flow between tracks
  • Default for most DJ software
  • Good for party playlists
Long Crossfade (1500-5000ms)
  • Very smooth, extended overlap
  • Best for ambient/electronic music
  • DJ-style continuous mix
  • May obscure track endings
The duration is displayed differently based on length:
  • Less than 1000ms: “500ms”
  • 1000ms or more: “1.5s”, “2s”, etc.

Auto-Trigger Crossfade

Automatically start crossfade when a track nears its end:
// From settings.player.dart
final crossFadeAutoTriggerSeconds = 5.obs; // Default: 5 seconds
Configuration:
  • Minimum: 0 seconds (disabled - manual only)
  • Maximum: Track duration
  • Default: 5 seconds
  • Behavior: Triggers crossfade N seconds before track ends
1

Access Setting

Open Settings → Playback → Crossfade
2

Adjust Auto-Trigger

Set “Crossfade Trigger Seconds” slider
3

Disable if Desired

Set to 0 to disable auto-trigger (manual skip only)
4

Test with Playback

Play a track and observe automatic transition
Setting to 0 seconds:When auto-trigger is set to 0, crossfade will ONLY activate when you manually skip to the next track. Tracks will play completely to the end without automatic crossfading.

How Crossfade Works

Audio Overlap

Crossfade creates an overlap between two tracks:
Track 1: ████████████░░░░ (fading out)
Track 2:           ░░░░████████████ (fading in)
         ←─ Crossfade Duration ─→

Volume Curves

During crossfade:
  1. Current Track: Volume gradually decreases from 100% to 0%
  2. Next Track: Volume gradually increases from 0% to 100%
  3. Combined: Maintains relatively constant overall volume

Timing

Crossfade timing depends on auto-trigger setting: With Auto-Trigger (e.g., 5 seconds):
Track duration: 3:30 (210 seconds)
Crossfade starts at: 3:25 (205 seconds)
Crossfade duration: 500ms
Track 2 starts at: 3:25.5 (205.5 seconds)
Without Auto-Trigger (0 seconds):
User manually skips at any time
Crossfade duration applies immediately
Smooth transition to next track
The crossfade duration and auto-trigger seconds are independent settings that work together to control the transition behavior.

Use Cases

Party Playlists

Keep energy flowing with seamless transitions between dance tracks

Workout Mixes

Maintain momentum with continuous audio during exercise

Study/Focus

Prevent distracting silence between ambient/lo-fi tracks

Live Albums

Preserve concert atmosphere with smooth song transitions

Best Practices

Recommended:
  • Enable Crossfade: ✓
  • Duration: 1000-2000ms (1-2 seconds)
  • Auto-Trigger: 3-5 seconds
Electronic music often benefits from longer crossfades to maintain energy and beat continuity.
Recommended:
  • Enable Crossfade: ✓ (optional)
  • Duration: 500-1000ms (0.5-1 second)
  • Auto-Trigger: 5-8 seconds
Moderate crossfade preserves song structure while reducing gaps.
Recommended:
  • Enable Crossfade: ✗ (usually disabled)
  • Duration: N/A
  • Auto-Trigger: N/A
Classical and jazz often have intentional silence and should typically play without crossfade.
Recommended:
  • Enable Crossfade: ✗
  • Duration: N/A
  • Auto-Trigger: N/A
Spoken content should not use crossfade to avoid overlapping speech.

General Tips

Start Conservative

Begin with 500ms and adjust based on preference

Match Content

Use longer crossfades for continuous mixes, shorter for varied playlists

Consider Track Endings

Longer crossfades will cut more of the ending; adjust accordingly

Test Before Parties

Test settings with your playlist before events

Interaction with Other Features

Gapless Playback

final enableGaplessPlayback = false.obs;
final enableCrossFade = false.obs;
Crossfade and gapless playback serve different purposes:
  • Gapless: Removes silence between tracks (no overlap)
  • Crossfade: Creates audio overlap between tracks
If both are enabled, crossfade takes priority. Crossfade inherently provides gapless playback plus the overlap effect.

Play/Pause Fade

Crossfade is separate from play/pause fade effects:
final enableVolumeFadeOnPlayPause = true.obs;
final playFadeDurInMilli = 300.obs;   // Fade in on play
final pauseFadeDurInMilli = 300.obs;  // Fade out on pause
  • Play/Pause Fade: Affects starting/stopping playback
  • Crossfade: Affects transitions between tracks
Both can be enabled simultaneously.

Skip to Next

When crossfade is enabled and you manually skip to the next track:
  1. Immediate Response: Skip is processed immediately
  2. Crossfade Applied: Smooth transition uses configured duration
  3. No Auto-Trigger: Manual skip ignores auto-trigger setting
Manual track skipping always applies crossfade (when enabled), regardless of the auto-trigger seconds setting.

Advanced Configuration

Kuru Mode Defaults

Namida includes a “Kuru Mode” preset with optimized crossfade settings:
// From settings.player.dart
void applyKuruSettings() {
  enableCrossFade.value = true;
  crossFadeDurationMS.value = 1500;      // 1.5 seconds
  crossFadeAutoTriggerSeconds.value = 0; // Manual only
  playOnNextPrev.value = false;
  jumpToFirstTrackAfterFinishingQueue.value = false;
  killAfterDismissingApp.value = KillAppMode.never;
  replayGainType.value = ReplayGainType.volume;
}
Kuru Mode provides DJ-style manual crossfading without automatic triggering.

Programmatic Control

Crossfade settings can be saved programmatically:
settings.player.save(
  enableCrossFade: true,
  crossFadeDurationMS: 1000,
  crossFadeAutoTriggerSeconds: 5,
);

Troubleshooting

Check:
  1. Crossfade is enabled in settings
  2. Track has sufficient duration for auto-trigger
  3. Audio files are not corrupted
  4. No other audio effects interfering
Note: Very short tracks (shorter than crossfade duration) may not crossfade properly.
Possible Causes:
  • Crossfade duration too short
  • Audio buffering issues
  • Device performance constraints
Solutions:
  1. Increase crossfade duration
  2. Close background apps
  3. Check device storage/RAM
Cause:Auto-trigger seconds set too high, cutting into track ending.Solution:Reduce “Crossfade Trigger Seconds” to start crossfade closer to track end, or increase crossfade duration for smoother overlap.
Check:
  1. Crossfade is enabled (not just auto-trigger)
  2. Next track exists in queue
  3. Audio format is supported
Manual skip should always trigger crossfade when enabled, regardless of auto-trigger setting.

Visual Indicators

When crossfade is active, Namida may display:
  • Settings Icon: Indicator showing crossfade is enabled
  • Transition State: Visual feedback during crossfade
  • Duration Display: Shows configured crossfade length
  • Auto-Trigger Status: Indicates if auto-trigger is active or disabled
Settings display format:
  • Auto-trigger enabled: “Trigger crossfade automatically in the last 5 seconds”
  • Auto-trigger disabled: “Do not trigger crossfade automatically”

Performance Considerations

CPU Usage

Crossfade uses minimal CPU for mixing two audio streams

Memory

Requires buffering both tracks during transition

Battery

Negligible impact on battery life

Audio Quality

No quality loss; maintains original audio fidelity
Crossfade is efficiently implemented and should not cause performance issues on modern devices. If you experience problems, check overall system resources rather than disabling crossfade.

Build docs developers (and LLMs) love