- HTML 70.3%
- Perl 29.7%
| DynamicMixer | Update strings.txt | |
| README.md | Update README.md | |
Dynamic Mixer - Lyrion Music Server Plugin
Dynamic Playlist Generation for 2026
This plugin brings real Dynamic Mixes to Lyrion Music Server (formerly Logitech Media Server).
Features
- Sequential Block-Based Playlists: Define playlists as ordered blocks (e.g., 20% Pop, then 1 Speech track 35min+, then remaining time Hardcore/Oi)
- Percentage-Based Allocation: Allocate time by percentage, fixed track count, or "remaining time"
- Advanced Filters Per Block:
- Genre (multi-select with | separator)
- Duration (min/max in seconds)
- Play history (not played since X days)
- Artist limits (max tracks per artist)
- Album limits (max tracks per album)
- File format (FLAC, MP3, etc.)
- Relative Path M3U8 Output: Playlists use relative paths from
/Playlists/folder, works across different mount points - LMS Database Integration: Reads play history directly from Lyrion's database
Your Setup
Based on your configuration:
/media/musix/
├── Playlists/ ← Output playlists here
├── MP3/
│ ├── Pop/
│ ├── Speech/
│ ├── Hardcore/
│ └── Oi/
└── FLAC/
├── Pop/
├── Speech/
├── Hardcore/
└── Oi/
Structure: /genre/artist/year ~ album/albumartist (track#) title.ext
Installation
Important: Lyrion has NO web-based ZIP installer. You must install manually.
-
Find your Lyrion Plugins directory:
Check LMS web interface → Settings → Information → Look for "User Plugins Directory"
Common locations:
- Linux:
/var/lib/lyrion/Plugins/or/var/lib/squeezeboxserver/Plugins/ - Docker:
/config/cache/Plugins/(see Docker note below) - macOS:
/Library/Application Support/Lyrion Music Server/Plugins/ - Windows:
C:\ProgramData\Lyrion Music Server\Plugins\
- Linux:
-
Extract plugin:
# Unzip the plugin (or copy the DynamicMixMaster folder) unzip DynamicMixMaster.zip -d /var/lib/lyrion/Plugins/ # You should end up with: # /var/lib/lyrion/Plugins/DynamicMixMaster/Plugin.pm # /var/lib/lyrion/Plugins/DynamicMixMaster/install.xml # etc. -
Set permissions (Linux only):
chown -R lms:lms /var/lib/lyrion/Plugins/DynamicMixMaster chmod -R 755 /var/lib/lyrion/Plugins/DynamicMixMaster -
Restart Lyrion Music Server:
# Linux sudo systemctl restart lyrionmusicserver # Docker docker restart <container-name> # macOS - use menu bar item # Windows - use Services or tray tool -
Enable the plugin:
- Open LMS web interface (usually http://localhost:9000)
- Go to Settings → Plugins
- Find "Dynamic Mix Master" and enable it
- Restart LMS again
Configuration
-
Access Plugin Settings:
- LMS Web Interface → Settings → Advanced → Dynamic Mix Master
-
Set Paths (if different from defaults):
- Music Library Path:
/media/musix - Playlist Output Path:
/media/musix/Playlists
- Music Library Path:
-
Create Your First Playlist:
Example: Your Original Request
Line 0: Global Settings
- Playlist Name:
MyDailyMix - Total Duration:
180minutes (3 hours)
Line 1: Block 1 - 20% Pop
- ✓ Enabled
- Type:
Percentage - Percentage:
20 - Genre:
Pop - Not Played Since:
7days - Max Per Artist:
2
Line 2: Block 2 - Speech
- ✓ Enabled
- Type:
Fixed Track Count - Tracks:
1 - Genre:
Speech - Min Duration:
2100(35 minutes)
Line 3: Block 3 - Hardcore & Oi
- ✓ Enabled
- Type:
Remaining Time - Genre:
Hardcore|Oi - Max Per Artist:
5 - Max Per Album:
3 - Not Played Since:
14days
- Playlist Name:
-
Generate:
- Click "Generate Playlist"
- Playlist will be created at
/media/musix/Playlists/MyDailyMix.m3u8
Usage
Once generated, your playlist can be:
- Loaded in Lyrion Music Server
- Loaded in Jellyfin (if same mount point)
- Opened in VLC, foobar2000, or any M3U8-compatible player
The relative paths ensure it works across different systems mounting /media/musix at different locations.
Filter Reference
All available filters per block:
| Filter | Purpose | Example |
|---|---|---|
%genre% |
Genre filter (use | for multiple) | Pop|Indie|Rock |
%format% |
File format (comma-separated) | flac,mp3 |
%min_duration% |
Minimum track length (seconds) | 2100 (35 min) |
%max_duration% |
Maximum track length (seconds) | 600 (10 min) |
%max_per_artist% |
Max tracks from same artist | 5 |
%max_per_album% |
Max tracks from same album | 3 |
%not_played_since% |
Exclude recently played (days) | 14 |
Combining Filters
All filters within a block are combined with AND logic:
- Block wants: Pop genre AND FLAC format AND not played in 7 days AND max 2 per artist
- Result: Only Pop FLAC tracks not played in a week, max 2 from any artist
Troubleshooting
Plugin doesn't appear in LMS:
- Check file permissions (755 for directories, 644 for files)
- Check LMS logs:
/var/log/lyrionmusicserver/server.log - Ensure Perl module naming is correct:
Plugins::DynamicMixMaster::Plugin
No tracks selected:
- Filters too strict - relax duration, play history, or per-artist limits
- Check genre names match exactly what's in LMS database
- Enable LMS debugging: Settings → Advanced → Logging → plugin.dynamicmixmaster → DEBUG
Playlist paths don't work:
- Verify music path setting matches your actual library location
- Ensure playlist is saved in correct folder
- Check that paths are relative (should start with
../)
Known Limitations
- Currently only generates M3U8 format (most universal)
- Playlist generation is manual (no automatic scheduling yet)
- No GUI playlist editor (only settings page)
- Play history requires LMS database access (won't work with external Jellyfin-only libraries)
Future Enhancements
Potential features for v2.0:
- Scheduled automatic playlist generation (cron-style)
- Export to PLS, XSPF formats
- Jellyfin API integration for play history
- Mood-based filtering (if mood tags present)
- Year/decade filters
- Rating filters (if using ratings plugins)
- Template system for saving favorite block configurations
Support
For issues, questions, or feature requests, check:
- LMS logs for errors
- This README for configuration help
- Test with simple playlists first (1-2 blocks) before complex ones
Version: 1.0.0
Compatible with: Lyrion Music Server 8.0+
License: Open Source
Path Safety: Uses relative paths for cross-system compatibility