# Module file

Module file (MOD music, tracker music) is a family of music file formats originating from the MOD file format on Amiga systems used in the late 1980s. Those who produce these files (using the software called music trackers) and listen to them form the worldwide MOD scene, a part of the demoscene subculture.
The mass interchange of "MOD music" or "tracker music" (music stored in module files created with trackers) evolved from early FIDO networks. Many websites host large numbers of these files, the most comprehensive of them being the Mod Archive.
Nowadays, most module files, including ones in compressed form, are supported by most popular media players such as VLC, Foobar2000, Exaile and many others (mainly due to inclusion of common playback libraries such as libmodplug for gstreamer).

## Structure

Module files store digitally recorded samples and several "patterns" or "pages" of music data in a form similar to that of a spreadsheet. These patterns contain note numbers, instrument numbers, and controller messages. The number of notes that can be played simultaneously depends on how many "tracks" there are per pattern. And the song is built of a pattern list, that tells in what order these patterns shall be played in the song.
A disadvantage of module files is that there is no real standard specification in how the modules should be played back properly, which may result in modules sounding different in different players, sometimes quite significantly so. This is mostly due to effects that can be applied to the samples in the module file and how the authors of different players choose to implement them. However, tracker music has the advantage of requiring very little CPU overhead for playback, and is executed in real-time.

## Popular formats

Each module file format builds on concepts introduced in its predecessors.

### The MOD format (.MOD)

    The MOD format was the first file format for tracked music. A very basic version of this format (with only very few pattern commands and short samples supported) was introduced by Karsten Obarski’s Ultimate Soundtracker in 1987 for the Amiga. It was designed to use 4 channels and fifteen samples. Ultimate SoundTracker was soon superseded by NoiseTracker and Protracker, which allowed for more tracker commands (effects) and instruments. Later, variants of the MOD format that appeared on the Personal Computer extended the number of channels, added panning commands (the Amiga’s four hardware channels had a pre-defined stereo setup) and expanded the Amiga’s frequency limit, allowing for more octaves of notes to be supported.
    Arguably one of the most widespread tracker formats (also due to its use in many computer games and demos), it is also one of the simplest to use, but also only provides few pattern commands to use.

### The Oktalyzer format (.OKT)

    This was an early effort to bring eight-channel sound to the Amiga. Later replayers have improved on the sound quality attainable from these modules by more demanding mixing technologies.

### The MultiTracker format (.MTM)

    Produced by American Demoscene group Renaissance, MultiTracker brought up to 32-channel sound to the PC tracker community. Songs that took full advantage of the 32 simultaneous channels were extremely taxing to typical computers of the era.

### The MED/OctaMED format (.MED)

    This format is very similar to sound/pro/noisetracker, but the way the data is stored is different. MED was not a direct clone of SoundTracker, and had different features and file formats. OctaMED was an eight-channel version of MED, which eventually evolved into OctaMED Soundstudio (which offers 128-channel sound, optional synth sounds, MIDI support and many other high-end features).

### The AHX format (.AHX)

    This format is a synth-tracker. There are no samples in the module file, rather descriptions of how to synthesize the required sound. This results in very small audio files (AHX modules are typically 1k–4k in size), and a very characteristic sound. AHX is designed for music with chiptune sound. The AHX tracker requires Kickstart 2.0 and 2 Mb RAM memory.

### The ScreamTracker 3 format (.S3M)

    The Scream Tracker 3 S3M format added sample tuning (defining the exact frequency of the middle C for samples), increased the number of playback channels, made use of an extra column specifically for volume control (which was extended by other trackers to handle panning commands as well), and compressed pattern data for smaller file sizes. It is also one of the few widespread formats that support both sample playback and realtime synthesis (through the OPL2 chip) at the same time.

### The FastTracker 2 format (.XM)

    With the XM format, FastTracker 2 introduced the concept of "instruments", which applied volume and panning envelopes to samples. It also added the ability to map several samples to the same instrument for multi-sampled instruments or drum sets. XM uses instrument-based panning – instrument numbers in patterns always reset the channel’s panning to the current sample's initial panning. It uses MOD effect command letters, plus a few of its own for more sound control. The composer can define initial tempos and speeds; provide envelopes to samples by assigning them to instruments; set sample looping and apply automatic sample vibrato oscillation.

### The Impulse Tracker format (.IT)

    Impulse Tracker introduced the IT format, which, in comparison to the XM format, allows instruments to also specify the transposition of assigned samples depending on the note being played, applying resonant filters to samples, and defining “New Note Actions” (NNAs) for instruments to release playing notes on a pattern channel while a new note is already playing, which helps to keep the number of pattern channels to while still being able to have a high polyphony. Like S3M files (and contrary to XM files), panning is channel-based, meaning that channels have an initial pan position which can be overridden by panning commands or instruments’ and samples’ default panning settings.

## Scene

The process of composing module files, known as tracking, is a skillful activity that involves a much closer contact with musical sound than conventional composition, as every aspect of each sonic event is coded, from pitch and duration to exact volume, panning, and laying in numerous effects such as echo, tremolo and fades. Once the module file is finished, it is released to the tracker community. The composer uploads the new composition to one or more of several sites where module files are archived, making it available to their audience, who will download the file on their own computers. By encoding textual information within each module file, composers maintain contact with their audiences and with one another by including their email addresses, greetings to fans and other composers, and virtual signatures.
Although trackers can be considered to have some technical limitations, they do not prevent a creative individual from producing music that is indiscernible from professionally created music. The demosceners were focused on pushing the limits of technology. Many tracker musicians gained international prominence within MOD software users and some of them went on to work for high-profile video game studios, or began to appear on large record labels. Notable artists include Andrew Sega, Purple Motion, Darude, Alexander Brandon, Peter Hajba, Axwell, Venetian Snares, Jesper Kyd, TDK, Thomas J. Bergersen, Markus Kaarlonen, Michiel van den Bos and Dan Gardopée. It is also widely known that many of Aphrodite's early releases were made on two synchronized Amigas running OctaMED, and that James Holden made majority of his early material in Jeskola Buzz. Deadmau5 and Erez Eisen of Infected Mushroom have both used Impulse Tracker in their early career.

## Music disk

Music disk, or musicdisk, is a term used by the demoscene to describe a collection of songs made on a computer. They are essentially the computer equivalent of an album. A music disk is typically packaged in the form of a program with a custom user interface, so the listener does not need other software to play the songs. The "disk" part of the term comes from the fact that music disks were once made to fit on a single floppy disk, so they could be easily distributed at demo parties. On modern platforms, music disks are usually downloaded to a hard disk drive.
Amiga music disks usually consist of MOD files, while PC music disks often contain multichannel formats such as XM or IT. Music disks are also common on the Commodore 64 and Atari ST, where they use their own native formats.
Related terms include music pack, which can refer to a demoscene music collection that does not include its own player, and chipdisk, a music disk containing only chiptunes, which have become popular on the PC given the large size of MP3 music disks.

## Software module file players and converters
### Players

* XMPlay (Windows), from Un4seen Developments, which also created the MO3 format
* OZMod (Java, cross-platform)
* Winamp (Windows)
* AIMP
* BZR Player (Windows)
* OpenCubicPlayer (Linux/BSD port is actively maintained)
* XMP (Linux, Android)
* foobar2000 (Windows) (with foo_dumb or foo_openmpt plugin)
* Mod4Win (Windows), one of the first Windows Mod player
* K-Multimedia Player (Windows)
* Audacious (Linux, Windows)
* XMMS and XMMS2 (Linux)
* Music Player Daemon (Linux)
* DeaDBeeF (Linux, Windows, Android)
* MikMod (Linux, macOS, Windows, DOS)
* Modo Computer Music Player (Android)
* DeliPlayer (Windows)
* Amigaamp (Amiga)
* JavaMod (Linux, macOS, Windows)
* VLC

### Converters and trackers

* Cog (macOS)
* Audacious (Linux)
* OpenMPT (Windows)
* SunVox (Windows, macOS, Linux, Android, iOS)
* MilkyTracker (Windows, macOS, Linux, Android)
* Schism Tracker (Windows, macOS, Linux)
* Protracker (Amiga, Windows, macOS, Linux)
* OctaMED (Amiga)
* Renoise (Windows, macOS, Linux)
* Unix Amiga Delitracker Emulator (Linux)
* HoustonTracker (TI-82/83/84)
* Radium (Windows, macOS, Linux)

### Libraries

* libmikmod - maintained in MikMod project
* libmodplug - maintained in ModPlug XMMS Plugin project
* libopenmpt - maintained in OpenMPT project
* libBASS - developed by Un4seen Developments and used in XMPlay
* libxmp
* uFMOD