General Information
A module packer created by Christian Estrup.
Technical Information
- File Prefix/Extension
- pp21
File format
Overall, a standard Protracker song is broken down from a standard 1024 byte pattern (4 channels * 64 notes * 4 bytes per note) into 4 patterns, one per audio channel. If any such one-channel pattern appears more than once in the song (e.g. repetitive drum patterns), it can now be de-duplicated. The size of the song can increase at this point, because instead of having one position list for all 4 channels (128 bytes), there are now 4 independent lists (128 * 4 = 512 bytes).
The next step is to take all notes in all patterns and build a unique list of notes. For example, the "--- 00000" note ("no note") is very common. Assuming there are less than 65536 unique notes in the music, every note can be converted to a 16-bit index into a table of the 4-byte notes.
Offset |
Length |
Description
|
0
|
240
|
31 standard Protracker "sample info" structures, without sample names
Offset |
Length |
Description
|
0 |
2 |
Sample length in words (double to get length in bytes). 0 = no sample
|
2 |
1 |
Sample finetune (between -8 and +7)
|
3 |
1 |
Sample volume (either 0 (no sample) or between 1 and 64)
|
4 |
2 |
Sample repeat start in words (0 means no repeat)
|
6 |
2 |
Sample repeat length in words (2 means no repeat)
|
|
240 |
1 |
maximum song position in this module: songlength
|
241 |
1 |
maximum song position possible: should always be $7F
|
242 |
128 |
pattern list for audio channel 0. Only offsets 0 to songlength (inclusive) are used
|
378 |
128 |
pattern list for audio channel 1. Only offsets 0 to songlength (inclusive) are used
|
506 |
128 |
pattern list for audio channel 2. Only offsets 0 to songlength (inclusive) are used
|
634 |
128 |
pattern list for audio channel 3. Only offsets 0 to songlength (inclusive) are used
|
762 |
pattlen |
pattern data: each pattern is 64 words (128 bytes) and each word is an index into the packed pattern data below. The size of this section, pattlen, is determined by the maximum pattern number seen in the pattern list data above, e.g. if the highest pattern number seen is $03, patterns $0,$1,$2,$3 exist (4 patterns) and consume 4*$80 bytes
|
762+pattlen |
4 |
packed pattern data length datalen
|
766+pattlen |
datalen |
packed pattern data (normal protracker pattern data, but each unique longword (note+effect) is only seen once in this section, and is referenced by an index from the pattern data section)
|
766+pattlen+datalen |
add all sample lengths |
sample data for each sample, identical to Protracker. Each sample is a multiple of 2 bytes in length
|
Music in the UnExoticA collection
Games
Demos