What is the STM (.stm) Audio File Format? Features, Architecture, and How to Open It
In the early days of PC multimedia, computers lacked dedicated, high-performance sound hardware. While Commodore Amiga users enjoyed 4-channel stereo PCM playback through the custom Paula chip as early as 1985, IBM PC compatibles were largely limited to primitive, single-tone internal PC speakers.
That changed in the early 1990s with the arrival of expansion cards like the AdLib and Creative Labs Sound Blaster. Eager to bring the tracker music culture from the Amiga to MS-DOS, Finnish demogroup Future Crew—spearheaded by developer Sami Tammilehto (“Psi”)—released Scream Tracker in 1990, followed by the landmark Scream Tracker 2 (ST2) in 1992.
Along with Scream Tracker 2 came the Scream Tracker Module format, represented by the .stm file extension. As the direct predecessor to the legendary .s3m format, the STM format was instrumental in laying the groundwork for digital music production and tracker-based sound design on the PC.
What is an STM File?
An .stm file is a tracker-based sequenced music file that stores both digital instrument samples and musical arrangement instructions within a single binary payload.
Unlike modern streaming formats (such as MP3 or AAC) that store continuous digital waveforms, an STM file bundles:
Digital Audio Samples: Raw 8-bit mono PCM recordings of drum hits, synth basslines, and instrument stabs.
Pattern-Based Sequencer Matrices: Chronological grids of note commands that instruct the player software when to trigger a sample, at what pitch, and with what playback effect.
When an STM file is played, the audio player software’s software mixer renders the sound in real time. Because the format stores reusable sound snippets rather than pre-rendered audio streams, full multi-minute songs fit into file footprints typically measuring between $30\text{ KB}$ and $300\text{ KB}$.
Detailed Features of Scream Tracker 2 STM
1. 4-Channel Polyphony (The Amiga MOD Bridge)
Scream Tracker 2 was built specifically to port the production techniques of Commodore Amiga 4-channel ProTracker (.mod) files to the MS-DOS platform. An STM file provides four discrete digital audio channels, allowing a composer to dedicate tracks to drums, bassline, rhythm chords, and lead melodies simultaneously.
2. Tailored for 16-Bit Real-Mode DOS
Unlike Amiga computers which featured a flat 32-bit linear address space, early PCs running MS-DOS operated under the segmented memory constraints of real mode (the $640\text{ KB}$ barrier). The STM format was architected with 16-byte aligned “parapointers” to ensure that 8-bit sound samples could be addressed directly and mixed quickly with minimal 80286 and 80386 CPU overhead.
3. Integrated Effect Commands
STM introduced basic tracker effect commands that helped shape the sound of early PC demoscene music and DOS shareware games:
Portamento: Gliding smoothly between pitches.
Volume Slides: Gradual dynamic fades across pattern rows.
Vibrato: Oscillating note pitch for expressive leads.
Sample Offset: Triggering a sample midway through its waveform to create dynamic stutter or rhythmic breakbeat variations.
4. 8-Bit Unsigned PCM Sample Banks
The format stores up to 31 distinct instruments. All samples are recorded in uncompressed 8-bit unsigned PCM audio format, matching the exact native dynamic range and DAC requirements of the original 8-bit Sound Blaster 1.0, 2.0, and Sound Blaster Pro cards.
5. Fixed 64-Row Patterns
STM files divide the song arrangement into patterns of exactly 64 rows. This fixed-length pattern architecture made memory calculation predictable and kept file structures lean for real-time DOS sound engines.
Key Characteristics of STM (.stm)
| Characteristic | Specification / Detail |
|---|---|
| File Extension | .stm |
| Format Name | Scream Tracker 2 Module |
| Primary Developers | Sami Tammilehto (“Psi”) / Future Crew |
| Header Identifier | !Scream! or BMOD2STM (located at offset 0x14) |
| Tracker Identification | !Scream! (ST2) / SWAVE 1.0 |
| Active Channels | 4 digital PCM channels |
| Sample Storage | Up to 31 instrument samples |
| Sample Format | 8-bit unsigned mono linear PCM |
| Pattern Dimensions | Fixed 64 rows per pattern (up to 64 patterns total) |
| Stereo Architecture | Hard-panned left/right stereo or mono playback |
| Typical File Size | $30\text{ KB}$ to $300\text{ KB}$ |
How to Create and Compose STM Files
Composing STM modules today can be done using vintage emulation or capable modern tracking software.
Method 1: Using OpenMPT (Open ModPlug Tracker)
OpenMPT provides the easiest and most modern environment for handling STM files:
Download and launch OpenMPT.
Select File > New, or open an existing
.modor.s3mfile.Import your 8-bit mono instrument samples in the Samples tab.
Compose your song across the four pattern tracks.
Select File > Export as… and choose Scream Tracker 2 (STM). OpenMPT will automatically format the memory parapointers and limit the project to 31 sample slots.
Method 2: Running Scream Tracker 2.x in DOSBox
For demoscene enthusiasts wanting an authentic vintage 1990s authoring workflow:
Install and launch DOSBox.
Mount your local working directory as a virtual drive.
Launch
ST2.EXE(Scream Tracker version 2.2 or 2.3).Configure sound output for Sound Blaster (port
220, IRQ7, DMA1).Compose your tracks using the original DOS keyboard interface and save directly to
.stm.
How to Open and Play STM Files
Because STM files rely on a pattern playback routine rather than continuous audio streaming, playback requires a tracker-aware media player:
XMPlay (Windows): One of the most accurate module players available. XMPlay handles STM files cleanly, emulating the timing quirks and sample interpolation of original DOS replay routines.
foobar2000 (Windows): By installing the foo_openmpt or foo_dumb component, foobar2000 gains native support to play, tag, and organize
.stmfiles.VLC Media Player (Cross-Platform): Modern desktop releases of VLC include
libmodplug, enabling direct drag-and-drop playback of.stmfiles without third-party plugins.AIMP (Windows / Android): Offers native out-of-the-box playback for Scream Tracker modules, complete with a graphic visualizer and playlist support.
Web Browsers: Repositories like The Mod Archive feature in-browser WebAudio/WebAssembly players that render STM files directly without downloading separate desktop software.
How to Convert STM to MP3 or WAV
If you want to play STM songs on portable devices or use them inside a video editor:
Open the
.stmfile in OpenMPT or XMPlay.In OpenMPT, navigate to File > Export to Audio.
In XMPlay, right-click the track and select Options and stuff > Output, then toggle the writer output to WAV or MP3.
Start playback or export to render the tracker’s real-time synthesis into a standard digital audio file.
Frequently Asked Questions (FAQ)
What does STM stand for?
STM stands for Scream Tracker Module, the native sequenced audio file format created for Scream Tracker 2.
What is the primary difference between STM and S3M?
STM is an early 4-channel format supporting only 8-bit PCM samples, while the newer S3M format supports up to 16 PCM channels, flexible stereo panning, and AdLib FM synthesis.
Can I play an STM file using Windows Media Player?
Standard default players like Windows Media Player do not support STM files natively unless you install a specialized DirectShow tracker codec.
Why are STM files so small?
STM files do not store a pre-recorded song waveform; they only store short instrument samples alongside sequencing instructions that tell the player when to trigger each note.
Where can I find free STM tracker modules to download?
Thousands of vintage STM modules from the early PC demoscene are preserved and free to download at The Mod Archive (modarchive.org).
Reference URLs & Official Resources
The Mod Archive (STM File Search & Database): https://modarchive.org/
OpenMPT Documentation (STM File Details): https://wiki.openmpt.org/
Shikadi Modding Wiki - STM Format Specification: https://www.shikadi.net/moddingwiki/STM_Format
Future Crew History & Production Archive: https://defacto2.net/groups/future-crew
Hydrogenaudio Knowledgebase - Tracker Module Formats: https://wiki.hydrogenaud.io/index.php?title=Module_file