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 forsidplayfp
. - 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 variableHVSC_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.
- The Mod Archive
- World of Game MODs / World of Game MIDs
- kunstderfuge.com
- sc68 music collection
- ExoticA
- High Voltage SID Collection
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
andIO: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
andplayer.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-endian
4 /--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.
-
mikmod didn't work for me on an ARM platform, it loops the MOD and never exits. ↩
-
In a default installation, it should be located at
/usr/share/sidplayfp/Songlengths.txt
. ↩ -
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
. ↩ -
Default, works on ARM and x86 platforms. If in doubt, check
lscpu
. ↩