Skip to content

Formats

Adam Waldenberg edited this page Oct 10, 2026 · 3 revisions

paula formats prints what plays, and a file named the way Modland names them, MOD.tune, counts as well. This page goes through the formats machine by machine: what each is, the extensions Paula knows it by and what plays it.

Three things do the playing. Tracker modules and Commodore 64 tunes play through JavaMod, Daniel Becker's pure-Java player with its libsidplay2 port, vendored under lib/ with the fixes in tools/javamod-*.patch. Atari 8-bit tunes play through ASAP, Piotr Fusik's POKEY and 6502 emulation. The rest is played by replayers written for Paula, each with a scope and muting per voice; the projects they follow are credited on the Licenses page.

Amiga

Music Extensions
ProTracker, Soundtracker, NoiseTracker and Mod's Grave modules .mod .stk .nst .wow
OctaMED modules .med .mmd .mmd0 .mmd1 .mmd2 .mmd3 .mmdc
DigiBooster Pro modules .dbm
AHX and HivelyTracker modules .ahx .thx .hvl

ProTracker modules play through JavaMod. The other three have replayers of Paula's own: DigiBooster Pro and AHX and HivelyTracker modules sound sample for sample as libdigibooster3 and HivelyTracker render them, and OctaMED modules of every kind follow the MED player of libxmp.

PC

Music Extensions
Fast Tracker modules .xm
Scream Tracker modules .s3m .stm .stx .sts
Impulse Tracker and OpenMPT modules .it .mptm
MultiTracker modules .mtm
Farandole Composer modules .far
Composer 669 and UNIS 669 modules .669
X-Tracker modules .dmf
UltraTracker modules .ult
MO3 compressed modules .mo3

Fast Tracker, Scream Tracker, Impulse Tracker, MultiTracker and Farandole modules play through JavaMod, and so, at one remove, do the last two: an UltraTracker module is rewritten as an Impulse Tracker one the way OpenMPT does it, and an MO3 file is unpacked back into the module the tracker wrote. Composer 669 modules have a replayer of Paula's own that follows what OpenMPT found the original to do, and X-Tracker modules one timed in fractions of a row as the tracker's own effect descriptions give it.

Commodore 64

Music Extensions
SID tunes .sid .psid .rsid
Programs .prg .p00 .c64

Both play through the libsidplay2 port in JavaMod, for the length in the High Voltage SID Collection's database, fetched on first use, or three minutes when unlisted. A 1541 disk or tape image is opened for the programs on it.

Atari 8-bit

Music Extensions
SAP tunes .sap
Chaos Music Composer, with its 3/4, Rzog, stereo and DoublePlay variants .cmc .cm3 .cmr .cms .dmc
Delta Music Composer .dlt
Music ProTracker, with its sampled and DoublePlay variants .mpt .mpd .md1 .md2 .d8 .d15
Raster Music Tracker .rmt
Theta Music Composer 1.x and 2.x .tmc .tm8 .tm2
Future Composer .fc

All of them play through ASAP, for the length a TIME tag gives or three minutes without one.

Atari ST and Falcon

Music Extensions
FlexTrax modules .flx
YM register recordings .ym

A FlexTrax module is a ProTracker module with the settings of the reverb and delay the Falcon's DSP added kept after the samples. The module plays through JavaMod and the two effects through Paula's own; the format is described in docs/flextrax-format.md. A YM file is what a tune wrote to the ST's YM2149, taken down at each interrupt, and plays on the emulated chip the ZX Spectrum formats share.

ZX Spectrum

Music Extensions
SoundTracker modules .stc
Pro Tracker 2 modules .pt2
Pro Tracker 3 and Vortex Tracker II modules .pt3
Pro Sound Creator modules .psc
AY register recordings .psg .vtx
Tapes with a beeper or AY music engine .tap

The four trackers have replayers written for Paula after those of ZXTune, sounding through an AY-3-8910 emulated after ayumi. A recording is what a tune wrote to the chip, taken down at each interrupt rather than kept as patterns, and plays on the same chip.

A tape holds a program, not a tune, so Paula runs it: the tape's BASIC loader is read for the machine code it starts, and that code runs on an emulated 48K or 128K Spectrum (a Z80 after JSpeccy, with the ULA's memory and port delays) while the speaker and the AY are recorded. This plays the beeper tunes of the 1-bit compos and the AY players that run on their own interrupt. The machine has no ROM: the ROM area holds a stub that answers the interrupt and noise for the engines that read it as data, and a program that calls a ROM routine ends there. A tape that loops or fades out plays to a three-minute limit or until it falls silent for three seconds. A player that BASIC calls once a frame (RANDOMIZE USR with PAUSE 1 in a loop) is not played, since Paula does not run BASIC, and .tzx tapes and snapshots are not read.

Any machine

Audio Extensions
MPEG audio .mp1 .mp2 .mp3
FLAC .flac
Ogg Vorbis .ogg .oga
Monkey's Audio .ape .apl .mac
Wave, AIFF and AU .wav .wave .aif .aiff .aifc .au .snd

These are decoded by JLayer, jFLAC, jOrbis and jMAC and resampled to the engine's rate; --rate 44100 hands a CD-rate file through untouched.

Archives

Archives are opened by what they hold rather than what they are called, as deep as they go, and a module crunched with XPK or PowerPacker keeps its own name. In the party archives the file named after the entry is the one played.

Archive Extensions
Zip .zip
7z .7z
RAR .rar
LHA .lha .lzh
LZX .lzx
gzip .gz
PowerPacker crunched modules .pp or the module's own
XPK crunched modules the module's own
Unreal music packages .umx
Commodore 1541 disk and tape images .d64 .t64

Amiga ADF and DMS disk images and ARJ and ACE archives are known but not read; the browser marks a release that comes as one (no reader).

A release can hold several playable versions of one tune, a tape, a tracker module and a recording of them. The tape or module plays first and a recording last. Once the release is downloaded, the details box lists the formats, for example TAP/[XM]/MP3, with the one playing in brackets, and the browser row carries the same tag on a terminal 80 columns wide or more. t switches the playing song to the next format, from the start, from the player or the browser. The choice is kept for the entry in ~/.local/share/paula/preferred-formats.json and plays first the next time. A format that will not play is left out of the cycle for the rest of the session. A release with one format shows no tag, and t says so.

Clone this wiki locally