home *** CD-ROM | disk | FTP | other *** search
/ TopWare 18: Liquid / Image.iso / liquid / top1120 / bank.h < prev    next >
Text File  |  1994-04-10  |  4KB  |  142 lines

  1.  
  2.     /*\
  3.     |*|----====< bank.h >====----
  4.     \*/
  5.  
  6.     /*\
  7.     |*| global constants
  8.     \*/
  9.  
  10. #define BYTE        char
  11.  
  12. #define DEF_PORT    0x388   // default port address
  13.  
  14. #define NUMVOICES   16  // number of voices we are working with
  15. #define NUMMELODIC  6   // number of voices we can allocate
  16. #define NUMCHANNELS 16  // number of MIDI channels
  17.  
  18. #define MAXPATCH    150 // max patch number allowed (>127 for drums)
  19.  
  20.     // default patch numbers
  21.  
  22. #define PATCHaDRUMKIT   90  // our acoustic drum kit patch
  23. #define PATCHeDRUMKIT   91  // our electronic drum kit patch
  24. #define PATCHPIANO  0
  25.  
  26. #define FIRSTDRUMNOTE   35
  27. #define LASTDRUMNOTE    75
  28. #define NUMDRUMNOTES    (LASTDRUMNOTE - FIRSTDRUMNOTE + 1)
  29.  
  30. #define MAX_VOLUME  0x7f
  31. #define MAX_PITCH   0x3fff
  32. #define MID_PITCH   0x2000
  33.  
  34. #define MID_C       60  // MIDI standard mid C
  35. #define CHIP_MID_C  48  // sound chip mid C
  36.  
  37. #define TOM_PITCH   24  // best frequency, in range of 0 to 95
  38. #define TOM_TO_SD   7   // 7 half-tones between voice 7 & 8
  39. #define SD_PITCH    (TOM_PITCH + TOM_TO_SD)
  40. #define NUMLOCPARAM 14  // number of loc params we keep
  41. #define NR_STEP_PITCH   25  // 25 steps within a half-tone for pitch bend
  42.  
  43.  
  44.     /*\
  45.     |*| definitions of sound chip parameters
  46.     \*/
  47.  
  48.     // parameters of each voice
  49.  
  50. #define prmKsl          0
  51. #define prmMulti        1
  52. #define prmFeedBack     2           // use for operator 0 only
  53. #define prmAttack       3
  54. #define prmSustain      4
  55. #define prmStaining     5           // sustaining...
  56. #define prmDecay        6
  57. #define prmRelease      7
  58. #define prmLevel        8
  59. #define prmAm           9
  60. #define prmVib          10
  61. #define prmKsr          11
  62. #define prmFm           12          // use for operator 0 only
  63. #define prmWaveSel      13          // wave select
  64.  
  65.     // global parameters
  66.  
  67. #define prmAmDepth      14
  68. #define prmVibDepth     15
  69. #define prmNoteSel      16
  70. #define prmPercussion   17
  71.  
  72.     // percussive voice numbers:
  73.  
  74. #define BD              6
  75. #define SD              7
  76. #define TOM             8
  77. #define CYMB            9
  78. #define HIHAT           10
  79.  
  80.  
  81.     /*\
  82.     |*| bank file support
  83.     \*/
  84.  
  85. #define BANK_SIG_LEN        6
  86. #define BANK_FILLER_SIZE    8
  87.  
  88.     // instrument bank file header
  89.  
  90.     typedef struct {
  91.         char      majorVersion;
  92.         char      minorVersion;
  93.         char      sig[BANK_SIG_LEN];        // signature: "ADLIB-"
  94.         unsigned  nrDefined;            // number of list entries used
  95.         unsigned  nrEntry;              // number of total entries in list
  96.         long      offsetIndex;          // offset of start of list of names
  97.         long      offsetTimbre;         // offset of start of data
  98.         char      filler[BANK_FILLER_SIZE];     // must be zero
  99.     } BANKHEADER;
  100.  
  101.     // instrument name structure
  102.  
  103.     typedef struct {
  104.         unsigned  index;        // index into data section
  105.         char      used;     // used TRUE(1)/FALSE(0)
  106.         char      name[9];      // instrument name
  107.     } INSHEADER;
  108.  
  109.     // operator structure
  110.  
  111.     typedef struct {
  112.         BYTE ksl;
  113.         BYTE freqMult;
  114.         BYTE feedBack;      // used by operator 0 only
  115.         BYTE attack;
  116.         BYTE sustLevel;
  117.         BYTE sustain;
  118.         BYTE decay;
  119.         BYTE release;
  120.         BYTE output;
  121.         BYTE am;
  122.         BYTE vib;
  123.         BYTE ksr;
  124.         BYTE fm;            // used by operator 0 only
  125.     } OPERATOR;
  126.  
  127.     typedef struct {
  128.         BYTE      mode;     // 0 = melodic, 1 = percussive
  129.         BYTE      percVoice;    // if mode == 1, voice number to be used
  130.         OPERATOR  op0;
  131.         OPERATOR  op1;
  132.         BYTE      wave0;        // waveform for operator 0
  133.         BYTE      wave1;        // waveform for operator 1
  134.     } TIMBRE;
  135.  
  136.  
  137.     /*\
  138.     |*| end of bank.h
  139.     \*/
  140.  
  141.  
  142.