home *** CD-ROM | disk | FTP | other *** search
/ Sound, Music & MIDI Collection 2 / SMMVOL2.bin / PROG / ADIP.ZIP / ADIP.EXE / ADIP01.ZIP / DOS / INCLUDE / CTAWEAPI.H next >
Encoding:
C/C++ Source or Header  |  1994-12-13  |  12.2 KB  |  332 lines

  1. /****************************************************************************\
  2. *                                                                            *
  3. * CTAWEAPI.H SB AWE32 DOS API header                                         *
  4. *                                                                            *
  5. * (C) Copyright Creative Technology Ltd. 1992-94. All rights reserved        *
  6. * worldwide.                                                                 *
  7. *                                                                            *
  8. * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY      *
  9. * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE        *
  10. * IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR      *
  11. * PURPOSE.                                                                   *
  12. *                                                                            *
  13. * You have a royalty-free right to use, modify, reproduce and                *
  14. * distribute the Sample Files (and/or any modified version) in               *
  15. * any way you find useful, provided that you agree to                        *
  16. * the Creative's Software Licensing Aggreement and you also agree that       *
  17. * Creative has no warranty obligations or liability for any Sample Files.    *
  18. *                                                                            *
  19. \****************************************************************************/
  20.  
  21. /****************************************************************************\
  22. *      File name       : CTAWEAPI.H                                          *
  23. *                                                                            *
  24. *      Programmer      : Creative SB AWE32 Team                              *
  25. *                        Creative Technology Ltd, 1994. All rights reserved. *
  26. *                                                                            *
  27. *      Version         : 2.1b                                                *
  28. *                                                                            *
  29. \****************************************************************************/
  30.  
  31. #ifndef _CTAWEAPI
  32. #define _CTAWEAPI
  33.  
  34.  
  35. #pragma pack(1)
  36.  
  37.  
  38. #define MAXBANKS            64      /* maximum number of banks */
  39. #define MAXNRPN             32      /* maximum number of NRPN */
  40.  
  41.  
  42. #if defined(__FLAT__) || defined(__HIGHC__) || defined(DOS386) || defined(__NDPC__)
  43.     #if defined(FAROBJ) && !defined(__NDPC__)
  44.         #ifdef __HIGHC__
  45.             #define _FAR_   _Far
  46.         #else
  47.             #define _FAR_   _far
  48.         #endif
  49.     #else
  50.         #define _FAR_
  51.     #endif
  52.     #define PACKETSIZE      8192        /* packet size for 32bit libraries */
  53. #else
  54.     #define PACKETSIZE      512         /* packet size for real mode libraries */
  55. #endif
  56.  
  57.  
  58. #if defined(__NDPC__)
  59.     #define _PASCAL_
  60. #endif
  61.  
  62.  
  63. #if defined(__HIGHC__)
  64.     #pragma Push_align_members(1)
  65.     #pragma Global_aliasing_convention("_%r")
  66.     #define _PASCAL_    _DCC((_DEFAULT_CALLING_CONVENTION|_CALLEE_POPS_STACK) & \
  67.                              ~ (_REVERSE_PARMS|_OVERLOADED))
  68. #endif
  69.  
  70.  
  71. #ifdef __WATCOMC__
  72.     /* pragma to tell the compiler to put all data elements into CODE segment. */
  73.     #ifdef _DATA_IN_CODE
  74.         #pragma data_seg("_CODE", "");
  75.     #endif
  76. #endif
  77.  
  78.  
  79. typedef unsigned char           BYTE;
  80. typedef unsigned short          WORD;
  81. typedef unsigned long           DWORD;
  82.  
  83. #ifndef _FAR_
  84. #define _FAR_                   _far
  85. #endif
  86.  
  87. #ifndef _PASCAL_
  88. #define _PASCAL_                _pascal
  89. #endif
  90.  
  91.  
  92. #if defined(__cplusplus)
  93. extern "C" {
  94. #endif
  95.  
  96.  
  97. /* Start of modules */
  98. extern int* __midieng_code(void);
  99. extern int* __sysex_code(void);
  100. extern int* __sfhelp1_code(void);
  101. extern int* __sfhelp2_code(void);
  102. extern int* __sbkload_code(void);
  103. extern int* __wavload_code(void);
  104. extern int* __hardware_code(void);
  105. extern int* __nrpn_code(void);
  106. extern int __midivar_data;
  107. extern int __nrpnvar_data;
  108. extern int __embed_data;
  109.  
  110. #ifdef FAROBJ
  111. typedef char SCRATCH[676];
  112. #else
  113. typedef char SCRATCH[548];
  114. #endif
  115. typedef char SOUNDFONT[134];
  116. typedef char GCHANNEL[20];
  117. typedef char MIDICHANNEL[28];
  118. typedef char NRPNCHANNEL[90];
  119.  
  120. typedef struct {
  121.     WORD bank_no;               /* Slot number being used */
  122.     WORD total_banks;           /* Total number of banks */
  123.     long _FAR_* banksizes;      /* Pointer to a list of bank sizes */
  124.     long file_size;             /* Unused */
  125.     char _FAR_* data;           /* Address of buffer of size >= PACKETSIZE */
  126.     char _FAR_* presets;        /* Allocated memory for preset data */
  127.  
  128.     long total_patch_ram;       /* Total patch ram available */
  129.     WORD no_sample_packets;     /* Number of packets of sound sample to stream */
  130.     long sample_seek;           /* Start file location of sound sample */
  131.     long preset_seek;           /* Address of preset_seek location */
  132.     long preset_read_size;      /* Number of bytes from preset_seek to allocate and read */
  133.     long preset_size;           /* Preset actual size */
  134. } SOUND_PACKET;
  135.  
  136. typedef struct {
  137.     WORD tag;                   /* Must be 0x100 or 0x101 */
  138.     WORD preset_size;           /* Preset table of this size is required */
  139.     WORD no_wave_packets;       /* Number of packets of Wave sample to stream. */
  140.     long reserved;
  141.  
  142.     WORD bank_no;               /* Bank number */
  143.     char _FAR_* data;           /* Address of packet of size PACKETSIZE */
  144.     char _FAR_* presets;        /* Allocated memory for preset data */
  145.     long sample_size;           /* Sample size, i.e. number of samples */
  146.     long samples_per_sec;       /* Samples per second */
  147.     WORD bits_per_sample;       /* Bits per sample, 8 or 16 */
  148.     WORD no_channels;           /* Number of channels, 1=mono, 2=stereo */
  149.     WORD looping;               /* Looping? 0=no, 1=yes */
  150.     long startloop;             /* If looping, then these are the addresses */
  151.     long endloop;
  152.     WORD release;               /* Release time, 0=24ms, 8191=23.78s */
  153. } WAVE_PACKET;
  154.  
  155. typedef struct {
  156.     BYTE _FAR_* SPad1;
  157.     BYTE _FAR_* SPad2;
  158.     BYTE _FAR_* SPad3;
  159.     BYTE _FAR_* SPad4;
  160.     BYTE _FAR_* SPad5;
  161.     BYTE _FAR_* SPad6;
  162.     BYTE _FAR_* SPad7;
  163. } SOUNDPAD;
  164.  
  165. /* AWE32 variables */
  166. extern WORD         awe32NumG;
  167. extern WORD         awe32BaseAddx[3];
  168. extern DWORD        awe32DramSize;
  169.  
  170. /* MIDI variables */
  171. extern SCRATCH      awe32Scratch;
  172. extern SOUNDFONT    awe32SFont[4];
  173. extern GCHANNEL     awe32GChannel[32];
  174. extern MIDICHANNEL  awe32MIDIChannel[16];
  175. extern SOUNDPAD     awe32SoundPad;
  176.  
  177. /* NRPN variables */
  178. extern NRPNCHANNEL  awe32NRPNChannel[16];
  179.  
  180. /* SoundFont objects */
  181. extern BYTE awe32SPad1Obj[];
  182. extern BYTE awe32SPad2Obj[];
  183. extern BYTE awe32SPad3Obj[];
  184. extern BYTE awe32SPad4Obj[];
  185. extern BYTE awe32SPad5Obj[];
  186. extern BYTE awe32SPad6Obj[];
  187. extern BYTE awe32SPad7Obj[];
  188.  
  189. /* AWE register functions */
  190. extern void _PASCAL_ awe32RegW(WORD, WORD);
  191. extern WORD _PASCAL_ awe32RegRW(WORD);
  192. extern void _PASCAL_ awe32RegDW(WORD, DWORD);
  193. extern DWORD _PASCAL_ awe32RegRDW(WORD);
  194.  
  195. /* MIDI support functions */
  196. extern WORD _PASCAL_ awe32InitMIDI(void);
  197. extern WORD _PASCAL_ awe32NoteOn(WORD, WORD, WORD);
  198. extern WORD _PASCAL_ awe32NoteOff(WORD, WORD, WORD);
  199. extern WORD _PASCAL_ awe32ProgramChange(WORD, WORD);
  200. extern WORD _PASCAL_ awe32Controller(WORD, WORD, WORD);
  201. extern WORD _PASCAL_ awe32PolyKeyPressure(WORD, WORD, WORD);
  202. extern WORD _PASCAL_ awe32ChannelPressure(WORD, WORD);
  203. extern WORD _PASCAL_ awe32PitchBend(WORD, WORD, WORD);
  204. extern WORD _PASCAL_ awe32Sysex(WORD, BYTE _FAR_*, WORD);
  205. extern WORD _PASCAL_ __awe32NoteOff(WORD, WORD, WORD, WORD);
  206. extern WORD _PASCAL_ __awe32IsPlaying(WORD, WORD, WORD, WORD);
  207.  
  208. /* NRPN support functions */
  209. extern WORD _PASCAL_ awe32InitNRPN(void);
  210.  
  211. /* Hardware support functions */
  212. extern WORD _PASCAL_ awe32Detect(WORD);
  213. extern WORD _PASCAL_ awe32InitHardware(void);
  214. extern WORD _PASCAL_ awe32Terminate(void);
  215. extern WORD _PASCAL_ awe32Check(WORD, DWORD*, DWORD*, DWORD*);
  216.  
  217. /* SoundFont support functions */
  218. extern WORD _PASCAL_ awe32TotalPatchRam(SOUND_PACKET _FAR_*);
  219. extern WORD _PASCAL_ awe32DefineBankSizes(SOUND_PACKET _FAR_*);
  220. extern WORD _PASCAL_ awe32SFontLoadRequest(SOUND_PACKET _FAR_*);
  221. extern WORD _PASCAL_ awe32StreamSample(SOUND_PACKET _FAR_*);
  222. extern WORD _PASCAL_ awe32SetPresets(SOUND_PACKET _FAR_*);
  223. extern WORD _PASCAL_ awe32SetPresetsEx(SOUND_PACKET _FAR_*);
  224. extern WORD _PASCAL_ awe32ReleaseBank(SOUND_PACKET _FAR_*);
  225. extern WORD _PASCAL_ awe32ReleaseAllBanks(SOUND_PACKET _FAR_*);
  226. extern WORD _PASCAL_ awe32WPLoadRequest(WAVE_PACKET _FAR_*);
  227. extern WORD _PASCAL_ awe32WPLoadWave(WAVE_PACKET _FAR_*);
  228. extern WORD _PASCAL_ awe32WPStreamWave(WAVE_PACKET _FAR_*);
  229. extern WORD _PASCAL_ awe32WPBuildSFont(WAVE_PACKET _FAR_*);
  230.  
  231. /* End of modules */
  232. extern int* __midieng_ecode(void);
  233. extern int* __hardware_ecode(void);
  234. extern int* __sysex_ecode(void);
  235. extern int* __sfhelp1_ecode(void);
  236. extern int* __sfhelp2_ecode(void);
  237. extern int* __sbkload_ecode(void);
  238. extern int* __wavload_ecode(void);
  239. extern int* __nrpn_ecode(void);
  240. extern int __midivar_edata;
  241. extern int __nrpnvar_edata;
  242. extern int __embed_edata;
  243.  
  244.  
  245. #if defined(__cplusplus)
  246. }
  247. #endif
  248.  
  249.  
  250. #if defined(__SC__)
  251.     #pragma pack()
  252. #endif
  253.  
  254.  
  255. #if defined(__HIGHC__)
  256.     #pragma Pop_align_members
  257.     #pragma Global_aliasing_convention()
  258.     #pragma Alias(awe32RegW,"AWE32REGW")
  259.     #pragma Alias(awe32RegRW,"AWE32REGRW")
  260.     #pragma Alias(awe32RegDW,"AWE32REGDW")
  261.     #pragma Alias(awe32RegRDW,"AWE32REGRDW")
  262.     #pragma Alias(awe32InitMIDI,"AWE32INITMIDI")
  263.     #pragma Alias(awe32NoteOn,"AWE32NOTEON")
  264.     #pragma Alias(awe32NoteOff,"AWE32NOTEOFF")
  265.     #pragma Alias(awe32ProgramChange,"AWE32PROGRAMCHANGE")
  266.     #pragma Alias(awe32Controller,"AWE32CONTROLLER")
  267.     #pragma Alias(awe32PolyKeyPressure,"AWE32POLYKEYPRESSURE")
  268.     #pragma Alias(awe32ChannelPressure,"AWE32CHANNELPRESSURE")
  269.     #pragma Alias(awe32PitchBend,"AWE32PITCHBEND")
  270.     #pragma Alias(awe32Sysex,"AWE32SYSEX")
  271.     #pragma Alias(__awe32NoteOff,"__AWE32NOTEOFF")
  272.     #pragma Alias(__awe32IsPlaying,"__AWE32ISPLAYING")
  273.     #pragma Alias(awe32InitNRPN,"AWE32INITNRPN")
  274.     #pragma Alias(awe32Detect,"AWE32DETECT")
  275.     #pragma Alias(awe32InitHardware,"AWE32INITHARDWARE")
  276.     #pragma Alias(awe32Terminate,"AWE32TERMINATE")
  277.     #pragma Alias(awe32TotalPatchRam,"AWE32TOTALPATCHRAM")
  278.     #pragma Alias(awe32DefineBankSizes,"AWE32DEFINEBANKSIZES")
  279.     #pragma Alias(awe32SFontLoadRequest,"AWE32SFONTLOADREQUEST")
  280.     #pragma Alias(awe32StreamSample,"AWE32STREAMSAMPLE")
  281.     #pragma Alias(awe32SetPresets,"AWE32SETPRESETS")
  282.     #pragma Alias(awe32SetPresetsEx,"AWE32SETPRESETSEX")
  283.     #pragma Alias(awe32ReleaseBank,"AWE32RELEASEBANK")
  284.     #pragma Alias(awe32ReleaseAllBanks,"AWE32RELEASEALLBANKS")
  285.     #pragma Alias(awe32WPLoadRequest,"AWE32WPLOADREQUEST")
  286.     #pragma Alias(awe32WPLoadWave,"AWE32WPLOADWAVE")
  287.     #pragma Alias(awe32WPStreamWave,"AWE32WPSTREAMWAVE")
  288.     #pragma Alias(awe32WPBuildSFont,"AWE32WPBUILDSFONT")
  289.     #pragma Alias(awe32Check,"AWE32CHECK")
  290. #endif
  291.  
  292.  
  293. #if defined(__WATCOMC__)
  294.     #pragma pack()
  295.     #pragma aux awe32NumG "_*"
  296.     #pragma aux awe32BaseAddx "_*"
  297.     #pragma aux awe32DramSize "_*"
  298.     #pragma aux awe32Scratch "_*"
  299.     #pragma aux awe32SFont "_*"
  300.     #pragma aux awe32GChannel "_*"
  301.     #pragma aux awe32MIDIChannel "_*"
  302.     #pragma aux awe32SoundPad "_*"
  303.     #pragma aux awe32NRPNChannel "_*"
  304.     #pragma aux awe32SPad1Obj "_*"
  305.     #pragma aux awe32SPad2Obj "_*"
  306.     #pragma aux awe32SPad3Obj "_*"
  307.     #pragma aux awe32SPad4Obj "_*"
  308.     #pragma aux awe32SPad5Obj "_*"
  309.     #pragma aux awe32SPad6Obj "_*"
  310.     #pragma aux awe32SPad7Obj "_*"
  311.     #pragma aux __midieng_code "_*"
  312.     #pragma aux __midieng_ecode "_*"
  313.     #pragma aux __hardware_code "_*"
  314.     #pragma aux __hardware_ecode "_*"
  315.     #pragma aux __sbkload_code "_*"
  316.     #pragma aux __sbkload_ecode "_*"
  317.     #pragma aux __nrpn_code "_*"
  318.     #pragma aux __nrpn_ecode "_*"
  319.     #pragma aux __midivar_data "_*"
  320.     #pragma aux __midivar_edata "_*"
  321.     #pragma aux __nrpnvar_data "_*"
  322.     #pragma aux __nrpnvar_edata "_*"
  323.     #pragma aux __embed_data "_*"
  324.     #pragma aux __embed_edata "_*"
  325. #endif
  326.  
  327.  
  328. #pragma pack()
  329.  
  330.  
  331. #endif      /* _CTAWEAPI */
  332.