Digibooster module format:

 Digi Booster PRO - DBM0 file format by Tomasz Piasta

DBM is Iff like format.  It means that module consists of hunks.  Each hunk
has a 4 bytes identification and after that hunk length (LWORD - 4bytes).

If  the  module  doesn't  consist  of  any  hunk, for example VENV - volume
envelope  hunk  that  will  mean  this  module  doesn't use volume envelope
effect.

These hunks DBM module should always consits of: NAME, INFO, SONG, INST, PATT,
SMPL

----------------------------------------------------------------------------
 Offset  Length
----------------------------------------------------------------------------
   0       4      |   ID "DBM0" - module identification
   4       2      |   tracker version:
                  |   eg. $0200 - version 2.00
   6       2      |   reserved
----------------------------------------------------------------------------
   8       4      |   ID "NAME" - module name hunk identification
  +4       4      |   hunk length
  +8      44      |   mod name
----------------------------------------------------------------------------
  ???      4      |   ID "INFO" 
  +4       4      |   hunk length
  +8       2      |   number of instruments in module
 +10       2      |   number of samples in module
 +12       2      |   number of songs in module
 +14       2      |   number of patterns in module
 +16       2      |   number of channels
----------------------------------------------------------------------------
  ???      4      |   ID "SONG" - songs hunk identification
  +4       4      |   hunk length
 +12      44      |   song name 
 +56       2      |   number of orders for this song
 +58      ???     |   order list (words) NOTE: Each order list can use
                  |                            the same numbers of patterns.
----------------------------------------------------------------------------
  ???      4      |   ID "INST" - instruments hunk identification
  +4       4      |   hunk length
  +8      30      |   instrument name
 +38       2      |   sample number used in this instrument
 +40       2      |   instrument volume
 +42       4      |   instrument finetune (stored in HZ)
 +46       4      |   instrument repeat start
 +50       4      |   instrument repeat length
 +54       2      |   general panning (0-256)
 +56       2      |   flags:
                  |                        bit 0 set - forward loop uesd
                  |                        bit 1 set - ping pong loop uesd
----------------------------------------------------------------------------
  ???      4      |   ID "PATT" - patterns hunk identification
  +4       4      |   hunk length
  +8       2      |   number of positions (rows) in pattern
 +10       4      |   size of packed data
 +14      ???     |   packed pattern data
----------------------------------------------------------------------------
  ???      4      |   ID "SMPL" - samples hunk identification
  +4       4      |   hunk length
  +8       4      |   flags:
                  |                        bit 0 set - 8 bit sample
                  |                        bit 1 set - 16 bit sample
                  |                        bit 2 set - 32 bit sample
 +12       4      |   sample length
 +16      ???     |   sample data (unsigned)
----------------------------------------------------------------------------
  ???      4      |   ID "VENV" - volume envelopes hunk identification
  +4       4      |   hunk length
  +8       2      |   how many volume envelope tables does this hunk contain
 +10       2      |   to which instrument this volume envelope data belongs
 +12     134      |   volume envelope data
----------------------------------------------------------------------------



                        --------------------------
                        Volume Envelope structure:
                        --------------------------

Each volume envelope table takes 134 bytes.
Max. number of points is 32.
Max. number of sustain points is 2.
Max. number of loops is 1.

------------------------------------------------------------
 Offset  Length
------------------------------------------------------------
 +0        1      |   type   bit 0: envelope on/off
                  |          bit 1: 1st sustain on/off
                  |          bit 2: envelope loop on/off
                  |          bit 3: 2nd sustain on/off
 +1        1      |   number of envelope points
 +2        1      |   1st sustain point
 +3        1      |   loop start point
 +4        1      |   loop end point
 +5        1      |   2nd sustain point
 +6        1      |   reserved
------------------------------------------------------------
 +8        2      |   1st point time (in vblanks) 
+10        2      |   1st point volume (range: 0-64) 
+12        2      |   2nd point time (in vblanks) 
+14        2      |   2nd point volume (range: 0-64)
+16        2      |   ...
------------------------------------------------------------



                          ----------------------
                          Packed pattern format:
                          ----------------------

If the byte is zero it means that you must skip to next position (row).

If the byte is nonzero bits are interpreted as follows:

    bit 0 set: Note follows (byte)
    bit 1 set: Instrument number follows (byte)
    bit 2 set: 1st effect type follows (byte)
    bit 3 set: 1st effect parameter follows (byte)
    bit 4 set: 1st effect type follows (byte)
    bit 5 set: 1st effect parameter follows (byte)

    Next byte is a channel number to which this data belongs.


Example:

    00 - skip to next pattern position
    00 - skip to next pattern position
    03 - byte is nonzero; the bit 0 and 1 is set; take note and instrument
    24 - channel number to which following data belongs
    81 - note (hex: $51 - this is a 5th octave and 1st note)
    04 - instrument number


[ **NOTE**  Description above is incorrect, channel number comes first ]



Digiboost-effect parameters:

Digi Booster has almost fifty effects. All Pro Tracker effects are
supported (without EFx).

If you want to use pannings you must set audio mode with stereo++
in AudioModeConfig.

Here you are a full list of Digi Booster Pro II effects.

(*) = If the command parameter is zero, the last nonzero parameter will
be used.

0xx     Arpeggio
1xx (*) Portamento up
1Fx (*) Fine Portamento up
2xx (*) Portamento down
2Fx (*) Fine Portamento down
3xx (*) Glissando
4xx (*) Vibrato
5xx (*) Tone portamento+Volume slide
5xF (*) Tone portamento+Fine Volume slide up
5Fx (*) Tone portamento+Fine Volume slide down
6xx (*) Vibrato+Volume slide
6xF (*) Vibrato+Fine Volume slide up
6Fx (*) Vibrato+Fine Volume slide down
8xx     Set panning
9xx (*) Sample offset
Axx (*) Volume slide
AxF (*) Fine volume slide up
AFx (*) Fine volume slide down
Bxx     Position jump
Cxx     Set volume
Dxx     Pattern break

E00     Low pass filter on
E01     Low pass filter off
E1x     Fine portamento up
E2x     Fine portamento down
E3x     Play from backward
E40     Turn off sound in channel
E5x     Turn on/off channel
E6x     Set loop begin/loop
E7x     Set offset
E8x     Set panning
E9x     Retrig note
EAx     Fine volume slide up
EBx     Fine volume slide down
ECx     Note cut
EDx     Note delay
EEx     Pattern delay

Fxx     Set tempo/BPM
Gxx     Set global volume
Hxx (*) Global volume slide
K00     Key off
Lxx     Set envelope position
Oxx (*) Sample offset slide
Pxx (*) Panning slide
Sxx     Set Real BPM

The  commands  listed  below  works  only if you have Echo option
enabled in AHI preferences:

V00     Turn DSP echo on in channel
V01     Turn DSP echo off in channel
V10     Turn DSP echo on in all channels
V11     Turn DSP echo off in all channels
        Default is: echo turned off in all channels.

Wxx     Echo delay. It is a value between 00 and ff, and defines
        time of delay. 01 means that sound will be delayed
        2 ms (0.02) of second.
        Default is: W40 - 128 miliseconds ; 0.128 sec.

Xxx     Echo Feedback. It is a value between 00 and ff, and defines
        how much of the delayed signal should be feed back to the delay
        stage. Setting this to 0 gives a delay effect, otherwise echo.
        Default is: X80 

Yxx     Echo Mix. It tells how much of the delayed signal should be mixed
        with the normal signal. Setting this to 0 disables delay/echo,
        and setting it to ff outputs only the delay/echo signal.
        Default is: Y80 

Zxx     Echo Cross. It only has effect if the current playback mode is
        stereo. It tells how the delayed signal should be panned to
        the other channel. 0 means no cross echo, ff means full
        cross echo.
        Default is: ZFF - full cross echo.
