PDA

View Full Version : Module music resources


minmay
Aug 31, 2013, 12:45 PM
JJ2 supports the following file formats for music: MOD, S3M, XM, IT, MTM, 669, and J2B. JJ2+ comes with BASS, which adds support for MP3, MP2, MP1, OGG, WAV, AIFF, UMX, and MO3, and greatly improves support of the existing formats (except J2B and 669).

This thread is not concerned with MP3, MP2, MP1, OGG, WAV, or AIFF - only MP3 and OGG are really useful in JJ2 levels, and there are plenty of other places for you to learn about those.

The difference between module formats and streaming formats
Streaming formats such as WAV, MP3 and OGG simply consist of a stream of audio data, which is played directly. By contrast, module formats consist of a collection of samples and patterns.
Samples are streams of audio data, usually very short, and usually consisting of only a single note.
Patterns are sets of rows. Each row contains instructions for playing notes, as well as effects, arbitrary instructions that cover everything from applying vibrato to a note, to jumping straight to a different pattern. Usually, more than one note is played from a single sample - to generate higher or lower notes, the sample is simply played back faster or slower. Every module file has a certain number of channels; each channel can play only one sample at a time.
When a module file plays, the player traverses through the patterns in order; to traverse a pattern, it traverses through that pattern's rows in order, executing each row's instructions as it passes through. The speed at which rows are traversed can be arbitrarily set by the module, and can even change partway through.
A visual demonstration. (https://www.youtube.com/watch?v=PXTZA5bqIJ0)
Pattern data is very small and compresses well; it's rare for it to take up a significant amount of space. Most of a module's file size comes from the samples, and due to how short samples can be, modules frequently end up much smaller than even low-quality MP3/OGG conversions. Also, they tend to use less CPU time than compressed formats like MP3 and OGG.
It should be an obvious conclusion from this that you can't reasonably convert a streaming format into a module format - you can put the entire streaming song in a sample and have your module just play that, but the result is no smaller than the original streaming song.
Unlike with, say, MP3, there is no standard for how module formats should be written or played. This, combined with the large number of formats and their wide range of capabilities, means that most programs don't play module formats very accurately.
Programs used to compose modules are called trackers. Player accuracy is normally determined by comparing it to the output of the original tracker that created the format.
I won't go further into the details of module formats in general here.

Individual formats and their JJ2(+) support

MOD
The original module format (the extension stands for MODule), originating on the Amiga in 1987. Only supports 8-bit samples, and no more than 31 of them. The original format was also limited to 4 channels, but after a few years a lot of MODs started popping up with 8 channels. Rarely you'll see a MOD with more channels, but those won't even play on an Amiga without fairly obscure software.
Originated with Ultimate Soundtracker, but the standard for playback is usually ProTracker, a later and much more flexible program.
Support:
JJ2: Some inaccuracies
BASS: Almost perfectly accurate

S3M
Originated with ScreamTracker 3; the extension stands for ScreamTracker 3 Module. Supports 16 channels, and unlike MOD (which played channels either entirely on the left speaker or entirely on the right speaker), allows arbitrary stereo panning. The file format allows 16-bit samples, but ScreamTracker 3 itself didn't, so most S3Ms have only 8-bit samples. Of all the formats used by unmodified JJ2, this one is played the most accurately aside from J2B.
JJ2: Almost perfectly accurate
BASS: Slightly more almost perfectly accurate

669
Originated with Composer 669, nobody uses it.
JJ2: Never tried more than a couple, not sure.
BASS: N/A

PSM
Supported by neither JJ2 nor BASS, but notable for being used in many of Epic's older releases, including the original Jazz Jackrabbit. Converts well to S3M provided you use the correct program to do it.
JJ2: N/A
BASS: N/A

MTM
MultiTracker Module. Similar to S3M, and not nearly as popular.
JJ2: Reasonably accurate
BASS: Almost perfectly accurate

XM
Originated with FastTracker 2. Extremely popular. Up to 32 channels, full support for 16-bit samples. Also introduced instruments, which are basically extra instructions applied when playing a sample, mostly in the form of volume or panning envelopes, curves that are applied to the volume (panning, etc) of a sample over the time it's played.
JJ2: Somewhat inaccurate - poor support for many effects
BASS: Perfectly accurate, never found one single difference between this and FT2's playback.

IT
Originated with Impulse Tracker. Also extremely popular. Supports up to 64 channels, as well as allowing stereo samples. Instruments additionally have what are called New Note Actions, or NNAs, which allow notes to continue sounding even if interrupted by another note in the same channel; the abilitiy to play multiple notes concurrently in a single channel is known as virtual channels; they behave both internally and externally very much like additional channels, except they're invisible and don't carry any row instructions.
Later versions of Impulse Tracker introduced an additional instrument envelope that applies resonant or cutoff filters (of varying strength) to the sample. A warning: songs with heavy use of filters and/or very many channels actually manage to get more CPU-intensive than MP3 files.
Impulse Tracker 2.14 and up also support lossless sample compression, which usually has a compression ratio of around 50% - significantly worse than FLAC, the most popular lossless audio compression today, but keep in mind that Impulse Tracker also predates FLAC by around 5 years.
JJ2: Very poor support. Compressed samples and filters crash the game. More than 32 channels will either fail to work properly, or crash the game. NNAs don't work.
BASS: Almost perfectly accurate

J2B
The music format made for JJ2. Kind of like XM with some IT effects added - note that there are no filters and no NNAs. Compressed, with similar ratios to IT2.14. If you use or have used this format at any time after BASS' inclusion in JJ2+, I hate you and sincerely hope you die.
JJ2: Perfectly accurate, by definition.
BASS: N/A

UMX
Container format used in Unreal, wraps around a MOD, S3M, XM, or IT. I think. I don't own Unreal and intellectual property theft is bad!!!
JJ2: N/A
BASS: Don't know

MO3
The ultimate module format, conceived by the author of BASS. Wraps around a MOD, S3M, MTM, XM, or IT module, retaining the original format perfectly...except for compressing the samples, patterns, comments, everything. Sample compression is either MP3, OGG, or lossless...chosen completely independently for every sample, so you can mix them any way you want. You can even mix different MP3/OGG quality levels.
Due to the nature of the format, it is guaranteed that BASS will play an MO3 exactly like it plays the original song (except for any lossy sample compression). The big disadvantage is that almost nobody actually supports MO3 aside from BASS.
Note: I recommend using Ogg over MP3 when making MO3 files, because Ogg retains sample shape significantly better, and deviating from the original shape can cause "clicks" in looping samples.
JJ2: N/A
BASS: See the entry for the appropriate original format

Where to find modules
You are responsible for obeying license agreements when downloading, modifying, converting, or using any songs.

Modland (http://www.exotica.org.uk/wiki/Special:Modland)
Enormous collection spanning a couple hundred formats, but there's a lot of crap and no way to filter it out.

The Mod Archive (http://www.modarchive.org/)
Much, much smaller than Modland but has a rating system.

modules.pl (http://www.modules.pl/?id=modules)
Lots of different formats and well sorted, not very large though (about 7400 files at time of writing).

scene.org (http://scene.org/)
If you're looking for songs from a specific party or competition, they might be here.

All modules uploaded to J2O (http://mods.jazz2online.com)

Useful programs (all are free)

Module players

XMPlay (http://www.un4seen.com/)
This is the BASS audio player, and it's probably the one you should use, even if you have to run it under Wine; if it plays right in XMPlay, it's basically guaranteed to play right in JJ2+. Extremely accurate for all the formats it supports (and it supports all the important ones), and it even has a pattern viewer.

ModPlug Player (http://www.openmpt.org/)
Less accurate than XMPlay but supports a wider range of formats.

Audacious (http://audacious-media-player.org/), Xmp (http://xmp.sourceforge.net/)
If you want a native module player for a non-Windows system these are probably your best options. Audacious supports non-module formats but Xmp supports a wider range of module formats and seems a bit more accurate. Xmp has a very good Android version.

Winamp (http://uncyclopedia.wikia.com/wiki/You_suck)

Trackers

OpenMPT (http://www.openmpt.org/)
The most intuitive interface of any of the trackers here, and supports a lot of formats, however, it has some inaccuracies; songs composed with OpenMPT will likely sound a bit different if you play them with BASS or the original trackers. Most accurate player for J2B aside from JJ2 itself but that's not saying very much. Can also convert PSM to other formats; there used to be more accurate programs for this but as of 1.22.07 it seems to be the best.

SchismTracker (http://www.schismtracker.org/)
Modern version of Impulse Tracker. Very accurate, but only for IT.

MilkyTracker (http://www.milkytracker.org/)
Modern version of FastTracker 2. Very accurate, but only for XM.

BeRoTracker (http://www.berotracker.de/)
A tracker that can load MIDI files.

Other

MO3 (http://www.un4seen.com/)
Programs for converting to and from MO3.

What to take away from all this
If you don't care about working without BASS, and don't mind converting to it, you should use MO3 for module music in JJ2 levels. If you want your song to play on unmodified JJ2 then you are probably best off looking for XMs or S3Ms; it's rather inconvenient to pick out an IT then find out that JJ2 crashes or plays it badly.

cooba
Aug 31, 2013, 01:31 PM
Props for an awesome thread.

Violet CLM
Aug 31, 2013, 01:49 PM
Rep for an awesome thread.

lefixed

Stijn
Sep 1, 2013, 02:08 AM
Nice thread! Also don't forget http://mods.jazz2online.com

Treylina
Sep 1, 2013, 09:18 AM
J2B
The music format made for JJ2. A weird IT variant with no filters, no NNAs, and missing a bunch of effects. Has its own sample compression, with similar ratios to IT2.14. If you use or have used this format at any time after BASS' inclusion in JJ2+, I hate you and sincerely hope you die.
JJ2: Perfectly accurate, by definition.
BASS: N/A

What to take away from all this
If you don't care about working without BASS, and don't mind converting to it, you should use MO3 for module music in JJ2 levels. If you want your song to play on unmodified JJ2 then you are probably best off looking for XMs or S3Ms; it's rather inconvenient to pick out an IT then find out that JJ2 crashes or plays it badly.

Except J2B had to be used if you wanted to change boss music, before the days of scripted levels. I've also noticed that it's actually JJ2's default music player has occasionally static sounds (well, I notice them, at least), and some music doesn't loop and worst of all, gets stuck on a single channel at the end, and even if you use changemusic, it won't go away until the level is cycled . So please, if you see a J2b version of something, try to find the original module.

You may want to provide some info on the other obscure BASS-compatible formats, but no one uses those (and I don't think they're good) so it's not that important.

Here's some more help for people who want to find and use the mo3 converter, because some might not understand by just going to un4seen.net:

1. Click mo3 to the left at the site.
2. At the top, click download. Once you've done that, make a new folder for it, and extract the files out of its ZIP by doing ctrl + A, then pasting into whatever folder you made for it.
3. At the same page, scroll down and go to other stuff. Download OGGENC. The extension will allow you to use this compression method in mo3.exe, which can give you even smaller mo3s. Even the lossless method comes out smaller!
4. Make sure to transfer oggenc.exe into the same folder where mo3.exe is.
5. Open the program mo3.exe. Find a module. In the top left, make sure the encoder selected is OGGEnc. Make sure the slider beside "GO" is all the way to the left, so it doesn't mess with the quality.
6. At the right, now click "GO!" below compression. Hooray! You converted it to mo3.

Alternatively, you can make module files open with mo3.exe by default. Right click the module, select open, then select choose default file. Find mo3.exe. For example, if it's a s3m file, it'll open these type of files this way, and so on.

Anyway, thanks for telling a lot of information, and especially about the extremely overlooked mo3 format and where to find converters.

Treylina
Oct 14, 2013, 12:13 PM
I figured I'd bump this because I improved my guide a lot. It's been a month.

FawFul
Oct 14, 2013, 02:49 PM
also Modules.pl is a very known module database spread from poland to worldwide. The site is quite advanced and the archive on that is huge and contains stuff that isn't on modarchive. I'm surprised it's not on the list.

minmay
Oct 14, 2013, 04:25 PM
Oops, I knew I'd forgotten at least one.

DoubleGJ
Oct 15, 2013, 12:41 AM
http://modulaatio.com/quasian/releases.php?field=format&search=it,xm,s3m

all of Quasian's modules on his website. this is the guy that did 'second time' which was made into scndtime.j2b by someone (Blade?)

Torkell
Oct 15, 2013, 10:11 AM
On UMX: the docs for BASS say it can play UMX files (and I know XMPlay can). Since it's a container format, the playback accuracy should be the same as that of the original IT or whatever.

Jojo
Feb 20, 2014, 03:26 PM
Minor errors that are worth correcting:
- MTMs are MultiTracker Modules, not MadTracker. MadTracker was one of the first Windows trackers and is much more powerful than ScreamTracker.

- J2B represents XM more than IT internally. The whole Galaxy Sound System behaves more like FT2 than IT, and I think they only added support for some IT-specific things such as channel volume because, ooops, all the composers working for Unreal engine games were in fact IT users, not FT2 users. Basically, this whole engine is a (bad) XM player with some hacked-on IT features, not the other way around.
J2B also doesn't have any special kind of sample compression - samples are just stored as deltas (like in XM) and the whole file is compressed using zlib. Deltas compress better than normal samples, but delta + zip still compresses worse than IT-compressed samples + zip (yes, you can make IT-compressed files even smaller!).

Also... both of these points are completely outdated:
songs composed with OpenMPT will likely sound a bit different if you play them with BASS or the original trackers. Notably can't save ITs with sample compression
OpenMPT and BeroTracker are the only trackers that can save (http://forum.openmpt.org/index.php?topic=4961.0) IT-compressed samples outside IT at the moment. It's true that OpenMPT has been deviating from the XM and IT "playing standards" a lot for a long time, but in many cases it's even more precise than Schism and Milky respectively.

A PSM to S3M converter, sometimes more accurate than OpenMPT
I doubt this has been true for the last few years, but if you can still find a PSM file that sounds "more correct" when converting it with CMC compared to OpenMPT, let me know and I'll fix it.

minmay
Feb 21, 2014, 10:49 AM
Thanks, I knew I shouldn't have written so much of this just from memory!
I tried the current OpenMPT with the PSM songs I was thinking of, and sure enough it converts them much better now; good job.

Another Jazz 2 fan
Aug 27, 2015, 09:07 PM
Incredibly informative post! I learned something, and I've been enjoying listening to the mod music that people include with their JJ2 downloads for ages with MODPLUG Player (it inspired me while I worked on my own levels).

I've always been a little curious about learning how to write my own, but the barrier to entry always seemed pretty high. Any recommendations on an accessible, easy-to-learn tool if you want to try out composing MODs? (Bonus points if it's on Android).

Splat
Sep 4, 2019, 05:52 PM
Any recommendations on an accessible, easy-to-learn tool if you want to try out composing MODs? (Bonus points if it's on Android).


I would recommend that you could try OpenMPT {ModPlug Tracker} on Windows for composing with .IT format module files. There are other music sequencer programs, and other modular song formats, sure. Just recommending this because that's my normal setup for module music.

Another idea is you could try FamiTracker, it's also a Windows program, but is for making NES-style music files, which wouldn't be inherently compatible with JJ2. I've tried it a few times, but just a small fraction as much as I used ModPlugTracker. However, I've listened to some good music that people made with this proggie.

For Android? Can't say; at most with Android phone I found an app that could play maybe 1-2 module formats, IIRC, but not using it recently. For Iphone, there's an app called VividTracker -- I believe it makes .MOD file format.

Significantly, I'd mention that for music composers learning software for module song formats, developing a sample library is an important thing to do, in order to create modules effectively. In terms of module music, no samples means no sounds. There are a lot of free music instrument sample download websites, or downloadable virtual instruments, etc. These types of samples come in a variety of formats as well as qualities, audio file sources, durations, and other technologies incorporated into the files.

You just don't want to be notating music in your sequencer, and then you have to power the music box by cranking its gears manually, because you're lacking actual samples or electricity. You can also extract samples or virtual instruments from music files you might already have in your JJ2 folder, or you could make some samples yourself; there's an enourmous number of methods for making music in this way, just trying to post some semivital information about my experience being nonessential personnelle.