 Fido Pascal Conference  PASCAL 
Msg  : 418 of 448                                                               
From : Bernie Pallek                       1:247/128.0          24 Jul 93  11:10 
To   : Matthew Mclin                                                             
Subj : (2/2) Digital Sound                                                    

MM> Does anybody know the format of .MOD/.SAM/.WAV/.VOC file?

Amiga Protracker Module Format
 +------++-----++-----------+
 |Offset||Bytes||Description|
++------++-----++-----------+---------------------------------------------
||   0     20    Module name.  Padded with spaces until the end (or should
||                 be).  Remember to only print 20 characters.
|+-Samples----------------------------------------------------------------
||  20( 0) 22    Sample Name.  Should be padded with nulls for the full
||                 length of it after the sample name.
||  42(22)  2    Sample Length.  Stored as an Amiga word which needs to be
||                 swapped on an IBM.  This word needs to be multiplied by
||                 two to get the real length.  If the initial length is
||                 greater than 8000h, then the sample is greater than 64k.
||  44(24)  1    Sample Finetune Byte.  This byte is the finetune value for
||                 the sample.  The upper four bits should be zeroed out.
||                 The lower four are the fine tune value.
||                 Value   : 0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
||               = Finetune: 0 +1 +2 +3 +4 +5 +6 +7 -8 -7 -6 -5 -4 -3 -2 -1
||  45(25)  1    Sample Volume.  The rangle is always 0..64
||  46(26)  2    Sample Repeat.  Stored as an Amiga word.  Multiply this by
||                 two and add it to the beginning offset of the sample to
||                 get the repeat point.
||  48(28)  2    Sample Repeat Length.  Stored as an Amiga word.  Multiply
||                 this by two to get the Repeat Length.
|+-------------------------------------------------------------------------
||          *** The remaining 14 or 30 samples follow this point ***
||          *** using the same format as above.  Note that the   ***
||          *** rest of this module format follows a 31 sample   ***
||          *** format, which is not different from the 15       ***
||          *** sample format except for the file offset.        ***
|+-------------------------------------------------------------------------
|| 950      1    The Song Length in the range of 1 to 128.
|| 951      1    I don't know.  I was told that Noisetracker uses this byte
||                 for a restart, but I don't use Noisetracker.  Anyone
||                 have any info?
|| 952    128    Play Sequences 0-127.  These indicate the appropriate
||                 pattern to play at this given position.
||1080      4    If this position contains:   "M.K." or "FLT4" or "FLT8"
||                                              - the module is 31 ins.
|+-Patterns----------------------------------------------------------------
||1084(0)   1    Upper 4 bits: MSB of the instrument.  Must be ORed with
||                 the LSB.  Lower 4 bits:  Upper 4 bits of the period.
||1085(1)   1    Contains the lower 8 bits of the period.
||1086(2)   1    Upper 4 bits: LSB of the instrument.  Must be ORed with
||                 the MSB.  Lower 4 bits: Special effects command.
||                 Contains a command 0-F.
||1087(3)   1    Special effects data.
|+-------------------------------------------------------------------------
||          *** The number of patterns is the highest pattern    ***
||          *** number stored in the Play Sequence list.         ***
|+-------------------------------------------------------------------------
|| Each note is four bytes long.  Four notes make up a track.  They are
|| stored like this:
||         0-3           4-7           8-11         12-15
||      Channel 1     Channel 2     Channel 3     Channel 4
||        16-19         20-23         24-27         28-31
||      Channel 1     Channel 2     Channel 3     Channel 4
|| ...and so on.
||
||                  00           00           00           00
||                  ||           ||           ||           ||
||                  /\           //           /\           \\
||  MSB of Ins.   Note        LSB Ins. Spec. Com.   Data for special
||
|| The samples immediately follow.
++-------------------------------------------------------------------------