CONTENTS

 

EFFECT COMMAND iNFORMATiON. 2

COMMON COMPATiBiLiTY CONSTANTS. 4

ViBRATO/TREMOLO SPEED TABLES. 5

FiLE FORMAT iNFORMATiON. 6

A2M FiLE FORMAT DESCRiPTiON.. 6

File format version 1-4.. 7

File format version 5-8.. 8

File format version 9.. 10

File format version 10.. 13

File format version 11-14.. 17

A2T FiLE FORMAT DESCRiPTiON.. 22

File format version 1-4.. 22

File format version 5-8.. 23

File format version 9.. 25

File format version 10.. 29

File format version 11-14.. 33

A2P FiLE FORMAT DESCRiPTiON.. 39

File format version 1-4.. 39

File format version 5-8.. 39

File format version 9.. 40

File format version 10-11.. 41

A2i FiLE FORMAT DESCRiPTiON.. 41

File format version 1-4.. 41

File format version 5-8.. 42

File format version 9-10.. 43

A2B FiLE FORMAT DESCRiPTiON.. 44

File format version 1-4.. 44

File format version 9-10.. 45

A2W FiLE FORMAT DESCRiPTiON.. 46

File format version 1.. 47

File format version 2-3.. 49

A2F FiLE FORMAT DESCRiPTiON.. 52

File format version 1-2.. 52

 

  EFFECT COMMAND iNFORMATiON

 

 Every effect command (as shown below) consists of two

 separated bytes. The first is effect byte and the second is info byte.

 The first byte (effect_def) is fixed, and carries the information

 that points to second "interactive" byte (effect).

 If the second byte is supposed to be partially fixed, then the info

 byte carries additional information that points to last 4 bits

 of info byte that are "interactive". If both effect and info bytes

 are fixed, then such effect is called an "extended command".

 /┤DLiB TR/┤CK3R ][ uses total count of 89 effects, and 24 extended

 commands. The fixed values of effect byte and corresponding

 information mapped into hi-part (bits 7-4) and lo-part (bits 3-0)

 of info byte are shown in the following table:

 

                             ┌──────────────┬─────────────┐

                             │ %effect_def% │  %effect%   │

                             │  char  code  │ 7654···3210 │

 ╒═══════════════════════════╪══════════════╪══════╤══════╡

 │ 1   ef_Arpeggio           │  0..   00    │ xxxxyyyy

 │ 2   ef_FSlideUp           │  1..   01    │ xxxxxxxx

 │ 3   ef_FSlideDown         │  2..   02    │ xxxxxxxx

 │ 4   ef_TonePortamento     │  3..   03    │ xxxxxxxx

 │ 5   ef_Vibrato            │  4..   04    │ xxxxyyyy

 │ 6   ef_TPortamVolSlide    │  5..   05    │ xxxxyyyy

 │ 7   ef_VibratoVolSlide    │  6..   06    │ xxxxyyyy

 │ 8   ef_FSlideUpFine       │  7..   07    │ xxxxxxxx

 │ 9   ef_FSlideDownFine     │  8..   08    │ xxxxxxxx

 │ 10  ef_SetModulatorVol    │  9..   09    │ 00xx │ xxxx

 │ 11  ef_VolSlide           │  A..   0a    │ xxxxyyyy

 │ 12  ef_PositionJump       │  B..   0b    │ 0xxx │ xxxx

 │ 13  ef_SetInsVolume       │  C..   0c    │ xxxxxxxx

 │ 14  ef_PatternBreak       │  D..   0d    │ xxxxxxxx

 │ 15  ef_SetTempo           │  E..   0e    │ xxxxxxxx

 │ 16  ef_SetSpeed           │  F..   0f    │ xxxxxxxx

 │ 17  ef_TPortamVSlideFine  │  G..   10    │ xxxxyyyy

 │ 18  ef_VibratoVSlideFine  │  H..   11    │ xxxxyyyy

 │ 19  ef_SetCarrierVol      │  I..   12    │ 00xx │ xxxx

 │ 20  ef_SetWaveform        │  J..   13    │ xxxxyyyy

 │ 21  ef_VolSlideFine       │  K..   14    │ xxxxyyyy

 │ 22  ef_RetrigNote         │  L..   15    │ xxxxxxxx

 │ 23  ef_Tremolo            │  M..   16    │ xxxxyyyy

 │ 24  ef_Tremor             │  N..   17    │ xxxxyyyy

 │ 25  ef_ArpggVSlide        │  O..   18    │ xxxxyyyy

 │ 26  ef_ArpggVSlideFine    │  P..   19    │ xxxxyyyy

 │ 27  ef_MultiRetrigNote    │  Q..   1a    │ xxxxyyyy

 │ 28  ef_FSlideUpVSlide     │  R..   1b    │ xxxxyyyy

 │ 29  ef_FSlideDownVSlide   │  S..   1c    │ xxxxyyyy

 │ 30  ef_FSlUpFineVSlide    │  T..   1d    │ xxxxyyyy

 │ 31  ef_FSlDownFineVSlide  │  U..   1e    │ xxxxyyyy

 │ 32  ef_FSlUpVSlF          │  V..   1f    │ xxxxyyyy

 │ 33  ef_FSlDownVSlF        │  W..   20    │ xxxxyyyy

 │ 34  ef_FSlUpFineVSlF      │  X..   21    │ xxxxyyyy

 │ 35  ef_FSlDownFineVSlF    │  Y..   22    │ xxxxyyyy

 │     ef_Extended           │  Z..   23    │ ---- │ ---- │

 │ 36  ef_ex_SetTremDepth    │  Z0.   23    │ 0000 │ 000x │

 │ 37  ef_ex_SetVibDepth     │  Z1.   23    │ 0001 │ 000x │

 │ 38  ef_ex_SetAttckRateM   │  Z2.   23    │ 0010 │ xxxx

 │ 39  ef_ex_SetDecayRateM   │  Z3.   23    │ 0011 │ xxxx

 │ 40  ef_ex_SetSustnLevelM  │  Z4.   23    │ 0100 │ xxxx

 │ 41  ef_ex_SetRelRateM     │  Z5.   23    │ 0101 │ xxxx

 │ 42  ef_ex_SetAttckRateC   │  Z6.   23    │ 0110 │ xxxx

 │ 43  ef_ex_SetDecayRateC   │  Z7.   23    │ 0111 │ xxxx

 │ 44  ef_ex_SetSustnLevelC  │  Z8.   23    │ 1000 │ xxxx

 │ 45  ef_ex_SetRelRateC     │  Z9.   23    │ 1001 │ xxxx

 │ 46  ef_ex_SetFeedback     │  ZA.   23    │ 1010 │ 0xxx │

 │ 47  ef_ex_SetPanningPos   │  ZB.   23    │ 1011 │ 000x │

 │ 48  ef_ex_PatternLoop     │  ZC.   23    │ 1100 │ xxxx

 │ 49  ef_ex_PatternLoopRec  │  ZD.   23    │ 1101 │ xxxx

 │     ef_ex_ExtendedCmd     │  ZE.   23    │ 1110 │ ---- │

 │     ef_ex_ExtendedCmd2    │  ZF.   23    │ 1111 │ ---- │

 │∙1   ef_ex_cmd_MKOffLoopDi │  ZE0   23    │ 1110 │ 0000 │

 │∙2   ef_ex_cmd_MKOffLoopEn │  ZE1   23    │ 1110 │ 0001 │

 │∙3   ef_ex_cmd_TPortaFKdis │  ZE2   23    │ 1110 │ 0010 │

 │∙4   ef_ex_cmd_TPortaFKenb │  ZE3   23    │ 1110 │ 0011 │

 │∙5   ef_ex_cmd_RestartEnv  │  ZE4   23    │ 1110 │ 0100 │

 │∙6   ef_ex_cmd_4opVlockOff │  ZE5   23    │ 1110 │ 0101 │

 │∙7   ef_ex_cmd_4opVlockOn  │  ZE6   23    │ 1110 │ 0110 │

 │∙8   ef_ex_cmd_ForceBpmSld │  ZE7   23    │ 1110 │ 0111 │

 │     ---                   │  ZE8   23    │ 1110 │ 1000 │

 │     ---                   │  ZE9   23    │ 1110 │ 1001 │

 │     ---                   │  ZEA   23    │ 1110 │ 1010 │

 │     ---                   │  ZEB   23    │ 1110 │ 1011 │

 │     ---                   │  ZEC   23    │ 1110 │ 1100 │

 │     ---                   │  ZED   23    │ 1110 │ 1101 │

 │     ---                   │  ZEE   23    │ 1110 │ 1110 │

 │     ---                   │  ZEF   23    │ 1110 │ 1111 │

 │∙9   ef_ex_cmd2_RSS        │  ZF0   23    │ 1111 │ 0000 │

 │∙10  ef_ex_cmd2_ResetVol   │  ZF1   23    │ 1111 │ 0001 │

 │∙11  ef_ex_cmd2_LockVol    │  ZF2   23    │ 1111 │ 0010 │

 │∙12  ef_ex_cmd2_UnlockVol  │  ZF3   23    │ 1111 │ 0011 │

 │∙13  ef_ex_cmd2_LockVP     │  ZF4   23    │ 1111 │ 0100 │

 │∙14  ef_ex_cmd2_UnlockVP   │  ZF5   23    │ 1111 │ 0101 │

 │∙15  ef_ex_cmd2_VSlide_mod │  ZF6   23    │ 1111 │ 0110 │

 │∙16  ef_ex_cmd2_VSlide_car │  ZF7   23    │ 1111 │ 0111 │

 │∙17  ef_ex_cmd2_VSlide_def │  ZF8   23    │ 1111 │ 1000 │

 │∙18  ef_ex_cmd2_LockPan    │  ZF9   23    │ 1111 │ 1001 │

 │∙19  ef_ex_cmd2_UnlockPan  │  ZFA   23    │ 1111 │ 1010 │

 │∙20  ef_ex_cmd2_VibrOff    │  ZFB   23    │ 1111 │ 1011 │

 │∙21  ef_ex_cmd2_TremOff    │  ZFC   23    │ 1111 │ 1100 │

 │∙22  ef_ex_cmd2_FVib_FGFS    ZFD   23    │ 1111 │ 1101 │

 │∙23  ef_ex_cmd2_FTrm_XFGFS │  ZFE   23    │ 1111 │ 1110 │

 │∙24  ef_ex_cmd2_NoRestart  │  ZFF   23    │ 1111 │ 1111 │

 │     ef_Extended2          │  &..   24    │ ---- │ ---- │

 │ 51  ef_ex2_PatDelayFrame  │  &0.   24    │ 0000 │ xxxx

 │ 52  ef_ex2_PatDelayRow    │  &1.   24    │ 0001 │ xxxx

 │ 53  ef_ex2_NoteDelay      │  &2.   24    │ 0010 │ xxxx

 │ 54  ef_ex2_NoteCut        │  &3.   24    │ 0011 │ xxxx

 │ 55  ef_ex2_FineTuneUp     │  &4.   24    │ 0100 │ xxxx

 │ 56  ef_ex2_FineTuneDown   │  &5.   24    │ 0101 │ xxxx

 │ 57  ef_ex2_GlVolSlideUp   │  &6.   24    │ 0110 │ xxxx

 │ 58  ef_ex2_GlVolSlideDn   │  &7.   24    │ 0111 │ xxxx

 │ 59  ef_ex2_GlVolSlideUpF  │  &8.   24    │ 1000 │ xxxx

 │ 60  ef_ex2_GlVolSlideDnF  │  &9.   24    │ 1001 │ xxxx

 │ 61  ef_ex2_GlVolSldUpXF   │  &A.   24    │ 1010 │ xxxx

 │ 62  ef_ex2_GlVolSldDnXF   │  &B.   24    │ 1011 │ xxxx

 │ 63  ef_ex2_VolSlideUpXF   │  &C.   24    │ 1100 │ xxxx

 │ 64  ef_ex2_VolSlideDnXF   │  &D.   24    │ 1101 │ xxxx

 │ 65  ef_ex2_FreqSlideUpXF  │  &E.   24    │ 1110 │ xxxx

 │ 66  ef_ex2_FreqSlideDnXF  │  &F.   24    │ 1111 │ xxxx

 │ 67  ef_SetGlobalVolume    │  %..   25    │ 0xxx │ xxxx

 │ 68  ef_SwapArpeggio       │  !..   26    │ xxxxxxxx

 │ 69  ef_SwapVibrato        │  @..   27    │ xxxxxxxx

 │ 70  ef_ForceInsVolume     │  =..   28    │ 0xxx │ xxxx

 │     ef_Extended3          │  #..   29    │ ---- │ ---- │

 │ 71  ef_ex3_SetConnection  │  #0.   29    │ 0000 │ 000x │

 │ 72  ef_ex3_SetMultipM     │  #1.   29    │ 0001 │ xxxx

 │ 73  ef_ex3_SetKslM        │  #2.   29    │ 0010 │ 00xx │

 │ 74  ef_ex3_SetTremoloM    │  #3.   29    │ 0011 │ 000x │

 │ 75  ef_ex3_SetVibratoM    │  #4.   29    │ 0100 │ 000x │

 │ 76  ef_ex3_SetKsrM        │  #5.   29    │ 0101 │ 000x │

 │ 77  ef_ex3_SetSustainM    │  #6.   29    │ 0110 │ 000x │

 │ 78  ef_ex3_SetMultipC     │  #7.   29    │ 0111 │ xxxx

 │ 79  ef_ex3_SetKslC        │  #8.   29    │ 1000 │ 00xx │

 │ 80  ef_ex3_SetTremoloC    │  #9.   29    │ 1001 │ 000x │

 │ 81  ef_ex3_SetVibratoC    │  #A.   29    │ 1010 │ 000x │

 │ 82  ef_ex3_SetKsrC        │  #B.   29    │ 1011 │ 000x │

 │ 83  ef_ex3_SetSustainC    │  #C.   29    │ 1100 │ 000x │

 │ 84  ef_ExtraFineArpeggio  │  $..   2a    │ xxxxyyyy

 │ 85  ef_ExtraFineVibrato   │  ~..   2b    │ xxxxyyyy

 │ 86  ef_ExtraFineTremolo   │  ^..   2c    │ xxxxyyyy

 │ 87  ef_SetCustomSpeedTab  │  `..   2d    │ xxxxxxxx

 │ 88  ef_GlobalFSlideUp       >..   2e    xxxxxxxx

 │ 89  ef_GlobalFSlideDown     <..   2f    xxxxxxxx

 └───────────────────────────┴──────────────┴──────┴──────┘


  COMMON COMPATiBiLiTY CONSTANTS

                                       ┌───┐

 octave (pitch) frequency start (hex) =│156│ ->

                         ┌───┐         └───┘

 -> frequency end (hex) =│2ae│

                         └───┘

 
 predetermined C8253 operating frequency

                       ┌───────┐

 for iRQ timing calls =│1193180│

                       └───────┘


  ViBRATO/TREMOLO SPEED TABLES

 

 DEFAULT

  ┌──────────────────────────────────────────────────────────────────┐

 =│   0, 24, 49, 74, 97,120,141,161,180,197,212,224,235,244,250,253, │

  │ 255,253,250,244,235,224,212,197,180,161,141,120, 97, 74, 49, 24 

  └──────────────────────────────────────────────────────────────────┘

 

 CUSTOM MAXiMUM VALUE (example: 7Fh)

  ┌──────────────────────────────────────────────────────────────────┐

 =│   0,  8, 16, 24, 32, 40, 48, 56, 64, 71, 79, 87, 95,103,111,119, │

  │ 127,119,111,103, 95, 87, 79, 71, 64, 56, 48, 40, 32, 24, 16,  8 

  └──────────────────────────────────────────────────────────────────┘

 

 CUSTOM TABLE SiZE (32)

  ┌──────────────────────────────────────────────────────────────────┐

 =│   0, 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239, │

  │ 255,239,223,207,191,175,159,143,127,111, 95, 79, 63, 47, 31, 15 

  └──────────────────────────────────────────────────────────────────┘

 

 CUSTOM TABLE SiZE (64)

  ┌──────────────────────────────────────────────────────────────────┐

 =│   0,  7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95,103,111,119, │

  │ 127,135,143,151,159,167,175,183,191,199,207,215,223,231,239,247, │

  │ 255,247,239,231,223,215,207,199,191,183,175,167,159,151,143,135, │

  │ 127,119,111,103, 95, 87, 79, 71, 63, 55, 47, 39, 31, 23, 15,  7 

  └──────────────────────────────────────────────────────────────────┘

 

 CUSTOM TABLE SiZE (128)

  ┌──────────────────────────────────────────────────────────────────┐

 =│   0,  3,  7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, │

    63, 67, 71, 75, 79, 83, 87, 91, 95, 99,103,107,111,115,119,123, │

  │ 127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187, │

  │ 191,195,199,203,207,211,215,219,223,227,231,235,239,243,247,251, │

  │ 255,251,247,243,239,235,231,227,223,219,215,211,207,203,199,195, │

  │ 191,187,183,179,175,171,167,163,159,155,151,147,143,139,135,131, │

  │ 127,123,119,115,111,107,103, 99, 95, 91, 87, 83, 79, 75, 71, 67, │

    63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11,  7,  3 

  └──────────────────────────────────────────────────────────────────┘

 

 CUSTOM TABLE SiZE (256)

  ┌──────────────────────────────────────────────────────────────────┐

 =│   0,  1,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, │

    31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, │

    63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, │

    95, 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125, │

  │ 127,129,131,133,135,137,139,141,143,145,147,149,151,153,155,157, │

  │ 159,161,163,165,167,169,171,173,175,177,179,181,183,185,187,189, │

  │ 191,193,195,197,199,201,203,205,207,209,211,213,215,217,219,221, │

  │ 223,225,227,229,231,233,235,237,239,241,243,235,247,249,251,253, │

  │ 255,253,251,249,247,245,243,241,239,237,235,233,231,229,227,225, │

  │ 223,221,219,217,215,213,211,209,207,205,203,201,199,197,195,193, │

  │ 191,189,187,185,183,181,179,177,175,173,171,169,167,165,163,161, │

  │ 159,157,155,153,151,149,147,145,143,141,139,137,135,133,131,129, │

  │ 127,125,123,121,119,117,115,113,111,109,107,105,103,101, 99, 97, │

    95, 93, 91, 89, 87, 85, 83, 81, 79, 77, 75, 73, 71, 69, 67, 65, │

    63, 61, 59, 57, 55, 53, 51, 49, 47, 45, 43, 41, 39, 37, 35, 33, │

    31, 29, 27, 25, 23, 21, 19, 17, 15, 13, 11,  9,  7,  5,  3,  1 

  └──────────────────────────────────────────────────────────────────┘


  FiLE FORMAT iNFORMATiON

 

 All data files that are in use of /┤DLiB TR/┤CK3R ][ are roughly

 composed of 2 parts. The first part (header) contains file authenticity

 information like ID string, CRC, format version, and is ended

 with one or more values signifying the length of next (compressed) part.

 Let's take a look on each of these file types.


 ┌──────────────────────────────────────────────┐

 │         FiLE FORMAT VERSiON SUMMARY          │

 ├─────┬──────┬─────────────────────────────────┤

 │ EXT.│ VER. │ DESCRiPTiON                     │

 ├─────┼──────┼─────────────────────────────────┤

 │ a2m │ 1-14 │ module                          │

 │ a2t │ 1-14 │ tiny module                     │

 │ a2p │ 1-11 │ pattern                         │

 │ a2i │ 1-10 │ instrument                      │

 │ a2b │ 1-10 │ instrument bank                 │

 │ a2w │ 1-3  │ instrument bank w/ macros       │

 │ a2f │ 1-2  │ instrument w/ FM-register macro │

 └─────┴──────┴─────────────────────────────────┘

 

 

  A2M FiLE FORMAT DESCRiPTiON

 

 Offset Length   Type

 

 000000     10   (char)   ID string '_a2module_'

 00000a      4   (dword)  32-bit cyclic redundancy check value

 00000e      1   (byte)   file format version

 00000f      1   (byte)   number of patterns {#pat}

 

  File format version 1-4

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-4 is following:

 FFver. 1: SixPack

 FFver. 2: LZW

 FFver. 3: LZSS

 FFver. 4: no compression

 Refer to unit depackio.pas for decompression routine.

 

 000010      2   (word)   length of data block 0 {%0}

 000012      2   (word)     ...    ...    ...  1 {%1}

 000014      2   (word)     ...    ...    ...  2 {%2}

 000016      2   (word)     ...    ...    ...  3 {%3}

 000018      2   (word)     ...    ...    ...  4 {%4}

 00001a     %0   (byte)   data block 0 (songdata)

   + %0     %1   (byte)   data block 1 (patterns) 00-0f ┐

   + %1     %2   (byte)   data block 2    ...     10-1f ├ corresponds

   + %2     %3   (byte)   data block 3    ...     20-2f │ with #pat

   + %3     %4   (byte)   data block 4    ...     30-3f ┘

 

 --EOF-

 

 structure of data block 0 (songdata) after decompression:

 

 Offset Length   Type

 

 000000     43   (string) songname [42 characters]

 00002b     43   (string) composer [...]

 000056 250*33   (string) table of 250 instrument names [32 chars each]

 002090 250*13   (byte)   table of 250 instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               13 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) miscellaneous (unused)

                        └ 00000c (byte) fine-tune (signed)

 

 002d42    128   (byte)   pattern order table (order entries 00-7f)

 002dc2      1   (byte)   initial tempo

 002dc3      1   (byte)   initial speed

 

 structure of data block 1-4 (patterns) after decompression:

 

 Offset Length   Type

 

 000000 64*9*4   (byte)   pattern [block_number-1]*16+0

        │  │

  line ─┘  └ channel      Offset Type

  0-63         1-9

                        ┌ 000000 (byte) note [0-96] [255 is Key-Off]

                4 bytes ┤ 000001 (byte) instrument [0-250]

                        │ 000002 (byte) effect command [0-15]

                        └ 000003 (byte) effect data

 

 000900 64*9*4   (byte)   pattern [block_number-1]*16+1

    .     ...     ...       ...         ...

    .     ...     ...       ...         ...

    .     ...     ...       ...         ...

 008700 64*9*4   (byte)   pattern [block_number-1]*16+15

 

 File format version 5-8

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-4 is following:

 FFver. 5: SixPack

 FFver. 6: LZW

 FFver. 7: LZSS

 FFver. 8: no compression

 Refer to unit depackio.pas for decompression routine.

 

 000010      2   (word)   length of data block 0 {%0}

 000012      2   (word)     ...    ...    ...  1 {%1}

 000014      2   (word)     ...    ...    ...  2 {%2}

 000016      2   (word)     ...    ...    ...  3 {%3}

 000018      2   (word)     ...    ...    ...  4 {%4}

 00001a      2   (word)     ...    ...    ...  5 {%5}

 00001c      2   (word)     ...    ...    ...  6 {%6}

 00001e      2   (word)     ...    ...    ...  7 {%7}

 000020      2   (word)     ...    ...    ...  8 {%8}

 000022     %0   (byte)   data block 0 (songdata)

   + %0     %1   (byte)   data block 1 (patterns) 00-07 ┐

   + %1     %2   (byte)   data block 2    ...     08-0f │

   + %2     %3   (byte)   data block 3    ...     10-17 │

   + %3     %4   (byte)   data block 4    ...     18-1f ├ corresponds

   + %4     %5   (byte)   data block 5    ...     20-27 │ with #pat

   + %5     %6   (byte)   data block 6    ...     28-2f │

   + %6     %7   (byte)   data block 7    ...     30-37 │

   + %7     %8   (byte)   data block 8    ...     38-3f ┘

 

 --EOF-

 

 structure of data block 0 (songdata) after decompression:

 

 Offset Length   Type

 

 000000     43   (string) songname [42 characters]

 00002b     43   (string) composer [...]

 000056 250*33   (string) table of 250 instrument names [32 chars each]

 002090 250*13   (byte)   table of 250 instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               13 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        └ 00000c (byte) fine-tune (signed)

 

 002d42    128   (byte)   pattern order table (order entries 00-7f)

 002dc2      1   (byte)   initial tempo

 002dc3      1   (byte)   initial speed

 002dc4      1   (byte)   flags

 

 structure of 'flags' byte:

 

 ┌─────┬────────────────────┐

 │ BiTSWiTCH             │

 ├─────┼────────────────────┤

 │  0  │ update speed       │

 │  1  │ track volume lock  │

 │  2  │ volume peak lock   │

 │  3  │ tremolo depth      │

 │  4  │ vibrato depth      │

 │  5  │ track panning lock │

 │  6  │ %unused%           │

 │  7  │ %unused%           │

 └─────┴────────────────────┘

  

 structure of data block 1-8 (patterns) after decompression:

 

 Offset Length   Type

 

 000000 18*64*4  (byte)   pattern [block_number-1]*8+0

         │  │

 channel ┘  └ line        Offset Type

  1-18        0-63

                        ┌ 000000 (byte) note [0-96] [255 is Key-Off]

                4 bytes ┤ 000001 (byte) instrument [0-250]

                        │ 000002 (byte) effect command [0-35]

                        └ 000003 (byte) effect data

 

 001200 18*64*4  (byte)   pattern [block_number-1]*8+1

    .     ...     ...       ...         ...

    .     ...     ...       ...         ...

    .     ...     ...       ...         ...

 007e00 18*64*4  (byte)   pattern [block_number-1]*8+7

 

  File format version 9

 

 IMPORTANT!

 Compression algorithm used in FFver. 10 is Jibz's aPLib.

 Refer to unit depackio.pas for decompression routine.

 

 000010      4   (dword)  length of data block 0  {%0}

 000014      4   (dword)    ...    ...    ...  1  {%1}

 000018      4   (dword)    ...    ...    ...  2  {%2}

 00001c      4   (dword)    ...    ...    ...  3  {%3}

 000020      4   (dword)    ...    ...    ...  4  {%4}

 000024      4   (dword)    ...    ...    ...  5  {%5}

 000028      4   (dword)    ...    ...    ...  6  {%6}

 00002c      4   (dword)    ...    ...    ...  7  {%7}

 000030      4   (dword)    ...    ...    ...  8  {%8}

 000034      4   (dword)    ...    ...    ...  9  {%9}

 000038      4   (dword)    ...    ...    ...  10 {%10}

 00003c      4   (dword)    ...    ...    ...  11 {%11}

 000040      4   (dword)    ...    ...    ...  12 {%12}

 000044      4   (dword)    ...    ...    ...  13 {%13}

 000048      4   (dword)    ...    ...    ...  14 {%14}

 00004c      4   (dword)    ...    ...    ...  15 {%15}

 000050      4   (dword)    ...    ...    ...  16 {%16}

 000054     %0   (byte)   data block 0 (songdata)

  +  %0     %1   (byte)   data block 1 (patterns) 00-07 ┐

  +  %1     %2   (byte)   data block 2    ...     08-0f │

  +  %2     %3   (byte)   data block 3    ...     10-17 │

  +  %3     %4   (byte)   data block 4    ...     18-1f │

  +  %4     %5   (byte)   data block 5    ...     20-27 │

  +  %5     %6   (byte)   data block 6    ...     28-2f │

  +  %6     %7   (byte)   data block 7    ...     30-37 │

  +  %7     %8   (byte)   data block 8    ...     38-3f ├ corresponds

  +  %8     %9   (byte)   data block 9    ...     40-47 │ with #pat

  +  %9    %10   (byte)   data block 10   ...     48-4f │

  + %10    %11   (byte)   data block 11   ...     50-57 │

  + %11    %12   (byte)   data block 12   ...     58-5f │

  + %12    %13   (byte)   data block 13   ...     60-67 │

  + %13    %14   (byte)   data block 14   ...     68-6f │

  + %14    %15   (byte)   data block 15   ...     70-77 │

  + %15    %16   (byte)   data block 16   ...     78-7f ┘

 

 --EOF-

 

 structure of data block 0 (songdata) after decompression:

 

 Offset Length   Type

 

 000000     43   (string) songname [42 characters]

 00002b     43   (string) composer [...]

 000056 255*33   (string) table of 255 instrument names [32 chars each]

 002135 255*14   (byte)   table of 255 instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 002f27 255*3831 (byte)   table of 255 instrument macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) loop begin position

        000002      1 (byte) loop length

        000003      1 (byte) key-off position

        000004      1 (byte) arpeggio macro-table number

        000005      1 (byte) vibrato macro-table number

 

        000006 255*15 (byte) fm-register definitions:

 

                             Offset Type

 

                           ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                           │ 000001 (byte) ...             (carrier)

                           │ 000002 (byte) KSL/Volume      (modulator)

                           │ 000003 (byte) ...             (carrier)

                           │ 000004 (byte) Attack/Decay    (modulator)

                           │ 000005 (byte) ...             (carrier)

                  15 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                           │ 000007 (byte) ...             (carrier)

                           │ 000008 (byte) WaveForm        (modulator)

                           │ 000009 (byte) ...             (carrier)

                           │ 00000a (byte) Feedback/FM

                           │ 00000b (word) frequency slide (signed)

                           │ 00000d (byte) panning (0=C,1=L,2=R)

                           └ 00000e (byte) duration

 

 0f1730 255*521  (byte)   table of 255 arpeggio/vibrato macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) speed

        000002      1 (byte) loop begin position

        000003      1 (byte) loop length

        000004      1 (byte) key-off position

        000005    255 (byte) table of 255 arpeggio definitions:

 

                             ┌────────────┬─────────────────────────────┐

                             │ 0          │ default note                │

                             │ 1-96       │ number of half-tones to add │

                             │ 1-97[+80h] │ fixed-note                  │

                             └────────────┴─────────────────────────────┘

 

        000104      1 (byte) length

        000105      1 (byte) speed

        000106      1 (byte) delay

        000107      1 (byte) loop begin position

        000108      1 (byte) loop length

        000109      1 (byte) key-off position

        00010a    255 (byte) table of 255 vibrato definitions:

 

                            ┌─────────┬─────────────────────────────────┐

                            │ 0       │ default frequency               │

                            │ -7F..7F │ frequency units to add (signed) │

                            └─────────┴─────────────────────────────────┘

 

 111e27    128   (byte)   pattern order table (order entries 00-7f)

 111ea7      1   (byte)   initial tempo

 111ea8      1   (byte)   initial speed

 111ea9      1   (byte)   flags

 111eaa      2   (word)   pattern length

 111eac      1   (byte)   number of tracks

 111ead      2   (word)   macro speed-up factor

 

 structure of 'flags' byte:

 

 ┌─────┬────────────────────────────┐

 │ BiTSWiTCH                     │

 ├─────┼────────────────────────────┤

 │  0  │ update speed               │

 │  1  │ track volume lock          │

 │  2  │ volume peak lock           │

 │  3  │ tremolo depth              │

 │  4  │ vibrato depth              │

 │  5  │ track panning lock         │

 │  6  │ percussion track extension │

 │  7  │ volume scaling             │

 └─────┴────────────────────────────┘

 

 structure of data block 1-16 (patterns) after decompression:

 

 Offset Length   Type

 

 000000 20*256*6 (byte)   pattern [block_number-1]*8+0

         │  │

 channel ┘  └ line        Offset Type

  1-20        0-255

                        ┌ 000000 (byte) note [0-96; +90h=fixed; 255=Key-Off]

                        │ 000001 (byte) instrument

                6 bytes ┤ 000002 (byte) 1st effect command

                        │ 000003 (byte) 1st effect data

                        │ 000004 (byte) 2nd effect command

                        └ 000005 (byte) 2nd effect data

 

 007800 20*256*6 (byte)   pattern [block_number-1]*8+1

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

 070800 20*256*6 (byte)   pattern [block_number-1]*8+7

 

  File format version 10

 

 IMPORTANT!

 Compression algorithm used in FFver. 10 is Jibz's aPLib.

 Refer to unit depackio.pas for decompression routine.

 

 000010      4   (dword)  length of data block 0  {%0}

 000014      4   (dword)    ...    ...    ...  1  {%1}

 000018      4   (dword)    ...    ...    ...  2  {%2}

 00001c      4   (dword)    ...    ...    ...  3  {%3}

 000020      4   (dword)    ...    ...    ...  4  {%4}

 000024      4   (dword)    ...    ...    ...  5  {%5}

 000028      4   (dword)    ...    ...    ...  6  {%6}

 00002c      4   (dword)    ...    ...    ...  7  {%7}

 000030      4   (dword)    ...    ...    ...  8  {%8}

 000034      4   (dword)    ...    ...    ...  9  {%9}

 000038      4   (dword)    ...    ...    ...  10 {%10}

 00003c      4   (dword)    ...    ...    ...  11 {%11}

 000040      4   (dword)    ...    ...    ...  12 {%12}

 000044      4   (dword)    ...    ...    ...  13 {%13}

 000048      4   (dword)    ...    ...    ...  14 {%14}

 00004c      4   (dword)    ...    ...    ...  15 {%15}

 000050      4   (dword)    ...    ...    ...  16 {%16}

 000054     %0   (byte)   data block 0 (songdata)

  +  %0     %1   (byte)   data block 1 (patterns) 00-07 ┐

  +  %1     %2   (byte)   data block 2    ...     08-0f │

  +  %2     %3   (byte)   data block 3    ...     10-17 │

  +  %3     %4   (byte)   data block 4    ...     18-1f │

  +  %4     %5   (byte)   data block 5    ...     20-27 │

  +  %5     %6   (byte)   data block 6    ...     28-2f │

  +  %6     %7   (byte)   data block 7    ...     30-37 │

  +  %7     %8   (byte)   data block 8    ...     38-3f ├ corresponds

  +  %8     %9   (byte)   data block 9    ...     40-47 │ with #pat

  +  %9    %10   (byte)   data block 10   ...     48-4f │

  + %10    %11   (byte)   data block 11   ...     50-57 │

  + %11    %12   (byte)   data block 12   ...     58-5f │

  + %12    %13   (byte)   data block 13   ...     60-67 │

  + %13    %14   (byte)   data block 14   ...     68-6f │

  + %14    %15   (byte)   data block 15   ...     70-77 │

  + %15    %16   (byte)   data block 16   ...     78-7f ┘

 

 --EOF-

 

 structure of data block 0 (songdata) after decompression:

 

 Offset Length   Type

 

 000000     43   (string) songname [42 characters]

 00002b     43   (string) composer [...]

 000056 255*43   (string) table of 255 instrument names [42 chars each]

 002b2b 255*14   (byte)   table of 255 instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 00391d 255*3831 (byte)   table of 255 instrument macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) loop begin position

        000002      1 (byte) loop length

        000003      1 (byte) key-off position

        000004      1 (byte) arpeggio macro-table number

        000005      1 (byte) vibrato macro-table number

 

        000006 255*15 (byte) fm-register definitions:

 

                             Offset Type

 

                           ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                           │ 000001 (byte) ...             (carrier)

                           │ 000002 (byte) KSL/Volume      (modulator)

                           │ 000003 (byte) ...             (carrier)

                           │ 000004 (byte) Attack/Decay    (modulator)

                           │ 000005 (byte) ...             (carrier)

                  15 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                           │ 000007 (byte) ...             (carrier)

                           │ 000008 (byte) WaveForm        (modulator)

                           │ 000009 (byte) ...             (carrier)

                           │ 00000a (byte) Feedback/FM

                           │ 00000b (word) frequency slide (signed)

                           │ 00000d (byte) panning (0=C,1=L,2=R)

                           └ 00000e (byte) duration

 

 0f2126 255*521  (byte)   table of 255 arpeggio/vibrato macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) speed

        000002      1 (byte) loop begin position

        000003      1 (byte) loop length

        000004      1 (byte) key-off position

        000005    255 (byte) table of 255 arpeggio definitions:

 

                             ┌────────────┬─────────────────────────────┐

                             │ 0          │ default note                │

                             │ 1-96       │ number of half-tones to add │

                             │ 1-97[+80h] │ fixed-note                  │

                             └────────────┴─────────────────────────────┘

 

        000104      1 (byte) length

        000105      1 (byte) speed

        000106      1 (byte) delay

        000107      1 (byte) loop begin position

        000108      1 (byte) loop length

        000109      1 (byte) key-off position

        00010a    255 (byte) table of 255 vibrato definitions:

 

                            ┌─────────┬─────────────────────────────────┐

                            │ 0       │ default frequency               │

                            │ -7F..7F │ frequency units to add (signed) │

                            └─────────┴─────────────────────────────────┘

 

 11281d    128   (byte)   pattern order table (order entries 00-7f)

 11289d      1   (byte)   initial tempo

 11289e      1   (byte)   initial speed

 11289f      1   (byte)   flags

 1128a0      2   (word)   pattern length

 1128a2      1   (byte)   number of tracks

 1128a3      2   (word)   macro speed-up factor

 1128a5      1   (byte)   4-op track extension flags

 1128a6     20   (byte)   initial lock flags for 20 tracks

 

 structure of 'flags' byte:

 

 ┌─────┬────────────────────────────┐

 │ BiTSWiTCH                     │

 ├─────┼────────────────────────────┤

 │  0  │ update speed               │

 │  1  │ track volume lock          │

 │  2  │ volume peak lock           │

 │  3  │ tremolo depth              │

 │  4  │ vibrato depth              │

 │  5  │ track panning lock         │

 │  6  │ percussion track extension │

 │  7  │ volume scaling             │

 └─────┴────────────────────────────┘

 

 structure of '4-op track extension flags' byte:

 

 ┌─────┬──────────────┐

 │ BiTSWiTCH       │

 ├─────┼──────────────┤

 │  0  │ tracks 1,2   │

 │  1  │ tracks 3,4   │

 │  2  │ tracks 5,6   │

 │  3  │ tracks 10,11 │

 │  4  │ tracks 12,13 │

 │  5  │ tracks 14,15 │

 │  6  │ %unused%     │

 │  7  │ %unused%     │

 └─────┴──────────────┘

 

 structure of 'initial lock flags' byte:

 

 ┌─────┬──────────────────────────────────┐

 │ BiTSWiTCH                           │

 ├─────┼──────────────────────────────────┤

 │  0─┐│ panning position:                │

 │  1─┘│ 0=center, 1=left, 2=right        │

 │  2─┐│ volume slide type:               │

 │  3─┘│ 0=def, 1=car, 2=mod, 3=car w/mod │

 │  4  │ volume lock state                │

 │  5  │ peak lock state                  │

 │  6  │ %unused%                         │

 │  7  │ %unused%                         │

 └─────┴──────────────────────────────────┘

 

 structure of data block 1-16 (patterns) after decompression:

 

 Offset Length   Type

 

 000000 20*256*6 (byte)   pattern [block_number-1]*8+0

         │  │

 channel ┘  └ line        Offset Type

  1-20        0-255

                        ┌ 000000 (byte) note [0-96; +90h=fixed; 255=KO]

                        │ 000001 (byte) instrument

                6 bytes ┤ 000002 (byte) 1st effect command

                        │ 000003 (byte) 1st effect data

                        │ 000004 (byte) 2nd effect command

                        └ 000005 (byte) 2nd effect data

 

 007800 20*256*6 (byte)   pattern [block_number-1]*8+1

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

 070800 20*256*6 (byte)   pattern [block_number-1]*8+7

 

  File format version 11-14

 

 IMPORTANT!

 Compression algorithm used in FFver. 11-13 is following:

 FFver. 11-12: Jibz's aPLib,

 FFver. 13:    own implementation of LZH

 Refer to unit depackio.pas respectively adt2pack.pas for decompression routine.

 

 000010      4   (dword)  length of data block 0  {%0}

 000014      4   (dword)    ...    ...    ...  1  {%1}

 000018      4   (dword)    ...    ...    ...  2  {%2}

 00001c      4   (dword)    ...    ...    ...  3  {%3}

 000020      4   (dword)    ...    ...    ...  4  {%4}

 000024      4   (dword)    ...    ...    ...  5  {%5}

 000028      4   (dword)    ...    ...    ...  6  {%6}

 00002c      4   (dword)    ...    ...    ...  7  {%7}

 000030      4   (dword)    ...    ...    ...  8  {%8}

 000034      4   (dword)    ...    ...    ...  9  {%9}

 000038      4   (dword)    ...    ...    ...  10 {%10}

 00003c      4   (dword)    ...    ...    ...  11 {%11}

 000040      4   (dword)    ...    ...    ...  12 {%12}

 000044      4   (dword)    ...    ...    ...  13 {%13}

 000048      4   (dword)    ...    ...    ...  14 {%14}

 00004c      4   (dword)    ...    ...    ...  15 {%15}

 000050      4   (dword)    ...    ...    ...  16 {%16}

 000054     %0   (byte)   data block 0 (songdata)

  +  %0     %1   (byte)   data block 1 (patterns) 00-07 ┐

  +  %1     %2   (byte)   data block 2    ...     08-0f │

  +  %2     %3   (byte)   data block 3    ...     10-17 │

  +  %3     %4   (byte)   data block 4    ...     18-1f │

  +  %4     %5   (byte)   data block 5    ...     20-27 │

  +  %5     %6   (byte)   data block 6    ...     28-2f │

  +  %6     %7   (byte)   data block 7    ...     30-37 │

  +  %7     %8   (byte)   data block 8    ...     38-3f ├ corresponds

  +  %8     %9   (byte)   data block 9    ...     40-47 │ with #pat

  +  %9    %10   (byte)   data block 10   ...     48-4f │

  + %10    %11   (byte)   data block 11   ...     50-57 │

  + %11    %12   (byte)   data block 12   ...     58-5f │

  + %12    %13   (byte)   data block 13   ...     60-67 │

  + %13    %14   (byte)   data block 14   ...     68-6f │

  + %14    %15   (byte)   data block 15   ...     70-77 │

  + %15    %16   (byte)   data block 16   ...     78-7f ┘

 

 --EOF-

 

 structure of data block 0 (songdata) after decompression:

 

 Offset Length   Type

 

 000000     43   (string) songname [42 characters]

 00002b     43   (string) composer [...]

 000056 255*43   (string) table of 255 instrument names [42 chars each]

 002b2b 255*14   (byte)   table of 255 instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 00391d 255*3831 (byte)   table of 255 instrument macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) loop begin position

        000002      1 (byte) loop length

        000003      1 (byte) key-off position

        000004      1 (byte) arpeggio macro-table number

        000005      1 (byte) vibrato macro-table number

 

        000006 255*15 (byte) fm-register definitions:

 

                             Offset Type

 

                           ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                           │ 000001 (byte) ...             (carrier)

                           │ 000002 (byte) KSL/Volume      (modulator)

                           │ 000003 (byte) ...             (carrier)

                           │ 000004 (byte) Attack/Decay    (modulator)

                           │ 000005 (byte) ...             (carrier)

                  15 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                           │ 000007 (byte) ...             (carrier)

                           │ 000008 (byte) WaveForm        (modulator)

                           │ 000009 (byte) ...             (carrier)

    bit 7: retrigger flag >│ 00000a (byte) Feedback/FM

                           │ 00000b (word) frequency slide (signed)

                           │ 00000d (byte) panning (0=C,1=L,2=R)

                           └ 00000e (byte) duration

 

 0f2126 255*521  (byte)   table of 255 arpeggio/vibrato macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) speed

        000002      1 (byte) loop begin position

        000003      1 (byte) loop length

        000004      1 (byte) key-off position

        000005    255 (byte) table of 255 arpeggio definitions:

 

                             ┌────────────┬─────────────────────────────┐

                             │ 0          │ default note                │

                             │ 1-96       │ number of half-tones to add │

                             │ 1-97[+80h] │ fixed-note                  │

                             └────────────┴─────────────────────────────┘

 

        000104      1 (byte) length

        000105      1 (byte) speed

        000106      1 (byte) delay

        000107      1 (byte) loop begin position

        000108      1 (byte) loop length

        000109      1 (byte) key-off position

        00010a    255 (byte) table of 255 vibrato definitions:

 

                            ┌─────────┬─────────────────────────────────┐

                            │ 0       │ default frequency               │

                            │ -7F..7F │ frequency units to add (signed) │

                            └─────────┴─────────────────────────────────┘

 

 11281d    128   (byte)   pattern order table (order entries 00-7f)

 11289d      1   (byte)   initial tempo

 11289e      1   (byte)   initial speed

 11289f      1   (byte)   flags

 1128a0      2   (word)   pattern length

 1128a2      1   (byte)   number of tracks

 1128a3      2   (word)   macro speed-up factor

 1128a5      1   (byte)   4-op track extension flags

 1128a6     20   (byte)   initial lock flags for 20 tracks

 1128ba 128*43   (string) table of 128 pattern names [42 char each]

 113e3a 255*28   (byte)   table of 255 disabled fm-register columns:

 

        Offset Length Type

 

        000000      1 (byte) attack rate       ┐

        000001      1 (byte) decay rate        │

        000002      1 (byte) sustain level     │

        000003      1 (byte) release rate      │

        000004      1 (byte) waveform type     │

        000005      1 (byte) output level      ├ modulator

        000006      1 (byte) key scaling level │

        000007      1 (byte) multiplier        │

        000008      1 (byte) tremolo           │

        000009      1 (byte) vibrato           │

        00000a      1 (byte) key scale rate    │

        00000b      1 (byte) sustain           ┘

        00000c      1 (byte) attack rate       ┐

        00000d      1 (byte) decay rate        │

        00000e      1 (byte) sustain level     │

        00000f      1 (byte) release rate      │

        000010      1 (byte) waveform type     │

        000011      1 (byte) output level      ├ carrier

        000012      1 (byte) key scaling level │

        000013      1 (byte) multiplier        │

        000014      1 (byte) tremolo           │

        000015      1 (byte) vibrato           │

        000016      1 (byte) key scale rate    │

        000017      1 (byte) sustain           ┘

        000018      1 (byte) connection type

        000019      1 (byte) feedback

        00001a      1 (byte) frequency slide

        00001b      1 (byte) panning

 

 (since FFver. 12) 

 

 115a1e    129   (byte)  4OP instrument flags:

 

        Offset Length Type

 

        000000      1 (byte) number of 4OP instrument pairs

        000001      1 (byte) flag of instrument pair 1

        000002      1 (byte) flag of instrument pair 2

         ...           ...   ...        ...      ...

        000080      1 (byte) flag of instrument pair 128

 

 115a9f   1024   (byte)   reserved data

 

 (since FFver. 14) 

 

 115e9f      1   (byte)   rows per beat

 115ea0      2   (word)   (signed) tempo finetune

 

 structure of 'flags' byte:

 

 ┌─────┬────────────────────────────┐

 │ BiTSWiTCH                     │

 ├─────┼────────────────────────────┤

 │  0  │ update speed               │

 │  1  │ track volume lock          │

 │  2  │ volume peak lock           │

 │  3  │ tremolo depth              │

 │  4  │ vibrato depth              │

 │  5  │ track panning lock         │

 │  6  │ percussion track extension │

 │  7  │ volume scaling             │

 └─────┴────────────────────────────┘

 

 structure of '4-op track extension flags' byte:

 

 ┌─────┬──────────────┐

 │ BiTSWiTCH       │

 ├─────┼──────────────┤

 │  0  │ tracks 1,2   │

 │  1  │ tracks 3,4   │

 │  2  │ tracks 5,6   │

 │  3  │ tracks 10,11 │

 │  4  │ tracks 12,13 │

 │  5  │ tracks 14,15 │

 │  6  │ %unused%     │

 │  7  │ %unused%     │

 └─────┴──────────────┘

 

 structure of 'initial lock flags' byte:

 

 ┌─────┬─────────────────────────────────────────┐

 │ BiTSWiTCH                                 

 ├─────┼─────────────────────────────────────────┤

 │  0─┐│ panning position:                      

 │  1─┘│ 0=center, 1=left, 2=right               │

 │  2─┐│ volume slide type:                     

 │  3─┘│ 0=def, 1=car, 2=mod, 3=car w/mod       

 │  4  │ volume lock state                      

 │  5  │ peak lock state                        

 │  6  │ 4OP track volume lock (since FFver. 13)

 │  7  │ %unused%                                │

 └─────┴─────────────────────────────────────────┘

 

 structure of data block 1-16 (patterns) after decompression:

 

 Offset Length   Type

 

 000000 20*256*6 (byte)   pattern [block_number-1]*8+0

         │  │

 channel ┘  └ line        Offset Type

  1-20        0-255

                        ┌ 000000 (byte) note [0-96; +90h=fixed; 255=KO]

                        │ 000001 (byte) instrument

                6 bytes ┤ 000002 (byte) 1st effect command

                        │ 000003 (byte) 1st effect data

                        │ 000004 (byte) 2nd effect command

                        └ 000005 (byte) 2nd effect data

 

 007800 20*256*6 (byte)   pattern [block_number-1]*8+1

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

 070800 20*256*6 (byte)   pattern [block_number-1]*8+7

 

 

  A2T FiLE FORMAT DESCRiPTiON

 

 Offset Length   Type

 

 000000     15   (char)   ID string '_a2tiny_module_'

 00000f      4   (dword)  32-bit cyclic redundancy check value

 000013      1   (byte)   file format version

 000014      1   (byte)   number of patterns {#pat}

 000015      1   (byte)   initial tempo

 000016      1   (byte)   initial speed

 

  File format version 1-4

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-4 is following:

 FFver. 1: SixPack

 FFver. 2: LZW

 FFver. 3: LZSS

 FFver. 4: no compression

 Refer to unit depackio.pas for decompression routine.

 

 000017      2   (word)   length of data block 0 {%0}

 000019      2   (word)     ...    ...    ...  1 {%1}

 00001b      2   (word)     ...    ...    ...  2 {%2}

 00001d      2   (word)     ...    ...    ...  3 {%3}

 00001e      2   (word)     ...    ...    ...  4 {%4}

 000021      2   (word)     ...    ...    ...  5 {%5}

 000023     %0   (byte)   data block 0 (instruments)

   + %0     %1   (byte)   data block 1 (pattern order)

   + %1     %2   (byte)   data block 2 (patterns) 00-0f ┐

   + %2     %3   (byte)   data block 3    ...     10-1f ├ corresponds

   + %3     %4   (byte)   data block 4    ...     20-2f │ with #pat

   + %4     %5   (byte)   data block 5    ...     30-3f ┘

 

 --EOF-

 

 structure of data block 0 (instruments) after decompression:

 

 Offset Length   Type

 

 000000 ???*13   (byte)   table of ??? instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               13 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) miscellaneous (unused)

                        └ 00000c (byte) fine-tune (signed)

 

 structure of data block 1 (pattern order) after decompression:

 

 Offset Length   Type

 

 000000    128   (byte)   pattern order table (order entries 00-7f)

 

 

 structure of data block 2-5 (patterns) after decompression:

 

 Offset Length   Type

 

 000000 64*9*4   (byte)   pattern [block_number-2]*16+0

        │  │

  line ─┘  └ channel      Offset Type

  0-63         1-9

                        ┌ 000000 (byte) note [0-96] [255 is Key-Off]

                4 bytes ┤ 000001 (byte) instrument [0-250]

                        │ 000002 (byte) effect command [0-15]

                        └ 000003 (byte) effect data

 

 000900 64*9*4   (byte)   pattern [block_number-2]*16+1

    .     ...      ...      ...         ...

    .     ...      ...      ...         ...

    .     ...      ...      ...         ...

 008700 64*9*4   (byte)   pattern [block_number-2]*16+15

 

  File format version 5-8

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-4 is following:

 FFver. 5: SixPack

 FFver. 6: LZW

 FFver. 7: LZSS

 FFver. 8: no compression

 Refer to unit depackio.pas for decompression routine.

 

 000017      1   (byte)   flags

 000018      2   (word)   length of data block 0 {%0}

 00001a      2   (word)     ...    ...    ...  1 {%1}

 00001c      2   (word)     ...    ...    ...  2 {%2}

 00001e      2   (word)     ...    ...    ...  3 {%3}

 000020      2   (word)     ...    ...    ...  4 {%4}

 000022      2   (word)     ...    ...    ...  5 {%5}

 000024      2   (word)     ...    ...    ...  6 {%6}

 000026      2   (word)     ...    ...    ...  7 {%7}

 000028      2   (word)     ...    ...    ...  8 {%8}

 00002a      2   (word)     ...    ...    ...  9 {%9}

 00002c     %0   (byte)   data block 0 (instruments)

   + %0     %1   (byte)   data block 1 (pattern order)

   + %1     %2   (byte)   data block 2 (patterns) 00-07 ┐

   + %2     %3   (byte)   data block 3    ...     08-0f │

   + %3     %4   (byte)   data block 4    ...     10-17 │

   + %4     %5   (byte)   data block 5    ...     18-1f ├ corresponds

   + %5     %6   (byte)   data block 6    ...     20-27 │ with #pat

   + %6     %7   (byte)   data block 7    ...     28-2f │

   + %7     %8   (byte)   data block 8    ...     30-37 │

   + %8     %9   (byte)   data block 9    ...     38-3f ┘

 

 --EOF-

 

 structure of 'flags' byte:

 

 ┌─────┬────────────────────┐

 │ BiTSWiTCH             │

 ├─────┼────────────────────┤

 │  0  │ update speed       │

 │  1  │ track volume lock  │

 │  2  │ volume peak lock   │

 │  3  │ tremolo depth      │

 │  4  │ vibrato depth      │

 │  5  │ track panning lock │

 │  6  │ %unused%           │

 │  7  │ %unused%           │

 └─────┴────────────────────┘

 

 structure of data block 0 (instruments) after decompression:

 

 Offset Length   Type

 

 000000 %nn*13   (byte)   table of %nn instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               13 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        └ 00000c (byte) fine-tune (signed)

 

 structure of data block 1 (pattern order) after decompression:

 

 Offset Length   Type

 

 000000    128   (byte)   pattern order table (order entries 00-7f)

 

 

 structure of data block 2-9 (patterns) after decompression:

 

 Offset Length   Type

 

 000000 18*64*4  (byte)   pattern [block_number-2]*8+0

         │  │

 channel ┘  └ line        Offset Type

  1-18        0-63

                        ┌ 000000 (byte) note [0-96] [255 is Key-Off]

                4 bytes ┤ 000001 (byte) instrument [0-250]

                        │ 000002 (byte) effect command [0-35]

                        └ 000003 (byte) effect data

 

 001200 18*64*4  (byte)   pattern [block_number-2]*8+1

    .     ...     ...       ...         ...

    .     ...     ...       ...         ...

    .     ...     ...       ...         ...

 007e00 18*64*4  (byte)   pattern [block_number-2]*8+7

 

  File format version 9

 

 IMPORTANT!

 Compression algorithm used in FFver. 10 is Jibz's aPLib.

 Refer to unit depackio.pas for decompression routine.

 

 000017      1   (byte)   flags

 000018      2   (word)   pattern length

 00001a      1   (byte)   number of tracks

 00001b      1   (byte)   macro speed-up factor

 00001c      4   (dword)  length of data block 0  {%0}

 000020      4   (dword)    ...    ...    ...  1  {%1}

 000024      4   (dword)    ...    ...    ...  2  {%2}

 000028      4   (dword)    ...    ...    ...  3  {%3}

 00002c      4   (dword)    ...    ...    ...  4  {%4}

 000030      4   (dword)    ...    ...    ...  5  {%5}

 000034      4   (dword)    ...    ...    ...  6  {%6}

 000038      4   (dword)    ...    ...    ...  7  {%7}

 00003c      4   (dword)    ...    ...    ...  8  {%8}

 000040      4   (dword)    ...    ...    ...  9  {%9}

 000044      4   (dword)    ...    ...    ...  10 {%10}

 000048      4   (dword)    ...    ...    ...  11 {%11}

 00004c      4   (dword)    ...    ...    ...  12 {%12}

 000050      4   (dword)    ...    ...    ...  13 {%13}

 000054      4   (dword)    ...    ...    ...  14 {%14}

 000058      4   (dword)    ...    ...    ...  15 {%15}

 00005c      4   (dword)    ...    ...    ...  16 {%16}

 000060      4   (dword)    ...    ...    ...  17 {%17}

 000064      4   (dword)    ...    ...    ...  18 {%18}

 000068      4   (dword)    ...    ...    ...  19 {%19}

 00006c     %0   (byte)   data block 0 (instrument specs)

  +  %0     %1   (byte)   data block 1 (instrument macro-defs)

  +  %1     %2   (byte)   data block 2 (arpeggio/vibrato macro-defs)

  +  %2     %3   (byte)   data block 3 (pattern order)

  +  %3     %4   (byte)   data block 4 (patterns) 00-07 ┐

  +  %4     %5   (byte)   data block 5    ...     08-0f │

  +  %5     %6   (byte)   data block 6    ...     10-17 │

  +  %6     %7   (byte)   data block 7    ...     18-1f │

  +  %7     %8   (byte)   data block 8    ...     20-27 │

  +  %8     %9   (byte)   data block 9    ...     28-2f │

  +  %9    %10   (byte)   data block 10   ...     30-37 ├ corresponds

  + %10    %11   (byte)   data block 11   ...     38-3f │ with #pat

  + %11    %12   (byte)   data block 12   ...     40-47 │

  + %12    %13   (byte)   data block 13   ...     48-4f │

  + %13    %14   (byte)   data block 14   ...     50-57 │

  + %14    %15   (byte)   data block 15   ...     58-5f │

  + %15    %16   (byte)   data block 16   ...     60-67 │

  + %16    %17   (byte)   data block 17   ...     68-6f │

  + %17    %18   (byte)   data block 18   ...     70-77 │

  + %18    %19   (byte)   data block 19   ...     78-7f ┘

 

 --EOF-

 

 structure of 'flags' byte:

 

 ┌─────┬────────────────────────────┐

 │ BiTSWiTCH                     │

 ├─────┼────────────────────────────┤

 │  0  │ update speed               │

 │  1  │ track volume lock          │

 │  2  │ volume peak lock           │

 │  3  │ tremolo depth              │

 │  4  │ vibrato depth              │

 │  5  │ track panning lock         │

 │  6  │ percussion track extension │

 │  7  │ volume scaling             │

 └─────┴────────────────────────────┘

 

 structure of data block 0 (instrument specs) after decompression:

 

 Offset Length   Type

 

 000000 ???*14   (byte)   table of %nn instrument specs:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 structure of data block 1 (instrument macro-defs) after decompression:

 

 Offset Length   Type

 

 000000 255*3831 (byte)   table of 255 instrument macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) loop begin position

        000002      1 (byte) loop length

        000003      1 (byte) key-off position

        000004      1 (byte) arpeggio macro-table number

        000005      1 (byte) vibrato macro-table number

 

        000006 255*15 (byte) fm-register definitions:

 

                             Offset Type

 

                           ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                           │ 000001 (byte) ...             (carrier)

                           │ 000002 (byte) KSL/Volume      (modulator)

                           │ 000003 (byte) ...             (carrier)

                           │ 000004 (byte) Attack/Decay    (modulator)

                           │ 000005 (byte) ...             (carrier)

                  15 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                           │ 000007 (byte) ...             (carrier)

                           │ 000008 (byte) WaveForm        (modulator)

                           │ 000009 (byte) ...             (carrier)

                           │ 00000a (byte) Feedback/FM

                           │ 00000b (word) frequency slide (signed)

                           │ 00000d (byte) panning (0=C,1=L,2=R)

                           └ 00000e (byte) duration

 

 structure of data block 2 (arpg/vib macro-defs) after decompression:

 

 Offset Length   Type

 

 000000 255*521  (byte)   table of 255 arpeggio/vibrato macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) speed

        000002      1 (byte) loop begin position

        000003      1 (byte) loop length

        000004      1 (byte) key-off position

        000005    255 (byte) table of 255 arpeggio definitions:

 

                             ┌────────────┬─────────────────────────────┐

                             │ 0          │ default note                │

                             │ 1-96       │ number of half-tones to add │

                             │ 1-97[+80h] │ fixed-note                  │

                             └────────────┴─────────────────────────────┘

 

        000104      1 (byte) length

        000105      1 (byte) speed

        000106      1 (byte) delay

        000107      1 (byte) loop begin position

        000108      1 (byte) loop length

        000109      1 (byte) key-off position

        00010a    255 (byte) table of 255 vibrato definitions:

 

                            ┌─────────┬─────────────────────────────────┐

                            │ 0       │ default frequency               │

                            │ -7F..7F │ frequency units to add (signed) │

                            └─────────┴─────────────────────────────────┘

 

 structure of data block 3 (pattern order) after decompression:

 

 Offset Length   Type

 

 000000    128   (byte)   pattern order table (order entries 00-7f)

 

 

 structure of data block 4-19 (patterns) after decompression:

 

 Offset Length   Type

 

 000000 20*256*6 (byte)   pattern [block_number-4]*8+0

         │  │

 channel ┘  └ line        Offset Type

  1-20        0-255

                        ┌ 000000 (byte) note [0-96; +90h=fixed; 255=Key-Off]

                        │ 000001 (byte) instrument

                6 bytes ┤ 000002 (byte) 1st effect command

                        │ 000003 (byte) 1st effect data

                        │ 000004 (byte) 2nd effect command

                        └ 000005 (byte) 2nd effect data

 

 007800 20*256*6 (byte)   pattern [block_number-4]*8+1

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

 070800 20*256*6 (byte)   pattern [block_number-4]*8+7

 

  File format version 10

 

 IMPORTANT!

 Compression algorithm used in FFver. 10 is Jibz's aPLib.

 Refer to unit depackio.pas for decompression routine.

 

 000017      1   (byte)   flags

 000018      2   (word)   pattern length

 00001a      1   (byte)   number of tracks

 00001b      1   (byte)   macro speed-up factor

 00001c      1   (byte)   4-op track extension flags

 00001d     20   (byte)   initial lock flags for 20 tracks

 000031      4   (dword)  length of data block 0  {%0}

 000035      4   (dword)    ...    ...    ...  1  {%1}

 000039      4   (dword)    ...    ...    ...  2  {%2}

 00003d      4   (dword)    ...    ...    ...  3  {%3}

 000041      4   (dword)    ...    ...    ...  4  {%4}

 000045      4   (dword)    ...    ...    ...  5  {%5}

 000049      4   (dword)    ...    ...    ...  6  {%6}

 00004d      4   (dword)    ...    ...    ...  7  {%7}

 000051      4   (dword)    ...    ...    ...  8  {%8}

 000055      4   (dword)    ...    ...    ...  9  {%9}

 000059      4   (dword)    ...    ...    ...  10 {%10}

 00005d      4   (dword)    ...    ...    ...  11 {%11}

 000061      4   (dword)    ...    ...    ...  12 {%12}

 000065      4   (dword)    ...    ...    ...  13 {%13}

 000069      4   (dword)    ...    ...    ...  14 {%14}

 00006d      4   (dword)    ...    ...    ...  15 {%15}

 000071      4   (dword)    ...    ...    ...  16 {%16}

 000075      4   (dword)    ...    ...    ...  17 {%17}

 000079      4   (dword)    ...    ...    ...  18 {%18}

 00007d      4   (dword)    ...    ...    ...  19 {%19}

 000081     %0   (byte)   data block 0 (instrument specs)

  +  %0     %1   (byte)   data block 1 (instrument macro-defs)

  +  %1     %2   (byte)   data block 2 (arpeggio/vibrato macro-defs)

  +  %2     %3   (byte)   data block 3 (pattern order)

  +  %3     %4   (byte)   data block 4 (patterns) 00-07 ┐

  +  %4     %5   (byte)   data block 5    ...     08-0f │

  +  %5     %6   (byte)   data block 6    ...     10-17 │

  +  %6     %7   (byte)   data block 7    ...     18-1f │

  +  %7     %8   (byte)   data block 8    ...     20-27 │

  +  %8     %9   (byte)   data block 9    ...     28-2f │

  +  %9    %10   (byte)   data block 10   ...     30-37 ├ corresponds

  + %10    %11   (byte)   data block 11   ...     38-3f │ with #pat

  + %11    %12   (byte)   data block 12   ...     40-47 │

  + %12    %13   (byte)   data block 13   ...     48-4f │

  + %13    %14   (byte)   data block 14   ...     50-57 │

  + %14    %15   (byte)   data block 15   ...     58-5f │

  + %15    %16   (byte)   data block 16   ...     60-67 │

  + %16    %17   (byte)   data block 17   ...     68-6f │

  + %17    %18   (byte)   data block 18   ...     70-77 │

  + %18    %19   (byte)   data block 19   ...     78-7f ┘

 

 --EOF-

 

 structure of 'flags' byte:

 

 ┌─────┬────────────────────────────┐

 │ BiTSWiTCH                     │

 ├─────┼────────────────────────────┤

 │  0  │ update speed               │

 │  1  │ track volume lock          │

 │  2  │ volume peak lock           │

 │  3  │ tremolo depth              │

 │  4  │ vibrato depth              │

 │  5  │ track panning lock         │

 │  6  │ percussion track extension │

 │  7  │ volume scaling             │

 └─────┴────────────────────────────┘

 

 structure of '4-op track extension flags' byte:

 

 ┌─────┬──────────────┐

 │ BiTSWiTCH       │

 ├─────┼──────────────┤

 │  0  │ tracks 1,2   │

 │  1  │ tracks 3,4   │

 │  2  │ tracks 5,6   │

 │  3  │ tracks 10,11 │

 │  4  │ tracks 12,13 │

 │  5  │ tracks 14,15 │

 │  6  │ %unused%     │

 │  7  │ %unused%     │

 └─────┴──────────────┘

 

 structure of 'initial lock flags' byte:

 

 ┌─────┬──────────────────────────────────┐

 │ BiTSWiTCH                           │

 ├─────┼──────────────────────────────────┤

 │  0─┐│ panning position:                │

 │  1─┘│ 0=center, 1=left, 2=right        │

 │  2─┐│ volume slide type:               │

 │  3─┘│ 0=def, 1=car, 2=mod, 3=car w/mod │

 │  4  │ volume lock state                │

 │  5  │ peak lock state                  │

 │  6  │ %unused%                         │

 │  7  │ %unused%                         │

 └─────┴──────────────────────────────────┘

 

 structure of data block 0 (instrument specs) after decompression:

 

 Offset Length   Type

 

 000000 ???*14   (byte)   table of %nn instrument specs:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 structure of data block 1 (instrument macro-defs) after decompression:

 

 Offset Length   Type

 

 000000 255*3831 (byte)   table of 255 instrument macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) loop begin position

        000002      1 (byte) loop length

        000003      1 (byte) key-off position

        000004      1 (byte) arpeggio macro-table number

        000005      1 (byte) vibrato macro-table number

 

        000006 255*15 (byte) fm-register definitions:

 

                             Offset Type

 

                           ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                           │ 000001 (byte) ...             (carrier)

                           │ 000002 (byte) KSL/Volume      (modulator)

                           │ 000003 (byte) ...             (carrier)

                           │ 000004 (byte) Attack/Decay    (modulator)

                           │ 000005 (byte) ...             (carrier)

                  15 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                           │ 000007 (byte) ...             (carrier)

                           │ 000008 (byte) WaveForm        (modulator)

                           │ 000009 (byte) ...             (carrier)

                           │ 00000a (byte) Feedback/FM

                           │ 00000b (word) frequency slide (signed)

                           │ 00000d (byte) panning (0=C,1=L,2=R)

                           └ 00000e (byte) duration

 

 structure of data block 2 (arpg/vib macro-defs) after decompression:

 

 Offset Length   Type

 

 000000 255*521  (byte)   table of 255 arpeggio/vibrato macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) speed

        000002      1 (byte) loop begin position

        000003      1 (byte) loop length

        000004      1 (byte) key-off position

        000005    255 (byte) table of 255 arpeggio definitions:

 

                             ┌────────────┬─────────────────────────────┐

                             │ 0          │ default note                │

                             │ 1-96       │ number of half-tones to add │

                             │ 1-97[+80h] │ fixed-note                  │

                             └────────────┴─────────────────────────────┘

 

        000104      1 (byte) length

        000105      1 (byte) speed

        000106      1 (byte) delay

        000107      1 (byte) loop begin position

        000108      1 (byte) loop length

        000109      1 (byte) key-off position

        00010a    255 (byte) table of 255 vibrato definitions:

 

                            ┌─────────┬─────────────────────────────────┐

                            │ 0       │ default frequency               │

                            │ -7F..7F │ frequency units to add (signed) │

                            └─────────┴─────────────────────────────────┘

 

 structure of data block 3 (pattern order) after decompression:

 

 Offset Length   Type

 

 000000    128   (byte)   pattern order table (order entries 00-7f)

 

 

 structure of data block 4-19 (patterns) after decompression:

 

 Offset Length   Type

 

 000000 20*256*6 (byte)   pattern [block_number-4]*8+0

         │  │

 channel ┘  └ line        Offset Type

  1-20        0-255

                        ┌ 000000 (byte) note [0-96; +90h=fixed; 255=Key-Off]

                        │ 000001 (byte) instrument

                6 bytes ┤ 000002 (byte) 1st effect command

                        │ 000003 (byte) 1st effect data

                        │ 000004 (byte) 2nd effect command

                        └ 000005 (byte) 2nd effect data

 

 007800 20*256*6 (byte)   pattern [block_number-4]*8+1

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

 070800 20*256*6 (byte)   pattern [block_number-4]*8+7

 

  File format version 11-14

 

 IMPORTANT!

 Compression algorithm used in FFver. 11-13 is following:

 FFver. 11-12: Jibz's aPLib,

 FFver. 13:    own implementation of LZH

 Refer to unit depackio.pas respectively adt2pack.pas for decompression routine.

 

 000017      1   (byte)   flags

 000018      2   (word)   pattern length

 00001a      1   (byte)   number of tracks

 00001b      1   (byte)   macro speed-up factor

 00001c      1   (byte)   4-op track extension flags

 00001d     20   (byte)   initial lock flags for 20 tracks

 000031      4   (dword)  length of data block 0  {%0}

 000035      4   (dword)    ...    ...    ...  1  {%1}

 000039      4   (dword)    ...    ...    ...  2  {%2}

 00003d      4   (dword)    ...    ...    ...  3  {%3}

 000041      4   (dword)    ...    ...    ...  4  {%4}

 000045      4   (dword)    ...    ...    ...  5  {%5}

 000049      4   (dword)    ...    ...    ...  6  {%6}

 00004d      4   (dword)    ...    ...    ...  7  {%7}

 000051      4   (dword)    ...    ...    ...  8  {%8}

 000055      4   (dword)    ...    ...    ...  9  {%9}

 000059      4   (dword)    ...    ...    ...  10 {%10}

 00005d      4   (dword)    ...    ...    ...  11 {%11}

 000061      4   (dword)    ...    ...    ...  12 {%12}

 000065      4   (dword)    ...    ...    ...  13 {%13}

 000069      4   (dword)    ...    ...    ...  14 {%14}

 00006d      4   (dword)    ...    ...    ...  15 {%15}

 000071      4   (dword)    ...    ...    ...  16 {%16}

 000075      4   (dword)    ...    ...    ...  17 {%17}

 000079      4   (dword)    ...    ...    ...  18 {%18}

 00007d      4   (dword)    ...    ...    ...  19 {%19}

 000081      4   (dword)    ...    ...    ...  20 {%20}

 000085     %0   (byte)   data block 0 (instrument specs)

  +  %0     %1   (byte)   data block 1 (instrument macro-defs)

  +  %1     %2   (byte)   data block 2 (arpeggio/vibrato macro-defs)

  +  %2     %3   (byte)   data block 3 (disabled fm-register columns)

  +  %3     %4   (byte)   data block 4 (pattern order)

  +  %4     %5   (byte)   data block 5 (patterns) 00-07 ┐

  +  %5     %6   (byte)   data block 6    ...     08-0f │

  +  %6     %7   (byte)   data block 7    ...     10-17 │

  +  %7     %8   (byte)   data block 8    ...     18-1f │

  +  %8     %9   (byte)   data block 9    ...     20-27 │

  +  %9    %10   (byte)   data block 10   ...     28-2f │

  + %10    %11   (byte)   data block 11   ...     30-37 ├ corresponds

  + %11    %12   (byte)   data block 12   ...     38-3f │ with #pat

  + %12    %13   (byte)   data block 13   ...     40-47 │

  + %13    %14   (byte)   data block 14   ...     48-4f │

  + %14    %15   (byte)   data block 15   ...     50-57 │

  + %15    %16   (byte)   data block 16   ...     58-5f │

  + %16    %17   (byte)   data block 17   ...     60-67 │

  + %17    %18   (byte)   data block 18   ...     68-6f │

  + %18    %19   (byte)   data block 19   ...     70-77 │

  + %19    %20   (byte)   data block 20   ...     78-7f ┘

 

 --EOF-

 

 structure of 'flags' byte:

 

 ┌─────┬────────────────────────────┐

 │ BiTSWiTCH                     │

 ├─────┼────────────────────────────┤

 │  0  │ update speed               │

 │  1  │ track volume lock          │

 │  2  │ volume peak lock           │

 │  3  │ tremolo depth              │

 │  4  │ vibrato depth              │

 │  5  │ track panning lock         │

 │  6  │ percussion track extension │

 │  7  │ volume scaling             │

 └─────┴────────────────────────────┘

 

 structure of '4-op track extension flags' byte:

 

 ┌─────┬──────────────┐

 │ BiTSWiTCH       │

 ├─────┼──────────────┤

 │  0  │ tracks 1,2   │

 │  1  │ tracks 3,4   │

 │  2  │ tracks 5,6   │

 │  3  │ tracks 10,11 │

 │  4  │ tracks 12,13 │

 │  5  │ tracks 14,15 │

 │  6  │ %unused%     │

 │  7  │ %unused%     │

 └─────┴──────────────┘

 

 structure of 'initial lock flags' byte:

 

 ┌─────┬─────────────────────────────────────────┐

 │ BiTSWiTCH                                  

 ├─────┼─────────────────────────────────────────┤

 │  0─┐│ panning position:                      

 │  1─┘│ 0=center, 1=left, 2=right               │

 │  2─┐│ volume slide type:                     

 │  3─┘│ 0=def, 1=car, 2=mod, 3=car w/mod       

 │  4  │ volume lock state                      

 │  5  │ peak lock state                        

 │  6  │ 4OP track volume lock (since FFver. 13)

 │  7  │ %unused%                                │

 └─────┴─────────────────────────────────────────┘

 

 structure of data block 0 (instrument specs) after decompression:

 

 (FFver. 11)

 

 Offset Length   Type

 

 000000 ???*14   (byte)   table of %nn instrument specs:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 (FFver. 12-13)

 (FFver. 14)

 

 Offset Length   Type

 

 000000      1   (byte)  rows per beat

 000001      2   (word)  (signed) tempo finetune

 000000    129   (byte)  4OP instrument flags:
 
000003

 

        Offset Length Type

 

        000000      1 (byte) number of 4OP instrument pairs

        000001      1 (byte) flag of instrument pair 1

        000002      1 (byte) flag of instrument pair 2

         ...           ...   ...        ...      ...

        000080      1 (byte) flag of instrument pair 128

 

 000081
 
000084   1024   (byte)   reserved data 

 000481
 
000484 ???*14   (byte)   table of %nn instrument specs:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 

Offset Length   Type

 

 000003    129   (byte)  4OP instrument flags:

 

        Offset Length Type

 

        000000      1 (byte) number of 4OP instrument pairs

        000001      1 (byte) flag of instrument pair 1

        000002      1 (byte) flag of instrument pair 2

         ...           ...   ...        ...      ...

        000080      1 (byte) flag of instrument pair 128

 

 000084   1024   (byte)   reserved data 

 000484 ???*14   (byte)   table of %nn instrument specs:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 structure of data block 1 (instrument macro-defs) after decompression:

 

 Offset Length   Type

 

 000000 255*3831 (byte)   table of 255 instrument macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) loop begin position

        000002      1 (byte) loop length

        000003      1 (byte) key-off position

        000004      1 (byte) arpeggio macro-table number

        000005      1 (byte) vibrato macro-table number

 

        000006 255*15 (byte) fm-register definitions:

 

                             Offset Type

 

                           ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                           │ 000001 (byte) ...             (carrier)

                           │ 000002 (byte) KSL/Volume      (modulator)

                           │ 000003 (byte) ...             (carrier)

                           │ 000004 (byte) Attack/Decay    (modulator)

                           │ 000005 (byte) ...             (carrier)

                  15 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                           │ 000007 (byte) ...             (carrier)

                           │ 000008 (byte) WaveForm        (modulator)

                           │ 000009 (byte) ...             (carrier)

    bit 7: retrigger flag >│ 00000a (byte) Feedback/FM

                           │ 00000b (word) frequency slide (signed)

                           │ 00000d (byte) panning (0=C,1=L,2=R)

                           └ 00000e (byte) duration

 

 structure of data block 2 (arpg/vib macro-defs) after decompression:

 

 Offset Length   Type

 

 000000 255*521  (byte)   table of 255 arpeggio/vibrato macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) speed

        000002      1 (byte) loop begin position

        000003      1 (byte) loop length

        000004      1 (byte) key-off position

        000005    255 (byte) table of 255 arpeggio definitions:

 

                             ┌────────────┬─────────────────────────────┐

                             │ 0          │ default note                │

                             │ 1-96       │ number of half-tones to add │

                             │ 1-97[+80h] │ fixed-note                  │

                             └────────────┴─────────────────────────────┘

 

        000104      1 (byte) length

        000105      1 (byte) speed

        000106      1 (byte) delay

        000107      1 (byte) loop begin position

        000108      1 (byte) loop length

        000109      1 (byte) key-off position

        00010a    255 (byte) table of 255 vibrato definitions:

 

                            ┌─────────┬─────────────────────────────────┐

                            │ 0       │ default frequency               │

                            │ -7F..7F │ frequency units to add (signed) │

                            └─────────┴─────────────────────────────────┘

 

 structure of data block 3 (disabled fm-reg columns) after decompression:

 

 Offset Length   Type

 

 000000  255*28  (byte)   table of 255 disabled fm-reg column flags:

 

        Offset Length Type

 

        000000      1 (byte) attack rate       ┐

        000001      1 (byte) decay rate        │

        000002      1 (byte) sustain level     │

        000003      1 (byte) release rate      │

        000004      1 (byte) waveform type     │

        000005      1 (byte) output level      ├ modulator

        000006      1 (byte) key scaling level │

        000007      1 (byte) multiplier        │

        000008      1 (byte) tremolo           │

        000009      1 (byte) vibrato           │

        00000a      1 (byte) key scale rate    │

        00000b      1 (byte) sustain           ┘

        00000c      1 (byte) attack rate       ┐

        00000d      1 (byte) decay rate        │

        00000e      1 (byte) sustain level     │

        00000f      1 (byte) release rate      │

        000010      1 (byte) waveform type     │

        000011      1 (byte) output level      ├ carrier

        000012      1 (byte) key scaling level │

        000013      1 (byte) multiplier        │

        000014      1 (byte) tremolo           │

        000015      1 (byte) vibrato           │

        000016      1 (byte) key scale rate    │

        000017      1 (byte) sustain           ┘

        000018      1 (byte) connection type

        000019      1 (byte) feedback

        00001a      1 (byte) frequency slide

        00001b      1 (byte) panning

 

 structure of data block 4 (pattern order) after decompression:

 

 Offset Length   Type

 

 000000    128   (byte)   pattern order table (order entries 00-7f)

 

 

 structure of data block 5-20 (patterns) after decompression:

 

 Offset Length   Type

 

 000000 20*256*6 (byte)   pattern [block_number-5]*8+0

         │  │

 channel ┘  └ line        Offset Type

  1-20        0-255

                        ┌ 000000 (byte) note [0-96; +90h=fixed; 255=Key-Off]

                        │ 000001 (byte) instrument

                6 bytes ┤ 000002 (byte) 1st effect command

                        │ 000003 (byte) 1st effect data

                        │ 000004 (byte) 2nd effect command

                        └ 000005 (byte) 2nd effect data

 

 007800 20*256*6 (byte)   pattern [block_number-5]*8+1

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

    .      ...    ...       ...         ...

 070800 20*256*6 (byte)   pattern [block_number-5]*8+7

 

 

  A2P FiLE FORMAT DESCRiPTiON

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-4 is following:

 FFver. 1: SixPack

 FFver. 2: LZW

 FFver. 3: LZSS

 FFver. 4: no compression

 Refer to unit depackio.pas for decompression routine.

 

 Offset Length   Type

 

 000000     11   (char)   ID string '_a2pattern_'

 00000b      4   (dword)  32-bit cyclic redundancy check value

 00000f      1   (byte)   file format version

 

  File format version 1-4

 

 000010      2   (word)   length of data block {%len}

 000012   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000 64*9*4   (byte)   pattern

        │  │

  line ─┘  └ channel      Offset Type

  0-63         1-9

                        ┌ 000000 (byte) note [0-96] [255 is Key-Off]

                4 bytes ┤ 000001 (byte) instrument [0-250]

                        │ 000002 (byte) effect command [0-15]

                        └ 000003 (byte) effect data

 

  File format version 5-8

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-4 is following:

 FFver. 5: SixPack

 FFver. 6: LZW

 FFver. 7: LZSS

 FFver. 8: no compression

 Refer to unit depackio.pas for decompression routine.

 

 000010      2   (word)   length of data block {%len}

 000012   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000 18*64*4  (byte)   pattern

         │  │

 channel ┘  └ line        Offset Type

  1-18        0-63

                        ┌ 000000 (byte) note [0-96] [255 is Key-Off]

                4 bytes ┤ 000001 (byte) instrument [0-250]

                        │ 000002 (byte) effect command [0-35]

                        └ 000003 (byte) effect data

 

  File format version 9

 

 IMPORTANT!

 Compression algorithm used in FFver. 9 is Jibz's aPLib.

 Refer to unit depackio.pas for decompression routine.

 

 000010      4   (dword)  length of data block {%len}

 000014   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000 20*256*6 (byte)   pattern

         │  │

 channel ┘  └ line        Offset Type

  1-20        0-255

                        ┌ 000000 (byte) note [0-96; +90h=fixed; 255=Key-Off]

                        │ 000001 (byte) instrument

                6 bytes ┤ 000002 (byte) 1st effect command

                        │ 000003 (byte) 1st effect data

                        │ 000004 (byte) 2nd effect command

                        └ 000005 (byte) 2nd effect data

 

  File format version 10-11

 

 IMPORTANT!

 Compression algorithm used in FFver. 10-11 is following:

 FFver. 10: Jibz's aPLib,

 FFver. 11: own implementation of LZH

 Refer to unit depackio.pas respectively adt2pack.pas for decompression routine.

 

 000010      4   (dword)  length of data block {%len}

 000014   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000 20*256*6 (byte)   pattern

         │  │

 channel ┘  └ line        Offset Type

  1-20        0-255

                        ┌ 000000 (byte) note [0-96; +90h=fixed; 255=Key-Off]

                        │ 000001 (byte) instrument

                6 bytes ┤ 000002 (byte) 1st effect command

                        │ 000003 (byte) 1st effect data

                        │ 000004 (byte) 2nd effect command

                        └ 000005 (byte) 2nd effect data

 

 007800       31 (string) pattern name [30 characters]

 

 

  A2i FiLE FORMAT DESCRiPTiON

 

 Offset Length   Type

 

 000000      7   (char)   ID string '_a2ins_'

 000007      2   (word)   16-bit cyclic redundancy check value

 000009      1   (byte)   file format version

 

  File format version 1-4

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-4 is following:

 FFver. 1: SixPack

 FFver. 2: LZW

 FFver. 3: LZSS

 FFver. 4: no compression

 Refer to unit depackio.pas for decompression routine.

 

 00000a      1   (byte)   length of data block {%len}

 00000b   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000      1   (byte)   AM/Vibrato/EG   (modulator)

 000001      1   (byte)   ...             (carrier)

 000002      1   (byte)   KSL/Volume      (modulator)

 000003      1   (byte)   ...             (carrier)

 000004      1   (byte)   Attack/Decay    (modulator)

 000005      1   (byte)   ...             (carrier)

 000006      1   (byte)   Sustain/Release (modulator)

 000007      1   (byte)   ...             (carrier)

 000008      1   (byte)   WaveForm        (modulator)

 000009      1   (byte)   ...             (carrier)

 00000a      1   (byte)   Feedback/FM

 00000b      1   (byte)   miscellaneous (unused)

 00000c      1   (byte)   fine-tune (signed)

 00000d     23   (string) instrument name [22 characters]

 

  File format version 5-8

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-4 is following:

 FFver. 5: SixPack

 FFver. 6: LZW

 FFver. 7: LZSS

 FFver. 8: no compression

 Refer to unit depackio.pas for decompression routine.

 

 00000a      1   (byte)   length of data block {%len}

 00000b   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000      1   (byte)   AM/Vibrato/EG   (modulator)

 000001      1   (byte)   ...             (carrier)

 000002      1   (byte)   KSL/Volume      (modulator)

 000003      1   (byte)   ...             (carrier)

 000004      1   (byte)   Attack/Decay    (modulator)

 000005      1   (byte)   ...             (carrier)

 000006      1   (byte)   Sustain/Release (modulator)

 000007      1   (byte)   ...             (carrier)

 000008      1   (byte)   WaveForm        (modulator)

 000009      1   (byte)   ...             (carrier)

 00000a      1   (byte)   Feedback/FM

 00000b      1   (byte)   panning (0=C,1=L,2=R)

 00000c      1   (byte)   fine-tune (signed)

 00000d     23   (string) instrument name [22 characters]

 

  File format version 9-10

 

 IMPORTANT!

 Compression algorithm used in FFver. 9-10 is following:

 FFver. 9:  Jibz's aPLib,

 FFver. 10: own implementation of LZH

 Refer to unit depackio.pas respectively adt2pack.pas for decompression routine.

               

 00000a      2   (word)   length of data block {%len}

 00000c   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000      1   (byte)   AM/Vibrato/EG   (modulator)

 000001      1   (byte)   ...             (carrier)

 000002      1   (byte)   KSL/Volume      (modulator)

 000003      1   (byte)   ...             (carrier)

 000004      1   (byte)   Attack/Decay    (modulator)

 000005      1   (byte)   ...             (carrier)

 000006      1   (byte)   Sustain/Release (modulator)

 000007      1   (byte)   ...             (carrier)

 000008      1   (byte)   WaveForm        (modulator)

 000009      1   (byte)   ...             (carrier)

 00000a      1   (byte)   Feedback/FM

 00000b      1   (byte)   panning (0=C,1=L,2=R)

 00000c      1   (byte)   fine-tune (signed)

 00000d      1   (byte)   voice type:

 

                          ┌─────┬─────────────────────────────┐

                          │ 0   │ melodic                     │

                          │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

                          └─────┴─────────────────────────────┘

 

 00000e     33   (string) instrument name [32 characters]

 

 (since FFver. 10)

 

 2nd instrument of 4OP pair (optional)

 

 00002f      1   (byte)   AM/Vibrato/EG   (modulator)

 000030      1   (byte)   ...             (carrier)

 000031      1   (byte)   KSL/Volume      (modulator)

 000032      1   (byte)   ...             (carrier)

 000033      1   (byte)   Attack/Decay    (modulator)

 000034      1   (byte)   ...             (carrier)

 000035      1   (byte)   Sustain/Release (modulator)

 000036      1   (byte)   ...             (carrier)

 000037      1   (byte)   WaveForm        (modulator)

 000038      1   (byte)   ...             (carrier)

 000039      1   (byte)   Feedback/FM

 00003a      1   (byte)   panning (0=C,1=L,2=R)

 00003b      1   (byte)   fine-tune (signed)

 00003c      1   (byte)   voice type

 00003d     33   (string) instrument name [32 characters]

 

 

  A2B FiLE FORMAT DESCRiPTiON

 

 Offset Length   Type

 

 000000     11   (char)   ID string '_a2insbank_'

 00000b      4   (dword)  32-bit cyclic redundancy check value

 00000f      1   (byte)   file format version

 

  File format version 1-4

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-4 is following:

 FFver. 1: SixPack

 FFver. 2: LZW

 FFver. 3: LZSS

 FFver. 4: no compression

 Refer to unit depackio.pas for decompression routine.

 

 000010      2   (word)   length of data block {%len}

 000012   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000 250*33   (string) table of 250 instrument names [32 chars each]

 00203a 250*13   (byte)   table of 250 instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               13 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) miscellaneous (unused)

                        └ 00000c (byte) fine-tune (signed)

 

 File format version 5-8

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-4 is following:

 FFver. 5: SixPack

 FFver. 6: LZW

 FFver. 7: LZSS

 FFver. 8: no compression

 Refer to unit depackio.pas for decompression routine.

 

 000010      2   (word)   length of data block {%len}

 000012   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000 250*33   (string) table of 250 instrument names [32 chars each]

 00203a 250*13   (byte)   table of 250 instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               13 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        └ 00000c (byte) fine-tune (signed)

 

  File format version 9-10

 

 IMPORTANT!

 Compression algorithm used in FFver. 9-10 is following:

 FFver. 9:  Jibz's aPLib,

 FFver. 11: own implementation of LZH

 Refer to unit depackio.pas respectively adt2pack.pas for decompression routine.

 

 000010      4   (dword)  length of data block {%len}

 000014   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000 255*33   (string) table of 255 instrument names [32 chars each]

 0020df 255*14   (byte)   table of 255 instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 (since FFver. 10)

 

 011985    129   (byte)  4OP instrument flags:

 

        Offset Length Type

 

        000000      1 (byte) number of 4OP instrument pairs

        000001      1 (byte) flag of instrument pair 1

        000002      1 (byte) flag of instrument pair 2

         ...           ...   ...        ...      ...

        000080      1 (byte) flag of instrument pair 128

 

 

  A2W FiLE FORMAT DESCRiPTiON

 

 Offset Length   Type

 

 000000     20   (char)   ID string '_a2insbank_w/macros_'

 00000b      4   (dword)  32-bit cyclic redundancy check value

 00000f      1   (byte)   file format version

 

  File format version 1

 

 IMPORTANT!

 Compression algorithm used in FFver. 1 is Jibz's aPLib.

 Refer to unit depackio.pas for decompression routine.

 

 000010      4   (dword)  length of data block 0 {%1}

 000014      4   (dword)  length of data block 1 {%2}

 000018     %1   (byte)   data block 0 (instrument specifications/macro-defs)

   + %1     %2   (byte)   data block 1 (arpeggio/vibrato macro-defs)

 

 --EOF-

 

 structure of data block 0 (instrument specs/macro-defs) after decompression:

 

 Offset Length   Type

 

 000000 255*33   (string) table of 255 instrument names [32 chars each]

 0020df 255*14   (byte)   table of 255 instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 002ed1 255*3831 (byte)   table of 255 instrument macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) loop begin position

        000002      1 (byte) loop length

        000003      1 (byte) key-off position

        000004      1 (byte) arpeggio macro-table number

        000005      1 (byte) vibrato macro-table number

 

        000006 255*15 (byte) fm-register definitions:

 

                             Offset Type

 

                           ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                           │ 000001 (byte) ...             (carrier)

                           │ 000002 (byte) KSL/Volume      (modulator)

                           │ 000003 (byte) ...             (carrier)

                           │ 000004 (byte) Attack/Decay    (modulator)

                           │ 000005 (byte) ...             (carrier)

                  15 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                           │ 000007 (byte) ...             (carrier)

                           │ 000008 (byte) WaveForm        (modulator)

                           │ 000009 (byte) ...             (carrier)

                           │ 00000a (byte) Feedback/FM

                           │ 00000b (word) frequency slide (signed)

                           │ 00000d (byte) panning (0=C,1=L,2=R)

                           └ 00000e (byte) duration

 

 structure of data block 1 (arpeggio/vibrato macro-defs) after decompression:

 

 000000 255*521  (byte)   table of 255 arpeggio/vibrato macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) speed

        000002      1 (byte) loop begin position

        000003      1 (byte) loop length

        000004      1 (byte) key-off position

        000005    255 (byte) table of 255 arpeggio definitions:

 

                             ┌────────────┬─────────────────────────────┐

                             │ 0          │ default note                │

                             │ 1-96       │ number of half-tones to add │

                             │ 1-97[+80h] │ fixed-note                  │

                             └────────────┴─────────────────────────────┘

 

        000104      1 (byte) length

        000105      1 (byte) speed

        000106      1 (byte) delay

        000107      1 (byte) loop begin position

        000108      1 (byte) loop length

        000109      1 (byte) key-off position

        00010a    255 (byte) table of 255 vibrato definitions:

 

                            ┌─────────┬─────────────────────────────────┐

                            │ 0       │ default frequency               │

                            │ -7F..7F │ frequency units to add (signed) │

                            └─────────┴─────────────────────────────────┘

 

  File format version 2-3

 

 IMPORTANT!

 Compression algorithm used in FFver. 2-3 is following:

 FFver. 2: Jibz's aPLib,

 FFver. 3: own implementation of LZH

 Refer to unit depackio.pas respectively adt2pack.pas for decompression routine.

 

 000010      4   (dword)  length of data block 0 {%1}

 000014      4   (dword)  length of data block 1 {%2}

 000018      4   (dword)  length of data block 2 {%3}

 00001c     %1   (byte)   data block 0 (instrument specifications/macro-defs)

   + %1     %2   (byte)   data block 1 (arpeggio/vibrato macro-defs)

   + %2     %3   (byte)   data block 2 (disabled fm-register columns)

 

 --EOF-

 

 structure of data block 0 (instrument specs/macro-defs) after decompression:

 

 Offset Length   Type

 

 000000 255*33   (string) table of 255 instrument names [32 chars each]

 0020df 255*14   (byte)   table of 255 instrument specifications:

 

                          Offset Type

 

                        ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                        │ 000001 (byte) ...             (carrier)

                        │ 000002 (byte) KSL/Volume      (modulator)

                        │ 000003 (byte) ...             (carrier)

                        │ 000004 (byte) Attack/Decay    (modulator)

                        │ 000005 (byte) ...             (carrier)

               14 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                        │ 000007 (byte) ...             (carrier)

                        │ 000008 (byte) WaveForm        (modulator)

                        │ 000009 (byte) ...             (carrier)

                        │ 00000a (byte) Feedback/FM

                        │ 00000b (byte) panning (0=C,1=L,2=R)

                        │ 00000c (byte) fine-tune (signed)

                        └ 00000d (byte) voice type:


   ┌─────┬─────────────────────────────┐

   │ 0   │ melodic                     │

   │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

   └─────┴─────────────────────────────┘

 

 002ed1 255*3831 (byte)   table of 255 instrument macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) loop begin position

        000002      1 (byte) loop length

        000003      1 (byte) key-off position

        000004      1 (byte) arpeggio macro-table number

        000005      1 (byte) vibrato macro-table number

 

        000006 255*15 (byte) fm-register definitions:

 

                             Offset Type

 

                           ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                           │ 000001 (byte) ...             (carrier)

                           │ 000002 (byte) KSL/Volume      (modulator)

                           │ 000003 (byte) ...             (carrier)

                           │ 000004 (byte) Attack/Decay    (modulator)

                           │ 000005 (byte) ...             (carrier)

                  15 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                           │ 000007 (byte) ...             (carrier)

                           │ 000008 (byte) WaveForm        (modulator)

                           │ 000009 (byte) ...             (carrier)

    bit 7: retrigger flag >│ 00000a (byte) Feedback/FM

                           │ 00000b (word) frequency slide (signed)

                           │ 00000d (byte) panning (0=C,1=L,2=R)

                           └ 00000e (byte) duration

 

 (since FFver. 3)

 

 988890    129   (byte)  4OP instrument flags:

 

        Offset Length Type

 

        000000      1 (byte) number of 4OP instrument pairs

        000001      1 (byte) flag of instrument pair 1

        000002      1 (byte) flag of instrument pair 2

         ...           ...   ...        ...      ...

        000080      1 (byte) flag of instrument pair 128

 

 structure of data block 1 (arpeggio/vibrato macro-defs) after decompression:

 

 Offset Length   Type

 

 000000 255*521  (byte)   table of 255 arpeggio/vibrato macro-definitions:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) speed

        000002      1 (byte) loop begin position

        000003      1 (byte) loop length

        000004      1 (byte) key-off position

        000005    255 (byte) table of 255 arpeggio definitions:

 

                             ┌────────────┬─────────────────────────────┐

                             │ 0          │ default note                │

                             │ 1-96       │ number of half-tones to add │

                             │ 1-97[+80h] │ fixed-note                  │

                             └────────────┴─────────────────────────────┘

 

        000104      1 (byte) length

        000105      1 (byte) speed

        000106      1 (byte) delay

        000107      1 (byte) loop begin position

        000108      1 (byte) loop length

        000109      1 (byte) key-off position

        00010a    255 (byte) table of 255 vibrato definitions:

 

                            ┌─────────┬─────────────────────────────────┐

                            │ 0       │ default frequency               │

                            │ -7F..7F │ frequency units to add (signed) │

                            └─────────┴─────────────────────────────────┘

 

 structure of data block 2 (disabled fm-reg columns) after decompression:

 

 Offset Length   Type

 

 000000  255*28  (byte)   table of 255 disabled fm-reg column flags:

 

        Offset Length Type

 

        000000      1 (byte) attack rate       ┐

        000001      1 (byte) decay rate        │

        000002      1 (byte) sustain level     │

        000003      1 (byte) release rate      │

        000004      1 (byte) waveform type     │

        000005      1 (byte) output level      ├ modulator

        000006      1 (byte) key scaling level │

        000007      1 (byte) multiplier        │

        000008      1 (byte) tremolo           │

        000009      1 (byte) vibrato           │

        00000a      1 (byte) key scale rate    │

        00000b      1 (byte) sustain           ┘

        00000c      1 (byte) attack rate       ┐

        00000d      1 (byte) decay rate        │

        00000e      1 (byte) sustain level     │

        00000f      1 (byte) release rate      │

        000010      1 (byte) waveform type     │

        000011      1 (byte) output level      ├ carrier

        000012      1 (byte) key scaling level │

        000013      1 (byte) multiplier        │

        000014      1 (byte) tremolo           │

        000015      1 (byte) vibrato           │

        000016      1 (byte) key scale rate    │

        000017      1 (byte) sustain           ┘

        000018      1 (byte) connection type

        000019      1 (byte) feedback

        00001a      1 (byte) frequency slide

        00001b      1 (byte) panning

 

 

  A2F FiLE FORMAT DESCRiPTiON

  File format version 1-2

 

 IMPORTANT!

 Compression algorithm used in FFver. 1-2 is following:

 FFver. 1: Jibz's aPLib,

 FFver. 2: own implementation of LZH

 Refer to unit depackio.pas respectively adt2pack.pas for decompression routine.

 

 Offset Length   Type

 

 000000     18   (char)   ID string '_a2ins_w/fm-macro_'

 000012      4   (dword)  32-bit cyclic redundancy check value

 000016      1   (byte)   file format version (currently 1)

 000017      2   (word)   length of data block {%len}

 000019   %len   (byte)   data block

 

 --EOF-

 

 structure of data block after decompression:

 

 Offset Length   Type

 

 000000      1   (byte)   AM/Vibrato/EG   (modulator)

 000001      1   (byte)   ...             (carrier)

 000002      1   (byte)   KSL/Volume      (modulator)

 000003      1   (byte)   ...             (carrier)

 000004      1   (byte)   Attack/Decay    (modulator)

 000005      1   (byte)   ...             (carrier)

 000006      1   (byte)   Sustain/Release (modulator)

 000007      1   (byte)   ...             (carrier)

 000008      1   (byte)   WaveForm        (modulator)

 000009      1   (byte)   ...             (carrier)

 00000a      1   (byte)   Feedback/FM

 00000b      1   (byte)   panning (0=C,1=L,2=R)

 00000c      1   (byte)   fine-tune (signed)

 00000d      1   (byte)   voice type:

 

                          ┌─────┬─────────────────────────────┐

                          │ 0   │ melodic                     │

                          │ 1-5 │ percussion (BD,SD,TT,TC,HH) │

                          └─────┴─────────────────────────────┘

 

 00000e     33   (string) instrument name [32 characters]

 00002f   3831   (byte)   fm-register definition macro-table data:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) loop begin position

        000002      1 (byte) loop length

        000003      1 (byte) key-off position

        000004      1 (byte) arpeggio macro-table number ┐

        000005      1 (byte) vibrato macro-table number  ┴ fixed to 0!

 

        000006 255*15 (byte) fm-register definitions:

 

                             Offset Type

 

                           ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                           │ 000001 (byte) ...             (carrier)

                           │ 000002 (byte) KSL/Volume      (modulator)

                           │ 000003 (byte) ...             (carrier)

                           │ 000004 (byte) Attack/Decay    (modulator)

                           │ 000005 (byte) ...             (carrier)

                  15 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                           │ 000007 (byte) ...             (carrier)

                           │ 000008 (byte) WaveForm        (modulator)

                           │ 000009 (byte) ...             (carrier)

    bit 7: retrigger flag >│ 00000a (byte) Feedback/FM

                           │ 00000b (word) frequency slide (signed)

                           │ 00000d (byte) panning (0=C,1=L,2=R)

                           └ 00000e (byte) duration

 

 000f26     28   (byte)   disabled fm-reg column flags:

 

        Offset Length Type

 

        000000      1 (byte) attack rate       ┐

        000001      1 (byte) decay rate        │

        000002      1 (byte) sustain level     │

        000003      1 (byte) release rate      │

        000004      1 (byte) waveform type     │

        000005      1 (byte) output level      ├ modulator

        000006      1 (byte) key scaling level │

        000007      1 (byte) multiplier        │

        000008      1 (byte) tremolo           │

        000009      1 (byte) vibrato           │

        00000a      1 (byte) key scale rate    │

        00000b      1 (byte) sustain           ┘

        00000c      1 (byte) attack rate       ┐

        00000d      1 (byte) decay rate        │

        00000e      1 (byte) sustain level     │

        00000f      1 (byte) release rate      │

        000010      1 (byte) waveform type     │

        000011      1 (byte) output level      ├ carrier

        000012      1 (byte) key scaling level │

        000013      1 (byte) multiplier        │

        000014      1 (byte) tremolo           │

        000015      1 (byte) vibrato           │

        000016      1 (byte) key scale rate    │

        000017      1 (byte) sustain           ┘

        000018      1 (byte) connection type

        000019      1 (byte) feedback

        00001a      1 (byte) frequency slide

        00001b      1 (byte) panning

 

 (since FFver. 2)

 

 2nd instrument of 4OP pair (optional)

 

 000f42      1   (byte)   AM/Vibrato/EG   (modulator)

 000f43      1   (byte)   ...             (carrier)

 000f44      1   (byte)   KSL/Volume      (modulator)

 000f45      1   (byte)   ...             (carrier)

 000f46      1   (byte)   Attack/Decay    (modulator)

 000f47      1   (byte)   ...             (carrier)

 000f48      1   (byte)   Sustain/Release (modulator)

 000f49      1   (byte)   ...             (carrier)

 000f4a      1   (byte)   WaveForm        (modulator)

 000f4b      1   (byte)   ...             (carrier)

 000f4c      1   (byte)   Feedback/FM

 000f4d      1   (byte)   panning (0=C,1=L,2=R)

 000f4e      1   (byte)   fine-tune (signed)

 000f4f      1   (byte)   voice type

 000f50     33   (string) instrument name [32 characters]

 000f71   3831   (byte)   fm-register definition macro-table data:

 

        Offset Length Type

 

        000000      1 (byte) length

        000001      1 (byte) loop begin position

        000002      1 (byte) loop length

        000003      1 (byte) key-off position

        000004      1 (byte) arpeggio macro-table number ┐

        000005      1 (byte) vibrato macro-table number  ┴ fixed to 0!

 

        000006 255*15 (byte) fm-register definitions:

 

                             Offset Type

 

                           ┌ 000000 (byte) AM/Vibrato/EG   (modulator)

                           │ 000001 (byte) ...             (carrier)

                           │ 000002 (byte) KSL/Volume      (modulator)

                           │ 000003 (byte) ...             (carrier)

                           │ 000004 (byte) Attack/Decay    (modulator)

                           │ 000005 (byte) ...             (carrier)

                  15 bytes ┤ 000006 (byte) Sustain/Release (modulator)

                           │ 000007 (byte) ...             (carrier)

                           │ 000008 (byte) WaveForm        (modulator)

                           │ 000009 (byte) ...             (carrier)

    bit 7: retrigger flag >│ 00000a (byte) Feedback/FM

                           │ 00000b (word) frequency slide (signed)

                           │ 00000d (byte) panning (0=C,1=L,2=R)

                           └ 00000e (byte) duration

 

 001e68     28   (byte)   disabled fm-reg column flags:

 

        Offset Length Type

 

        000000      1 (byte) attack rate       ┐

        000001      1 (byte) decay rate        │

        000002      1 (byte) sustain level     │

        000003      1 (byte) release rate      │

        000004      1 (byte) waveform type     │

        000005      1 (byte) output level      ├ modulator

        000006      1 (byte) key scaling level │

        000007      1 (byte) multiplier        │

        000008      1 (byte) tremolo           │

        000009      1 (byte) vibrato           │

        00000a      1 (byte) key scale rate    │

        00000b      1 (byte) sustain           ┘

        00000c      1 (byte) attack rate       ┐

        00000d      1 (byte) decay rate        │

        00000e      1 (byte) sustain level     │

        00000f      1 (byte) release rate      │

        000010      1 (byte) waveform type     │

        000011      1 (byte) output level      ├ carrier

        000012      1 (byte) key scaling level │

        000013      1 (byte) multiplier        │

        000014      1 (byte) tremolo           │

        000015      1 (byte) vibrato           │

        000016      1 (byte) key scale rate    │

        000017      1 (byte) sustain           ┘

        000018      1 (byte) connection type

        000019      1 (byte) feedback

        00001a      1 (byte) frequency slide

        00001b      1 (byte) panning