Python audio transitions for queues, bots, and streamers

Veloura Audio

A reusable audio engine for equal-power crossfades, beat-aware planning, AutoMix-style transitions, and Discord-independent PCM playback.

Queue Playback

Use PCMQueuePlayer for frame reads, snapshots, skips, and queue control outside Discord.

Smart Transitions

Trim silence, normalize loudness, and adapt crossfade timing to track duration and analysis results.

AutoMix Planning

Plan adjacent-track transitions with beat confidence, conservative tempo nudging, and fallback behavior.

Small core, optional integrations.

Install only the engine by default. Add stream resolution or Discord voice support when your product needs it.

pip install veloura-audio
pip install "veloura-audio[stream]"
pip install "veloura-audio[discord]"
python -c "import veloura; print(veloura.__version__)"

Build playback without inheriting a Discord bot shape.

Enqueue prepared tracks, read PCM frames, inspect snapshots, and prepare the next transition when both tracks are known.

from veloura.audio import AudioTrack, PCMQueuePlayer, transition_preset

config = transition_preset("automix")
player = PCMQueuePlayer(
    volume=0.65,
    crossfade_seconds=config.base_crossfade_seconds,
)

track = AudioTrack.from_source(
    "song-a.mp3",
    title="Song A",
    duration=180,
)

player.enqueue(track)
frame = player.read_frame()
snapshot = player.snapshot().to_dict()

Selected preset

Streamer

Balanced transitions for livestreams, Discord queues, and background music.

Crossfade
8s
Analysis
Balanced
Best for
General queues

Pair-aware transitions with conservative fallbacks.

AutoMix analyzes current outro and next intro beat windows, then applies a pair-specific crossfade, intro trim, and small tempo nudge when confidence is high. If analysis is weak, it keeps the blend short.

Listen to a rendered ending transition.

A short demo showing Veloura blending one CC0 music track into another. The clip was rendered with PCMQueuePlayer and bundled as a listenable example of the crossfade engine.

Veloura CC0 Music Transition

Two CC0 music excerpts blended with an equal-power ending transition.

Track A
Crossfade
Track B

CC0 music sources, credited clearly.

The public demo is rendered from OpenGameArt tracks listed as CC0. Attribution is optional under CC0, but the sources are shown here for provenance.

Empacotatron

By Fupi. Listed as CC0 on OpenGameArt. View source.

Rhythm Garden

By congusbongus. Listed as CC0 on OpenGameArt. View source.

python examples/generate_transition_demo_audio.py

Use Veloura as the transition engine behind your bot.

Discord bots can keep their own commands and queues while Veloura handles stream resolution, transition prep, and the voice audio source.

from veloura.audio import CrossfadeAudioSource, resolve_stream_track, transition_preset

config = transition_preset("streamer")
source = CrossfadeAudioSource(crossfade_seconds=config.base_crossfade_seconds)

track = await resolve_stream_track(
    "artist song official audio",
    transition_config=config,
)

source.enqueue(track)
voice_client.play(source)

Fast checks when audio setup gets weird.

FFmpeg

Run ffmpeg -version. Veloura needs FFmpeg for decoding, analysis, and stream playback.

Streams

Install veloura-audio[stream] when resolving YouTube URLs or search queries through yt-dlp.

Discord Voice

Install veloura-audio[discord] so discord.py and PyNaCl are available.

One engine, several product surfaces.

Discord Music Bots

Keep CrossfadeAudioSource as the Discord voice adapter while the package handles transition planning.

Radio Streams

Run prepared queues through PCM frame output for continuous livestream or station-style playback.

Music Apps

Use PCMQueuePlayer as the audio engine behind desktop, web, or mobile-style queue products.