# FastTracker 2

FastTracker 2 (also referred to as FastTracker II) is a music tracker created by Fredrik "Mr. H" Huss and Magnus "Vogue" Högdahl, two members of the demogroup Triton (who later founded Starbreeze Studios) who set about releasing their own tracker after breaking into the scene in 1992 and winning several demo competitions. The source code of FastTracker 2 is written in Pascal using Borland Pascal 7 and TASM. The program works natively under MS-DOS.

## History

In 1993, Triton released FastTracker. This tracker was able to load and save standard four channel MOD files, as well as extended MOD files with six or eight channels (identical to standard MOD files, aside from the extra channel data and ID markers "6CHN" or "8CHN"). It was only compatible with Creative Labs' SoundBlaster series of sound cards, which were most popular on the PC at that time. The whole editor was a single 43 KiB DOS executable.
Through 1994, the musicians in Triton released some songs in a new multichannel "XM" format, accompanied by a pre-release, standalone player. In November 1994, FastTracker 2 was released to the public, with support for the Gravis Ultrasound sound card.

### Discontinuation

The last stable release of FastTracker 2 was version 2.08, released in August 1997. A newer version 2.09 was under test as closed beta and became available to the public by Andreas Viklund's website in 1999. This version had a few new usability additions, such as the possibility to exit previously "stuck" windows by only using the mouse, but broke support for the Gravis Ultrasound card. While not an official release it was made later available also from Starbreeze's website.
On May 23, 1999, Starbreeze productions announced on their website that "FT2 has been put on hold indefinitely. [...] If this was an ideal world, where there was infinite time and no need to make a living, there would definitely be a multiplatform Fasttracker3. Unfortunately this world is nothing like that," signed by Vogue.

### Legacy

After the announcement that support and development for FT2 would be stopped, Ruben Ramos Salvador (BakTery) started working on a FastTracker 3 that is now known as Skale Tracker, available for both Windows, Linux and online. In later years many other trackers tried to follow up on the legacy of FT2, a notable example being MilkyTracker, with special playback modes available for improved Amiga Protracker 2/3 compatibility. See also the Clone section below.
After development of FT2 was discontinued, a project led by developer Olav Sørensen to accurately re-implement FT2 in C for modern platforms using SDL 2 was started. Sørensen stated that he based his clone partly on the original FT2 source code. On April 22, 2017, an alpha build of the FastTracker II clone was released on the author's homepage for Windows and macOS. In July 2018, he released the source code of his FT2 continuation, later under the 3-clause BSD license, along with compile instructions for Linux on his website. Shortly after the release, an official FreeBSD port was created. The code is now available for collaboration on GitHub

## Architecture and features

The FT2 interface is largely inspired by the looks of Amiga's Protracker. The screen consists of a pattern editor in the lower half, while the upper half features an instrument selector on the right, and the general module settings and some oscilloscopes. The pattern editor can be switched to sample/instrument editors. The program also features a little Nibbler clone and in-software documentation for all the features.

### Patterns

Patterns are essentially sheets of music where the musician is able to arrange the actual musical score. A pattern consists of several rows (64 by default, 1024 maximum) and is divided to columns ("tracks"). Each row can have one note in every track. A note can look like the following:
This means the note is a C#-note on the chromatic scale, played at the 4th octave (according to the scientific pitch notation), with instrument number 2. The next column is the volume setting on a 00$_H$-40$_H$ hexadecimal scale, and the last column enables a variety of effects to be applied to the sound (in this case, retriggering).
A song consists of a collection of different patterns which can be played in a user-defined order to create the final song structure.

### Samples

Samples are raw PCM sound data to be played back at various frequencies, much the way normal musical samplers do. Samples can have a loop start and end point, either repeated continuously or a "ping-pong loop", which essentially means the sample plays in reverse as soon as it hits the loop start or end (this is also called a "bidirectional loop"). The musicians are able to either record samples or load existing ones, manipulate them by cutting and/or pasting parts, or just draw them by hand. There's also a feature to crossfade the sample, thus allowing the loop points to appear seamless.

### Instruments

Instruments are essentially arrays of samples with additional convenience features. A musician can assign different samples to different pitches of the sound, thus eliminating the possibility of a sample sounding bad if played too high or too low. Instruments support various loopable envelopes to be set on either the sound volume or the stereo panning, as well as built-in vibrato. It is also possible to set the generic settings of the instrument here: fine-tuning, default volume, default panning and relative starting note to C-4.
FT2 can get input from a normal PS/2 keyboard and make a live record with it (in the QWERTY keyboard layout, "q" would map to C, "2" would map to C#, "w" would map to D, etc.). FT2 was popular with many musicians who didn't have MIDI-compatible keyboards as they could experience live recording without any equipment other than a PC running DOS.

### Effects

Each track has an "effects column" which allows the addition of effects such as arpeggio, portamento, vibrato and volume slides. Some control over the song structure can be handled in this column too, with commands for looping and breaking from and delaying patterns, or retriggering, cutting and delaying notes. In addition, a "volume column" allows additional control over volume slides, vibrato, panning and tone portamento.
Full list of Effect types (.MOD/.XM) and compatibility with trackers:
| Effect type | OpenMPT | FastTracker 2 | MilkyTracker | Protracker | BeRoTracker |
| 0xx Arpeggio | Yes | Yes | Yes | Yes | Yes |
| 1xx Portamento Up | Yes | Yes | Yes | Yes | Yes |
| 2xx Portamento Down | Yes | Yes | Yes | Yes | Yes |
| 3xx Tone Portamento | Yes | Yes | Yes | Yes | Yes |
| 4xx Vibrato | Yes | Yes | Yes | Yes | Yes |
| 5xx Volume Slide + Tone Portamento | Yes | Yes | Yes | Yes | Yes |
| 6xx Volume Slide + Vibrato | Yes | Yes | Yes | Yes | Yes |
| 7xx Tremolo | Yes | Yes | Yes | Yes | Yes |
| 8xx Set Panning | Yes | Yes | Yes | Yes | Yes |
| 9xx Set Offset | Yes | Yes | Yes | Yes | Yes |
| Axx Volume Slide | Yes | Yes | Yes | Yes | Yes |
| Bxx Position Jump | Yes | Yes | Yes | Yes | Yes |
| Cxx Set Volume | Yes | Yes | Yes | Yes | Yes |
| Dxx Pattern Break | Yes | Yes | Yes | Yes | Yes |
| E1x Fine Portamento Up | Yes | Yes | Yes | Yes | Yes |
| E2x Fine Portamento Down | Yes | Yes | Yes | Yes | Yes |
| E3x Glissando Control | Yes | Yes | Yes | Yes | Yes |
| E4x Vibrato Waveform | Yes | Yes | Yes | Yes | Yes |
| E5x Set Finetune | Yes | Yes | Yes | Yes | Yes |
| E6x Pattern Loop | Yes | Yes | Yes | Yes | Yes |
| E7x Tremolo Waveform | Yes | Yes | Yes | Yes | Yes |
| E8x Set Panning | Yes | Yes | Yes | Yes | Yes |
| E9x Retrigger Note | Yes | Yes | Yes | Yes | Yes |
| EAx Fine Volume Slide Up | Yes | Yes | Yes | Yes | Yes |
| EBx Fine Volume Slide Down | Yes | Yes | Yes | Yes | Yes |
| ECx Note Cut | Yes | Yes | Yes | Yes | Yes |
| EDx Note Delay | Yes | Yes | Yes | Yes | Yes |
| EEx Pattern Delay | Yes | Yes | Yes | Yes | Yes |
| EFx Set Active Macro | Yes | No | No | No | Yes |
| Fxx Set Speed/Tempo | Yes | Yes | Yes | Yes | Yes |
| Gxx Set Global Volume | Yes | Yes | Yes | No | Yes |
| Hxx Global Volume Slide | Yes | Yes | Yes | No | Yes |
| Kxx Key Off | Yes | Yes | Yes | No | Yes |
| Lxx Envelope Position | Yes | Yes | Yes | No | Yes |
| Pxx Panning Slide | Yes | Yes | Yes | No | Yes |
| Rxx Retrigger Note | Yes | Yes | Yes | No | Yes |
| Txx Tremor | Yes | Yes | Yes | No | Yes |
| Wxx Custom Sync Event | No | Yes | No | No | Yes |
| X1x Extra Fine Portamento Up | Yes | Yes | Yes | No | Yes |
| X2x Extra Fine Portamento Down | Yes | Yes | Yes | No | Yes |
| X5x Panbrello Waveform | Yes | No | No | No | Yes |
| X6x Fine Pattern Delay | Yes | No | No | No | Yes |
| X9x Sound Control | Yes | No | No | No | Yes |
| XAx High Sample Offset | Yes | No | No | No | Yes |
| Yxx Panbrello | Yes | No | No | No | Yes |
| Zxx MIDI Macro | Yes | No | No | No | Yes |
| \xx Smooth MIDI Macro | Yes | No | No | No | Yes |
| #xx Parameter Extension | Yes | No | No | No | No |

### Files

FastTracker 2 supports a variety of file formats, though often only two were used by musicians: XM (Extended Module) and XI (Extended Instrument). XM was and still is one of the most popular module formats nowadays, because of its compact and well compressible file structure.
MOD format supported 4 channels maximum in a song, XM format, 32 channels maximum in a song, though there could be multiple instrument on one channel. ( from Channel n°0 to channel n°31 )
Some players — such as ModPlug Player — support the zip-compressed .XMZ and .MDZ formats, which are simple ZIP archives that contain a .XM or .MOD file respectively.
The ADPCM-compressed XM extension is an XM subformat introduced in ModPlug tracker and player. It has the same XM file format structure, except that at least one of the samples is compressed in 4-bit ADPCM format. An ADPCM-compressed sample is almost two times smaller than its uncompressed equivalent. The drawback is the sound quality – significant distortion may arise when using ADPCM.
Another known extension is OXM – Vorbis-compressed XM. It preserves the original XM file structure, except the samples, which are compressed using the Vorbis codec.
The Stripped XM file format is another XM subformat. It was introduced in uFMOD in 2006. A Stripped XM file is smaller than a regular XM, because it uses a more compact set of headers. The audio content of the XM file is left untouched.
Even more non-standard XM extensions exist. For example, some trackers introduce undocumented effect commands used as triggers for software events, Text2Speech (TTS) metadata, watermarks and so on.

### Compatibility

FT2 ran with a custom made DOS 32-bit extender and it supports the Gravis Ultrasound, Sound Blaster, Covox, and the simple PC speaker. This rendered the software rather flaky to use nowadays, as the recent Windows versions generally do not allow DOS applications to access hardware directly, let alone the fact that most of those compatible cards are built for ISA slots, which are absent from recent motherboards. Due to this, hardcore musicians who still want to use FT2 often build "old school" PCs with the optimal (and nowadays rather cheap) hardware for the tracker, just to be able to track with it again.
An alternative way of getting FT2 to run is by using DOSBox — this, however, as accurate as is, has speed and latency problems, and one needs quite a muscular PC to be able to use it as comfortably as on a native environment. The release of DOSBox 0.7 in March 2007 substantially improved speed/performance problems. Other methods of usage include GUSEMU or VDMSound.

## Reception and impact

FT2 got broadly popular in the demoscene and among tracker musicians in the late 1990s. FT2's biggest "rivals" in the scene were Scream Tracker and, in later years, Impulse Tracker. "FT2 vs IT" is a common and still ongoing debate among musicians, usually involving IT users complaining about FT2's mouse interface, while FT2 users praise that same interface, and point out that every mouse feature has a keyboard shortcut as well.

### Clones

The FT2 inspired multiple later trackers in UX, design and technical capabilities and became therefore the starting point of a family of clones. Notably here, Ruben Ramos Salvador's clone FastTracker 3 (which later became Skale Tracker) and MilkyTracker. MilkyTracker is cross platform software and provides nearly all functionality available in the original FT2, with various other features. The GUI looks close, but intentionally different from the original. The shareware program Renoise also takes a portion of FT2's basic GUI and featureset-design, even though there are various major changes in its concept. Another early FastTracker 2-compatible tracker for windows was ModPlug Tracker (later OpenMPT), a tool which was also compatible with many other contemporary DOS trackers. SoundTracker (not to be confused with Ultimate Soundtracker) is a free (GPL-licensed) FT2-style tracker program for Unix-like operating systems. For many years, it was one of the very few mature Unix-based tracker programs.
Recently, a modern clone named "FastTracker II clone" was released; it is written in C and uses SDL 2 to allow for easier porting. Though it runs on modern operating systems, it is otherwise nearly identical in functionality, with hotkeys and visuals accurate to the original.

### Professional usage

Video game developer Nicklas Nygren used Fast Tracker 2 (e.g. Knytt Stories) to compose his early video game music. Demoscener and video game soundtrack composer Matthias Le Bidan used FT2 for the music of the free and open source video games Frozen Bubble and Pathological. The FT2-based soundtrack of Frozen Bubble won The Linux Game Tome's Best Sound/Music Award in 2003. Lee Jackson used FT2 to compose the MOD files used in the Apogee Software game, Stargunner.
Several commercial computer games by Epic Games like Unreal and Unreal Tournament used the FastTracker 2 XM format (additionally to other mod formats) encapsulated in a "UMX" Container, supported by the used Galaxy Sound Engine. Jarkko Rotstén also uses the XM format for 3D Realms's Ion Fury soundtrack.
FastTracker 2 has also been used in the "dance" music scene of the 1990s and early 2000s: Gabber, Speedcore and breakcore producers were using it, including Deadnoise, Noisekick, Neophyte.