Repository navigation
Formats
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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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 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.