The Protracker File Format

Also known as: PS16


Original Documentation

The Protracker Studio 16 Modules are yet another digital music format.
The Protracker modules can have up to 255 different patterns and a length of
up to 255 patterns with 31 instruments. The samples can only have a size of
up to 64K, there is a maximum of 16 tracks supported.
The header of each MOD file looks like this :
OFFSET              Count TYPE   Description
0000h                   5 char   Header string
								 ID='PS16',254
0005h                  75 char   Song name, ending with ^Z so that if typing
								 the file will result in PS16 <SongName>
0050h                   1 byte   File type :
								  0 - Module with patterns and samples
								  1 - Song with patterns but without samples
0051h                   1 dword  Offset of comment field from start of file.
								 Zero if no commend is stored.
0055h                   1 byte   Format version byte (0)
0056h                   1 byte   Number of patterns in the file
								 ="PAT"
0057h                   1 dword  Total size of all patterns in bytes, stored
								 for quick disk reads.
005Bh                   1 byte   Songlength, number of sequences.
005Ch                 128 byte   Sequencing information for file
00CCh                  31 rec    Sample information
						1 byte   Sample flags, bitmapped :
								   0 - synthesized / digital
								   1 - Waveform / FM
									   (only if bit 0 is set)
								   2 - 16 bit / 8 bit
						 1 byte  Default volume for the sample (0-64)
						 1 byte  Sample fine tuning (signed nibble)
						 1 dword Sample length - Protracker does only support
								 samples with a size less than 64K.
						 1 dword Sample loop start
						 1 dword Sample loop length
						 1 word  Default playback frequency for C2
								 Can be used to fine tune a sample.
00CCh+               "PAT" rec   The pattern information
 31*17                           The tracks are stored sequentially after each
								 other, first all rows of track 1, then all rows
								 of track 2 and so on.
						1 word   Pattern size+3, rounded up to a paragraph
								 boundary.
						1 byte   Number of rows in pattern
								 ="ROW"
					"ROW" rec
						2 byte   Note information, bitmapped :
								   0-5 - Note (see table 0005)
									 6 - Bit 4 of instrument
									 7 - Compression bit
										 If this bit not set, there is another
										 byte following the note record
										 specifying the row where the next
										 event takes place - if it is set,
										 the next note follows immediately.
										 A track is terminated by a 0FFh byte.
								  8-11 - Effect bits
								 12-15 - Bits 0-3 of instrument
						 1 byte  Effect data
00CCh+                   ? byte  Sample data in delta format
 31*17+                          See algorthm.txt for details.
 ????

The comment block contains information about the sample names as well
as some comments to the module. It is formatted like this :
OFFSET              Count TYPE   Description
0000h                   4 char   ID='INST'
						1 byte   Instrument name length
								 ="LEN"
						1 byte   Sample name count
								 ="CNT"
			  "LEN"*"CNT" char   Sample names
0000h+                  4 char   ID='TEXT'
 "LEN"*"CNT"+4
						1 word   Length of following text
EXTENSION:MOD
OCCURENCES:PC
PROGRAMS:Protracker
REFERENCE:
SEE ALSO:DMF,MOD,S3M,STM
VALIDATION:

This information is from Corion.net and is used with permission.

More Resources