1
0
Fork
You've already forked DynamicMixer
0
dynamic playlist generator plugin for lyrionmusicserver (logitechmediaserver)
  • HTML 70.3%
  • Perl 29.7%
2026年01月25日 14:48:11 +01:00
DynamicMixer Update strings.txt 2026年01月25日 14:48:11 +01:00
README.md Update README.md 2026年01月25日 14:36:47 +01:00

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.

  1. 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\
  2. 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.
    
  3. Set permissions (Linux only):

    chown -R lms:lms /var/lib/lyrion/Plugins/DynamicMixMaster
    chmod -R 755 /var/lib/lyrion/Plugins/DynamicMixMaster
    
  4. 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
    
  5. 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

  1. Access Plugin Settings:

    • LMS Web Interface → Settings → Advanced → Dynamic Mix Master
  2. Set Paths (if different from defaults):

    • Music Library Path: /media/musix
    • Playlist Output Path: /media/musix/Playlists
  3. Create Your First Playlist:

    Example: Your Original Request

    Line 0: Global Settings

    • Playlist Name: MyDailyMix
    • Total Duration: 180 minutes (3 hours)

    Line 1: Block 1 - 20% Pop

    • ✓ Enabled
    • Type: Percentage
    • Percentage: 20
    • Genre: Pop
    • Not Played Since: 7 days
    • 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: 14 days
  4. 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