Register FAQ Search Today's Posts Mark Forums Read
Go Back   JazzJackrabbit Community Forums » Open Forums » JCS & Scripting

Module music resources

minmay

JCF Member

Joined: Aug 2002

Posts: 1,181

minmay is immeasurably awesomeminmay is immeasurably awesomeminmay is immeasurably awesomeminmay is immeasurably awesomeminmay is immeasurably awesome

Aug 31, 2013, 12:45 PM
minmay is offline
Reply With Quote
Module music resources

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.
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
Enormous collection spanning a couple hundred formats, but there's a lot of crap and no way to filter it out.

The Mod Archive
Much, much smaller than Modland but has a rating system.

modules.pl
Lots of different formats and well sorted, not very large though (about 7400 files at time of writing).

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

All modules uploaded to J2O

Useful programs (all are free)

Module players

XMPlay
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
Less accurate than XMPlay but supports a wider range of formats.

Audacious, Xmp
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

Trackers

OpenMPT
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
Modern version of Impulse Tracker. Very accurate, but only for IT.

MilkyTracker
Modern version of FastTracker 2. Very accurate, but only for XM.

BeRoTracker
A tracker that can load MIDI files.

Other

MO3
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.

Last edited by minmay; Feb 21, 2014 at 10:54 AM. Reason: remove cronos, correct some stuff
cooba cooba's Avatar

JCF Veteran

Joined: Jan 2004

Posts: 7,774

cooba is a glorious beacon of lightcooba is a glorious beacon of lightcooba is a glorious beacon of lightcooba is a glorious beacon of lightcooba is a glorious beacon of lightcooba is a glorious beacon of light

Aug 31, 2013, 01:31 PM
cooba is offline
Reply With Quote
Props for an awesome thread.
Violet CLM Violet CLM's Avatar

JCF Éminence Grise

Joined: Mar 2001

Posts: 10,630

Violet CLM has disabled reputation

Aug 31, 2013, 01:49 PM
Violet CLM is offline
Reply With Quote
Quote:
Originally Posted by cooba View Post
Rep for an awesome thread.
lefixed
__________________
Stijn Stijn's Avatar

Administrator

Joined: Mar 2001

Posts: 6,934

Stijn is a splendid one to beholdStijn is a splendid one to beholdStijn is a splendid one to beholdStijn is a splendid one to beholdStijn is a splendid one to beholdStijn is a splendid one to beholdStijn is a splendid one to behold

Sep 1, 2013, 02:08 AM
Stijn is offline
Reply With Quote
Nice thread! Also don't forget http://mods.jazz2online.com
Treylina Treylina's Avatar

JCF Member

Joined: Sep 2009

Posts: 1,008

Treylina is a forum legendTreylina is a forum legendTreylina is a forum legend

Sep 1, 2013, 09:18 AM
Treylina is offline
Reply With Quote
Quote:
Originally Posted by minmay View Post

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.
__________________


Jazz Jackrabbit group: https://discord.gg/vZm95tQ

Last edited by Treylina; Oct 14, 2013 at 12:13 PM. Reason: Improved the guide. Deleted unecessary info.
Treylina Treylina's Avatar

JCF Member

Joined: Sep 2009

Posts: 1,008

Treylina is a forum legendTreylina is a forum legendTreylina is a forum legend

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


Jazz Jackrabbit group: https://discord.gg/vZm95tQ
FawFul FawFul's Avatar

JCF Member

Joined: Jun 2007

Posts: 491

FawFul is a forum legendFawFul is a forum legendFawFul is a forum legend

Oct 14, 2013, 02:49 PM
FawFul is offline
Reply With Quote
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

JCF Member

Joined: Aug 2002

Posts: 1,181

minmay is immeasurably awesomeminmay is immeasurably awesomeminmay is immeasurably awesomeminmay is immeasurably awesomeminmay is immeasurably awesome

Oct 14, 2013, 04:25 PM
minmay is offline
Reply With Quote
Oops, I knew I'd forgotten at least one.
DoubleGJ DoubleGJ's Avatar

JCF Member

Joined: Sep 2002

Posts: 3,049

DoubleGJ has disabled reputation

Oct 15, 2013, 12:41 AM
DoubleGJ is offline
Reply With Quote
http://modulaatio.com/quasian/releas...arch=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?)
__________________
"So unless I overwrote my heart with yours, I think not. But I might have." - Violet CLM

Two Games Joined releases:
Control / Splinter (twin singles)
|| Ballistic Bunny (EP)
||
Beyond (maxi-single)
|| Beyond: Remixed (remix EP)
|| Inner Monsters OST (mini-album)
||
Shadows (album)
Torkell Torkell's Avatar

Stealth Admin

Joined: Jul 2004

Posts: 2,147

Torkell is a forum legendTorkell is a forum legendTorkell is a forum legend

Oct 15, 2013, 10:11 AM
Torkell is offline
Reply With Quote
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.
__________________
-- Torkell



Jojo

JCF Member

Joined: Dec 2006

Posts: 38

Jojo is doing well so far

Feb 20, 2014, 03:26 PM
Jojo is offline
Reply With Quote
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:
Quote:
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 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.

Quote:
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

JCF Member

Joined: Aug 2002

Posts: 1,181

minmay is immeasurably awesomeminmay is immeasurably awesomeminmay is immeasurably awesomeminmay is immeasurably awesomeminmay is immeasurably awesome

Feb 21, 2014, 10:49 AM
minmay is offline
Reply With Quote
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

JCF Member

Joined: Mar 2001

Posts: 1,217

Another Jazz 2 fan has disabled reputation

Aug 27, 2015, 09:07 PM
Another Jazz 2 fan is offline
Reply With Quote
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).
__________________

Proud to be an old-timer! Rarely active, but Jazz Jackrabbit will always be in my heart.

Check out my War Tavern story, The Life of Jason Jackrabbit! [UPDATE - yeah, it died in 2002, but it was fun!]
Current Projects: Devan's Secret Weapon - yes, I still intend to release this some day. Got a lot of really great stuff done, it's going to be awesome!
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On

Forum Jump

All times are GMT -8. The time now is 06:23 PM.