home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / amiga / midi / obrst103.lha / OberSuite-1.03 / SourceCode / oberheim.h < prev    next >
C/C++ Source or Header  |  1993-01-23  |  4KB  |  100 lines

  1. #ifndef _OBERHEIM_H
  2. #define _OBERHEIM_H    1
  3.  
  4. /**************************************************************************
  5. * oberheim.h:    Facts about Oberheim patches and patch dumps.
  6. *        A part of OberSuite for the Commodore Amiga.
  7. *
  8. * Author:    Daniel Barrett, barrett@cs.umass.edu.
  9. * Version:    1.0.
  10. * Copyright:    None!  This program is in the Public Domain.
  11. *        Please share it with others.
  12. ***************************************************************************/
  13.  
  14. #include "midi.h"
  15.  
  16. /***************************************************************************
  17.  * Oberheim system-exclusive byte values.
  18.  ***************************************************************************/
  19.  
  20. #define    OBERHEIM_SYSEX_ID    (UBYTE)0x10
  21. #define    OBERHEIM_DEVICE_NUMBER    (UBYTE)0x02
  22. #define    DUMP_REQUEST        (UBYTE)0x00
  23. #define    DUMP_FOLLOWS        (UBYTE)0x01
  24. #define    SINGLE_DATA        (UBYTE)0x00
  25. #define    MULTI_DATA        (UBYTE)0x01
  26.  
  27. /***************************************************************************
  28. * Header bytes and their offsets from the beginning of the file.
  29. ***************************************************************************/
  30.  
  31. #define    OBERHEIM_HEADER_LENGTH    6    /* The length of the header. */
  32.  
  33. #define    BYTE_SYSEX        0
  34. #define    BYTE_ID            1
  35. #define    BYTE_DEVICE        2
  36. #define    BYTE_DATADUMP        3
  37. #define    BYTE_PATCHTYPE        4
  38. #define    BYTE_PATCHNUMBER    5
  39.  
  40. /***************************************************************************
  41.  * Specifics about the Xpander.
  42.  ***************************************************************************/
  43.  
  44. #define    XPANDER_MULTI_SIZE    123    /* # of bytes in a multi patch. */
  45. #define    XPANDER_MULTI_NAMELOC    106    /* Offset, in the multi patch dump,
  46.                      * of the first byte of the patch
  47.                      * name. */
  48. #define    XPANDER_SINGLE_OFFSET    94    /* Offset, 1st singlepatch # (guess) */
  49. #define    XPANDER_MULTI_SINGLES    6    /* # singles in multi patch. */
  50. #define    XPANDER_MULTI_ID    OBERHEIM_DEVICE_NUMBER
  51.  
  52. /***************************************************************************
  53.  * Specifics about the Matrix-12.
  54.  ***************************************************************************/
  55.  
  56. #define    MATRIX12_MULTI_SIZE    243    /* # of bytes in a multi patch. */
  57. #define    MATRIX12_MULTI_NAMELOC    226    /* Offset, in the multi patch dump,
  58.                      * of the first byte of the patch
  59.                      * name. */
  60. #define    MATRIX12_SINGLE_OFFSET    202    /* Offset of 1st singlepatch #. */
  61. #define    MATRIX12_MULTI_SINGLES    12    /* # singles in multi patch. */
  62. #define    MATRIX12_MULTI_ID    (UBYTE)0x04
  63.  
  64. /***************************************************************************
  65.  * Numbers that are true for both Matrix-12 and Xpander.
  66.  ***************************************************************************/
  67.  
  68. #define    NUM_PATCHES    100    /* # of patches in the synth memory. */
  69. #define    FIRST_PATCH    0    /* Number of the first synth patch. */
  70. #define    LAST_PATCH    99    /* Number of the last synth patch. */
  71.  
  72. #define    NAME_LENGTH    8    /* # of characters in a patch name. */
  73. #define    SINGLE_SIZE    399    /* # of bytes in a single patch.  */
  74. #define    SINGLE_NAMELOC    382    /* Offset, in the single patch dump, of the
  75.                  * first byte of the patch name. */
  76.  
  77. #define    LARGEST_OBERHEIM_PATCHSIZE    SINGLE_SIZE
  78.  
  79. /***************************************************************************
  80.  * We will sometimes store NUM_PATCHES patches in a single file.
  81.  * Here is the size of such a file, in bytes.
  82.  ***************************************************************************/
  83.  
  84. #define    ALL_SINGLE_SIZE        ((SINGLE_SIZE)         * (NUM_PATCHES))
  85. #define    ALL_XPANDER_MULTI_SIZE    ((XPANDER_MULTI_SIZE)  * (NUM_PATCHES))
  86. #define    ALL_MATRIX12_MULTI_SIZE    ((MATRIX12_MULTI_SIZE) * (NUM_PATCHES))
  87.  
  88. /***************************************************************************
  89.  * Some string constants -- for consistency throughout the program.
  90.  ***************************************************************************/
  91.  
  92. #define    NAME_SINGLE        "single"
  93. #define    NAME_MULTI        "multi"
  94. #define    NAME_XPANDER        "Xpander"
  95. #define    NAME_MATRIX12        "Matrix-12"
  96. #define    NAME_BOTH        "Xpander/Matrix-12"
  97.  
  98.  
  99. #endif /* _OBERHEIM_H */
  100.