The following is a summary of the MultiTracker Module (MTM) fromat. It is intended for programmers who wish to support the format in any manner. Note that all effects are defined as the current Protracker effects standard. A short summary of this standard is provided in the documentation file for the Multitracker Module Editor. ДДДДДДДДВДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД PositionіLengthіDescription ДДДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД 0 і3 і"MTM" file marker 3 іBYTE іversion number - upper nybble is major version #, lower is і і minor version number 4 і20 іASCIIZ songname 24 іWORD іnumber of tracks saved 26 іBYTE іlast pattern number saved 27 іBYTE іlast order number to play (songlength-1) 28 іWORD іlength of extra comment field 30 іBYTE іnumber of samples saved (NOS) 31 іBYTE іattribute byte (currently defined as 0) 32 іBYTE іbeats per track 33 іBYTE іnumber of tracks to be played back 34 і32 іvoice pan positions ДДДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД 66 іNOS*37іInstrument data: ДДДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД і22 іsample name іDWORD іsample length in bytes іDWORD іoffset of beginning of sample loop in bytes іDWORD іoffset of end of sample loop in bytes іBYTE іfinetune value іBYTE іstandard volume of sample іBYTE іattribute byte: bit meaning і і 0 0=8 bit sample 1=16 bit sample і і 1-7 undefined (set to zero) ДДДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД 66+ і128 іPattern order data (NOS*37)і і ДДДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД 194+ іtrks* іTrack data: (NOS*37)і192 іEach track is saved independently and takes exactly 192 bytes. і іThe tracks are arranged as 64 consecutive 3-byte notes. These і іnotes have the following format: і і і і і і BYTE 0 BYTE 1 BYTE 2 і і ppppppii iiiieeee aaaaaaaa і і і і p = pitch value (0=no pitch stated) і і i = instrument number (0=no instrument number) і і e = effect number і і a = effect argument і і ДДДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД 194+ і іTrack sequencing data NOS*37+ і АДДДДДДДДДДДДДДДДДДДДДДДДДДї trks*192і(last pattern saved + 1)*32 WORDSі ДДДДДДДДЕДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДЩ і іThe track sequencing data is really just a listing of which і іtrack is used as which voice in each saved pattern. This is і іnecessary since one track may be a part of many different і іpatterns. (not orders) Doing this saves much of the memory і іwasted in a normal MOD by repetition of certain tracks over і іand over again throughout the file. і і і іNote that track zero is never saved, but always considered as і іan empty track. Therefore, track numbering for the saved і іtracks really starts at one. і і і іThe data is organized in sets of 32 voices. First comes a і іWORD representing which track is in pattern 0, voice 0. The і іnext WORD is pattern 0, voice 1, etc. This is repeated for і іeach pattern saved, giving a total track sequencing size of і і32 WORDS per pattern saved. і і і іIf your code uses MOD-style memory organization, you can still і іplay MTM's. You merely jump to the track sequencing data, and і іthen load each pattern separately by jumping back and forth і іbetween the track sequences and the actual track data. ДДДДДДДДЕДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД 194+ іHeaderіExtra comment field NOS*37+ іsays. і(Length specified in the header) trks*192АДДДДДДБДДДДДДДДДДДДДДДДДДДДї +(last pattern saved + 1)*32*2 і ДДДДДДДДВДДДДДДВДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД 194+ іsampleіRaw sample data NOS*37+ іlengthі(unsigned) trks*192АДДДДДДБДДДДДДДДДДДДДДДДДДДДї +(last pattern saved + 1)*32*2+ і length of extra comment field і ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ