home *** CD-ROM | disk | FTP | other *** search
/ The Best of Mecomp Multimedia 2 / MECOMP-CD-II.iso / amiga / tools / libs / maestix / include / libraries / maestix.h next >
Encoding:
C/C++ Source or Header  |  1998-02-21  |  9.2 KB  |  249 lines

  1. /*
  2. **      Maestix Library References  -  V41
  3. **
  4. **      © 1995-98 Richard Körber
  5. */
  6.  
  7. #ifndef LIBRARIES_MAESTIX_H
  8. #define LIBRARIES_MAESTIX_H     (1)
  9.  
  10. #ifndef EXEC_TYPES_H
  11. #include <exec/types.h>
  12. #endif
  13.  
  14. #ifndef UTILITY_TAGITEM_H
  15. #include <utility/tagitem.h>
  16. #endif
  17.  
  18. #ifndef EXEC_PORTS_H
  19. #include <exec/ports.h>
  20. #endif
  21.  
  22. #ifndef EXEC_LISTS_H
  23. #include <exec/lists.h>
  24. #endif
  25.  
  26. #ifndef EXEC_LIBRARIES_H
  27. #include <exec/libraries.h>
  28. #endif
  29.  
  30.  
  31. /* ------------------------------------------------------------------------ */
  32. /*  Generic library informations */
  33.  
  34.  
  35. #define MAESTIXVERSION  (41)
  36.  
  37. struct MaestixBase {
  38.         struct  Library mxb_LibNode;
  39. };
  40.  
  41.  
  42. /* ------------------------------------------------------------------------ */
  43. /*  MaestroBase structure */
  44.  
  45. struct MaestroBase {
  46.         WORD    maba_Dummy;     /* PRIVATE */
  47. };
  48.  
  49.  
  50. /* ------------------------------------------------------------------------ */
  51. /*  DataMessage */
  52.  
  53. struct DataMessage {
  54.         struct  Message dmn_Message;    /* struct Message */
  55.         APTR    dmn_BufPtr;     /* pointer to public buffer memory */
  56.         ULONG   dmn_BufLen;     /* length of buffer memory (bytes) */
  57. };
  58.  
  59. struct ExtDataMessage {
  60.         struct  Message edmn_Message;   /* struct Message */
  61.         APTR    edmn_BufPtr;    /* pointer to public buffer memory */
  62.         ULONG   edmn_BufLen;    /* length of buffer memory (bytes) */
  63.         UWORD   edmn_Flags;     /* EDMN flags, see below */
  64.         APTR    edmn_BufPtrR;   /* pointer to right buffer (dual mode) */
  65. };
  66.  
  67. /* Flags for edmn_Flags */
  68. #define EDMNB_MONO (0)          /* Buffer is Mono */
  69. #define EDMNF_MONO (0x0001)
  70. #define EDMNB_DUAL (1)          /* Buffer is Dual */
  71. #define EDMNF_DUAL (0x0002)
  72.  
  73.  
  74. /* ------------------------------------------------------------------------ */
  75. /*  Tag definitions */
  76.  
  77. #define _MSTXTAG        (0xCD414553)    /* Maestix tag base ("MAES") */
  78.  
  79. /*  SetMaestro() tags */
  80.  
  81. #define MTAG_Input      (_MSTXTAG+0x00) /* Input? Def. INPUT_STD */
  82. #define MTAG_Output     (_MSTXTAG+0x01) /* Output? Def. OUTPUT_BYPASS */
  83. #define MTAG_SetCSB     (_MSTXTAG+0x02) /* Direct CSB access */
  84. #define MTAG_SetUDB     (_MSTXTAG+0x03) /* Direct UDB access */
  85. #define MTAG_Studio     (_MSTXTAG+0x04) /* Studio mode? (TRUE/FALSE) */
  86. #define MTAG_CopyProh   (_MSTXTAG+0x05) /* Copy protection? */
  87. #define MTAG_Emphasis   (_MSTXTAG+0x06) /* Emphasis */
  88. #define MTAG_Source     (_MSTXTAG+0x07) /* Source category code */
  89. #define MTAG_Rate       (_MSTXTAG+0x08) /* Output rate */
  90. #define MTAG_Validity   (_MSTXTAG+0x09) /* Validity flag (TRUE/FALSE) */
  91. #define MTAG_ResetUDB   (_MSTXTAG+0x0A) /* Reset UDB */
  92. #define MTAG_ResetLSA   (_MSTXTAG+0x0C) /* Reset Local Sample Address */
  93.  
  94. /*  StartRealtime() tags */
  95.  
  96. #define MTAG_Effect     (_MSTXTAG+0x0D) /* effect number (see below) */
  97. #define MTAG_A0         (_MSTXTAG+0x0E) /* parameter -> A0 */
  98. #define MTAG_A1         (_MSTXTAG+0x0F) /* parameter -> A1 */
  99. #define MTAG_D2         (_MSTXTAG+0x10) /* parameter -> D2 */
  100. #define MTAG_D3         (_MSTXTAG+0x11) /* parameter -> D3 */
  101. #define MTAG_CustomCall (_MSTXTAG+0x12) /* pointer to custom call */
  102. #define MTAG_PostLevel  (_MSTXTAG+0x13) /* Post levelmeter ? */
  103.  
  104.  
  105. /* ------------------------------------------------------------------------ */
  106. /*  Tag values for MTAG_Input */
  107.  
  108. #define INPUT_STD       (0)     /* User selected input */
  109. #define INPUT_OPTICAL   (1)     /* optical input */
  110. #define INPUT_COAXIAL   (2)     /* coaxial input */
  111. #define INPUT_SRC48K    (3)     /* 48kHz internal source */
  112.  
  113.  
  114. /* ------------------------------------------------------------------------ */
  115. /*  Tag values for MTAG_Output */
  116.  
  117. #define OUTPUT_BYPASS   (0)     /* Bypass */
  118. #define OUTPUT_INPUT    (1)     /* from input */
  119. #define OUTPUT_FIFO     (2)     /* from FIFO */
  120.  
  121.  
  122. /* ------------------------------------------------------------------------ */
  123. /*  Tag values for MTAG_CopyProh */
  124.  
  125. #define CPROH_OFF       (0)     /* No protection requested */
  126. #define CPROH_ON        (1)     /* Copy protection requested */
  127. #define CPROH_PROHIBIT  (2)     /* Copy prohibited */
  128. #define CPROH_INPUT     (3)     /* As input */
  129.  
  130.  
  131. /* ------------------------------------------------------------------------ */
  132. /*  Tag values for MTAG_Emphasis */
  133.  
  134. #define EMPH_OFF        (0)     /* no emphasis */
  135. #define EMPH_50us       (1)     /* 50/15µs */
  136. #define EMPH_CCITT      (2)     /* CCITT J.17 (studio only) */
  137. #define EMPH_MANUAL     (3)     /* Manuell (studio only) */
  138. #define EMPH_INPUT      (4)     /* As input */
  139. #define EMPH_ON         (EMPH_50us)
  140.  
  141.  
  142. /* ------------------------------------------------------------------------ */
  143. /*  Tag values for MTAG_Source */
  144.  
  145. #define SRC_INPUT       (0)     /* As input */
  146. #define SRC_CD          (0x01)  /* CD */
  147. #define SRC_DAT         (0x03)  /* DAT */
  148. #define SRC_DSR         (0x0C)  /* DSR */
  149. #define SRC_ADCONV      (0x06)  /* ADC */
  150. #define SRC_INSTR       (0x05)  /* Instrument */
  151.  
  152.  
  153. /* ------------------------------------------------------------------------ */
  154. /*  Tag values for MTAG_Rate */
  155.  
  156. #define RATE_32000      (0)     /* Rate 32000 Hz */
  157. #define RATE_44100      (1)     /* Rate 44100 Hz */
  158. #define RATE_48000      (2)     /* Rate 48000 Hz */
  159. #define RATE_48000MANU  (3)     /* Rate 48000 Hz Manual */
  160. #define RATE_INPUT      (4)     /* As input */
  161.  
  162.  
  163. /* ------------------------------------------------------------------------ */
  164. /*  Realtime FX codes */
  165.  
  166. #define RFX_Muting      (0)     /* mute incoming signal */
  167. #define RFX_Bypass      (1)     /* no manipulation (default) */
  168. #define RFX_ChannelSwap (2)     /* swap left and right */
  169. #define RFX_LeftOnly    (3)     /* mute right channel */
  170. #define RFX_RightOnly   (4)     /* mute left channel */
  171. #define RFX_Mono        (5)     /* mono */
  172. #define RFX_Surround    (6)     /* surround */
  173. #define RFX_Volume      (7)     /* volume */
  174.                                 /* MTAG_D2: left volume (0..256) */
  175.                                 /* MTAG_D3: right volume (0..256) */
  176. #define RFX_Karaoke     (8)     /* filters out the singer */
  177. #define RFX_Foregnd     (9)     /* filters out the surround info */
  178. #define RFX_Spatial     (10)    /* virtual shifting of the speakers */
  179.                                 /* MTAG_D2: shift factor (0..256) */
  180.                                 /*          optimum: about 64 */
  181. #define RFX_Echo        (11)    /* echo effect */
  182.                                 /* MTAG_D2: entry volume (0..256) */
  183.                                 /* MTAG_D3: decay volume (0..256) */
  184.                                 /* MTAG_A0: pointer to MRTorus structure */
  185. #define RFX_Mask        (12)    /* mask/quantisize */
  186.                                 /* MTAG_D2: left mask word */
  187.                                 /* MTAG_D3: right mask word */
  188. #define RFX_Offset      (13)    /* adding dc offset */
  189.                                 /* MTAG_D2: left offset (32767..-32768) */
  190.                                 /* MTAG_D3: right offset (32767..-32768) */
  191. #define RFX_Robot       (14)    /* robot effect */
  192.                                 /* MTAG_D2: gate open (samples) */
  193.                                 /* MTAG_D3: gate closed (samples) */
  194.                                 /* MTAG_A0: pointer to mrrob structure */
  195. #define RFX_ReSample    (15)    /* resample effect */
  196.                                 /* MTAG_D2: new rate (left) */
  197.                                 /* MTAG_D3: new rate (right) */
  198.                                 /* MTAG_A0: pointer to mrres structure */
  199.  
  200. /* ------------------------------------------------------------------------ */
  201. /*  Torus structure for RFX_Echo */
  202.  
  203. struct MRTorus {
  204.         APTR    mrtor_PointerL; /* Pointer to left data buffer */
  205.         APTR    mrtor_PointerR; /* Pointer to right data buffer */
  206.         ULONG   mrtor_Size;     /* Size of these buffers (bytes) */
  207.         ULONG   mrtor_Offset;   /* current offset (init with NULL) */
  208. };
  209.  
  210. /* ------------------------------------------------------------------------ */
  211. /* Robot structure for RFX_Robot */
  212.  
  213. struct MRRobot {
  214.         LONG    mrrob_Counter;  /* Sample counter (init with 0) */
  215. };
  216.  
  217. /* ------------------------------------------------------------------------ */
  218. /* ReSample structure for RFX_ReSample */
  219.  
  220. struct MRReSample {
  221.         UWORD   mrres_LMax;     /* incoming sampling rate, left */
  222.         UWORD   mrres_RMax;     /* incoming sampling rate, right */
  223.         UWORD   mrres_LCounter; /* counter, init with 0 */
  224.         UWORD   mrres_RCounter; /* counter, init with 0 */
  225.         WORD    mrres_LData;    /* left audio data, init with 0 */
  226.         WORD    mrres_RData;    /* right audio data, init with 0 */
  227. };
  228.  
  229. /* ------------------------------------------------------------------------ */
  230. /*  GetStatus() values */
  231.  
  232. #define MSTAT_TFIFO     (0)     /* Transmit FIFO Status    (s.b.) */
  233. #define MSTAT_RFIFO     (1)     /* Receive FIFO Status     (s.b.) */
  234. #define MSTAT_Signal    (2)     /* Signal on input?        (BOOL) */
  235. #define MSTAT_Emphasis  (3)     /* Signal uses emphasis?   (BOOL) */
  236. #define MSTAT_DATsrc    (4)     /* DAT-Source?             (BOOL) */
  237. #define MSTAT_CopyProh  (5)     /* Copy protection?        (BOOL) */
  238. #define MSTAT_Rate      (6)     /* Rate                    (ULONG) */
  239. #define MSTAT_UDB       (7)     /* get current UDB         (UBYTE) */
  240.  
  241. /*  Values for TFIFO & RFIFO */
  242.  
  243. #define FIFO_Off        (0)     /* FIFO ist aus */
  244. #define FIFO_Running    (1)     /* FIFO läuft */
  245. #define FIFO_Error      (2)     /* FIFO lief über */
  246.  
  247. #endif
  248.  
  249.