Improve audio quality and streaming performance
- Add 5-second crossfades between tracks - Use ReplayGain for consistent volume (removed normalize()) - Add audio compression to prevent clipping - Liquidsoap watches playlist file and reloads every 5 seconds - Fallback to random playback when queue is empty - Fix playlist to play all tracks in order
This commit is contained in:
parent
d4edb8bfec
commit
5f78213d92
|
|
@ -14,20 +14,46 @@ settings.server.telnet.set(true)
|
||||||
settings.server.telnet.port.set(1234)
|
settings.server.telnet.port.set(1234)
|
||||||
settings.server.telnet.bind_addr.set("0.0.0.0")
|
settings.server.telnet.bind_addr.set("0.0.0.0")
|
||||||
|
|
||||||
# Create playlist source from mounted music directory
|
# Create playlist source from generated M3U file
|
||||||
# Use playlist.safe which starts playing immediately without full scan
|
# This file is managed by Asteroid's stream control system
|
||||||
radio = playlist.safe(
|
# Falls back to directory scan if playlist file doesn't exist
|
||||||
mode="randomize",
|
radio = playlist(
|
||||||
|
mode="normal", # Play in order (not randomized)
|
||||||
|
reload=5, # Check for playlist updates every 5 seconds
|
||||||
|
reload_mode="watch", # Watch file for changes
|
||||||
|
"/app/stream-queue.m3u"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Fallback to directory scan if playlist file is empty/missing
|
||||||
|
radio_fallback = playlist.safe(
|
||||||
|
mode="randomize",
|
||||||
reload=3600,
|
reload=3600,
|
||||||
"/app/music/"
|
"/app/music/"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add some audio processing
|
# Use main playlist, fall back to directory scan
|
||||||
radio = amplify(1.0, radio)
|
radio = fallback(track_sensitive=false, [radio, radio_fallback])
|
||||||
radio = normalize(radio)
|
|
||||||
|
|
||||||
# Add crossfade between tracks
|
# Add some audio processing
|
||||||
radio = crossfade(radio)
|
# Use ReplayGain for consistent volume without pumping
|
||||||
|
radio = amplify(1.0, override="replaygain", radio)
|
||||||
|
|
||||||
|
# Add smooth crossfade between tracks (5 seconds)
|
||||||
|
radio = crossfade(
|
||||||
|
duration=5.0, # 5 second crossfade
|
||||||
|
fade_in=3.0, # 3 second fade in
|
||||||
|
fade_out=3.0, # 3 second fade out
|
||||||
|
radio
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add a compressor to prevent clipping
|
||||||
|
radio = compress(
|
||||||
|
ratio=3.0, # Compression ratio
|
||||||
|
threshold=-15.0, # Threshold in dB
|
||||||
|
attack=50.0, # Attack time in ms
|
||||||
|
release=400.0, # Release time in ms
|
||||||
|
radio
|
||||||
|
)
|
||||||
|
|
||||||
# Create a fallback with emergency content
|
# Create a fallback with emergency content
|
||||||
emergency = sine(440.0)
|
emergency = sine(440.0)
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ../music/library:/app/music:ro
|
- ../music/library:/app/music:ro
|
||||||
- ./asteroid-radio-docker.liq:/app/asteroid-radio.liq:ro
|
- ./asteroid-radio-docker.liq:/app/asteroid-radio.liq:ro
|
||||||
|
- ../stream-queue.m3u:/app/stream-queue.m3u:ro
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- asteroid-network
|
- asteroid-network
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ docker compose ps
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "🎵 Asteroid Radio is now streaming!"
|
echo "🎵 Asteroid Radio is now streaming!"
|
||||||
echo "📡 High Quality: http://localhost:8000/asteroid.mp3"
|
echo "📡 High Quality MP3: http://localhost:8000/asteroid.mp3"
|
||||||
echo "📡 Low Quality: http://localhost:8000/asteroid-low.mp3"
|
echo "📡 High Quality AAC: http://localhost:8000/asteroid.aac"
|
||||||
echo "🔧 Admin Panel: http://localhost:8000/admin/"
|
echo "📡 Low Quality MP3: http://localhost:8000/asteroid-low.mp3"
|
||||||
|
echo "🔧 Admin Panel: http://localhost:8000/admin/"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue