LMS Tracker MOD/MIDI/Game Music Player

Features

  • plays tracker chiptunes (MOD, XM, MED, IT, STM and S3M files)
  • plays MIDI files
  • plays Amiga / Atari ST / C64 (SID) game music

Status

  • beta quality, little error handling
  • tested on Linux (ARM), may or may not work on other platforms

Requirements

MODs

The plugin needs an external program to convert the MOD file. By default, it's configured to use xmp, which needs to be installed and accessible by LMS.
If you want to use a different converter (e.g. mikmod1), you'll have to modify the included custom-convert.conf.
e.g. the line

    [xmp] -d file -D endian=little --bits 16 --frequency 44100 --stdout -o- --nocmd --norc $START$ $END$ $FILE$ | [lame] --quiet --little-endian -x -r -s 44.1 --silent -q $QUALITY$ $BITRATE$ - -

will become something like:

    [mikmod] -norc -X -d stdout -q -o 16s $FILE$ | [lame] --quiet -x -s 44.1 --silent -q $QUALITY$ $BITRATE$ - -
MIDI

The plugin needs an external program to convert the MIDI file. By default, it's configured to use TiMidity++, which needs to be installed and accessible by LMS. You can change it by modifying the included custom-convert.conf.
Example for fluidsynth using the Fluid (R3) General MIDI SoundFont:

mid flc * *
    # F
    [fluidsynth] --disable-lash --no-shell --no-midi-in --quiet --gain 1.3 --audio-channels=2 -T flac -F- /usr/share/sounds/sf2/FluidR3_GM.sf2 $FILE$
mid mp3 * *
    # FB:{BITRATE=--abr %B}
    [fluidsynth] --disable-lash --no-shell --no-midi-in --quiet --gain 1.3 --audio-channels=2 --sample-rate 44100 -T raw -O s16 -F- /usr/share/sounds/sf2/FluidR3_GM.sf2 $FILE$ | [lame] --little-endian -r -s 44.1 -quiet --silent -q $QUALITY$ $BITRATE$ - -
Amiga / Atari ST / C64 game music / trackers
sc68

The plugin can use sc68 to convert game music and tracker files, if it is installed and accessible by LMS.
Note: Files must have a .sc68 extension.

UADE

The plugin can use UADE to convert Amiga game music and tracker files, if it is installed and accessible by LMS.
Note: Files must have a .uade extension.

C64

The plugin can use sidplayfp to convert C64 game music, if it is installed and accessible by LMS.
Note:

  • Make sure you have the song lengths database database installed correctly2. You need the old Songlengths.txt format for sidplayfp.
  • The plugin has to be able to read Songlengths.md5, or all track lengths will be set to 210 seconds in LMS. Set the environment variable HVSC_BASE to point to the HVSC root3.
  • sidplayfp seems fairly slow, so if you start playing a track and nothing seems to happen, check if your server isn't still converting the track.
  • Files must have a .sid extension.

Installation

In the LMS web interface in Settings/Plugins, add https://www.nexus0.net/pub/sw/lmsmodplay/repo.xml to the list of Additional Repositories and activate the plugin.

Metadata

MOD / MIDI / UADE

These files do not contain most metadata used by LMS.
The plugin sets the following defaults:

  • MIDI / UADE files have no title, so the file name is used
  • artist is "[Trackers]" (for MODs) / "[MIDI]" / "[UADE]"
  • album is the name of the folder the file is in
  • genre is "Chiptune"
  • duration is 59 seconds
sc68

Some metadata can (usually) be retrieved from sc68 files (using sc68's info86).

SID

Some metadata can (usually) be retrieved from SID files.

Music

There are many sites offering such music, e.g.

FAQ

Adding the plugin repository to LMS results in some errors / doesn't work. Why?
Make sure your LMS installation is SSL-enabled (e.g. on *nix, the perl modules Net::SSLeay and IO:Socket:SSL need to be installed)
It doesn't do anything. What do I do now?
First, check if you can convert the file on the command line. Then, set logging for formats.audio, player.source and player.streaming to Info, check the server log for the convert command, and verify it is correct.
The output is garbled. What gives?
Try changing the endianness of the audio data (lame's --little-endian4 / --big-endian and -r options).
Additional credits

The code to parse MOD metadata was written by Justin Fletcher.

License

GNU GPLv3

Reporting Issues

Use the discussion thread in the LMS forum.


  1. mikmod didn't work for me on an ARM platform, it loops the MOD and never exits. 

  2. In a default installation, it should be located at /usr/share/sidplayfp/Songlengths.txt

  3. Since the plugin runs as part of LMS, the environment variable has to be present in the environment LMS is running in (it can be set in e.g. LMS' startup script). If in doubt, check the server log - the plugin will output the value of HVSC_BASE

  4. Default, works on ARM and x86 platforms. If in doubt, check lscpu