Queue Playback
Use PCMQueuePlayer for frame reads, snapshots, skips, and queue control outside Discord.
Use PCMQueuePlayer for frame reads, snapshots, skips, and queue control outside Discord.
Trim silence, normalize loudness, and adapt crossfade timing to track duration and analysis results.
Render FLAC, WAV, ALAC, or AIFF transition files without lossy re-encoding.
0.6.3 Hardening
This patch focuses on reliability: clearer failures, safer defaults, cross-platform runtime behavior, and file renders that match prepared transition settings more closely.
Bad sources now show up in queue snapshots instead of silently ending playback.
Configured FFmpeg paths are validated before the CLI reports a healthy setup.
PCM streaming no longer depends on Unix-only pipe readiness behavior.
Crossfades are clamped for tiny tracks so transitions stay sane.
Lossless file renders now apply prepared gain and tempo settings.
Invalid cached transition values fall back to fresh safe planning.
Install
The base install includes a bundled FFmpeg provider for decoding and analysis. 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__)"
python -m veloura doctor
Player API
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
Balanced transitions for livestreams, Discord queues, and background music.
AutoMix
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.
Audio Demo
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 real-time queue playback.
Two CC0 music excerpts blended with an equal-power ending transition.
Demo Sources
The public demo is rendered from OpenGameArt tracks listed as CC0. Attribution is optional under CC0, but the sources are shown here for provenance.
By Fupi. Listed as CC0 on OpenGameArt. View source.
By congusbongus. Listed as CC0 on OpenGameArt. View source.
python examples/generate_transition_demo_audio.py
Discord Example
The reference bot in examples/discord_slash_bot.py uses
Veloura for stream resolution, transition prep, and Discord voice
playback. It includes /play, /queue,
/now, /skip, /stop, and
/volume. Public-bot guardrails include same-channel
controls, optional DJ role checks, mention escaping, queue caps,
cooldowns, resolver timeouts, and bounded cache storage.
Invite it with the bot and
applications.commands scopes, plus Connect/Speak voice
permissions.
pip install "veloura-audio[all]"
export DISCORD_TOKEN="your-bot-token"
export DISCORD_GUILD_ID="your-test-server-id"
export VELOURA_DJ_ROLE_ID="your-dj-role-id"
python examples/discord_slash_bot.py
Playable Demo
The same CC0 excerpts rendered through veloura render-transition
into FLAC and WAV files with no lossy output encode step.
Lossless Rendering
For local music apps, demos, and release-prep workflows, Veloura can decode sources to high-precision float PCM, apply an equal-power-style crossfade, and write FLAC, WAV, ALAC, or AIFF output.
python -m veloura render-transition \
./track-a.flac \
./track-b.flac \
./transition.flac \
--crossfade 8
Lossless rendering means the transition output is written without MP3/AAC/Opus-style compression. The crossfade still creates a new waveform, so it is not bit-for-bit copying of the source files.
Troubleshooting
Run python -m veloura doctor. Veloura uses bundled FFmpeg when system FFmpeg is missing.
Install veloura-audio[stream] when resolving YouTube URLs or search queries through yt-dlp.
Install veloura-audio[discord] so discord.py and PyNaCl are available.
Use same-channel checks, cooldowns, queue caps, resolver timeouts, and permission checks before handing input to yt-dlp.
Use Cases
Keep CrossfadeAudioSource as the Discord voice adapter while the package handles transition planning.
Run prepared queues through PCM frame output for continuous livestream or station-style playback.
Use PCMQueuePlayer as the audio engine behind desktop, web, or mobile-style queue products.