352 lines
13 KiB
C
352 lines
13 KiB
C
/*
|
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
/****************************************************************************\
|
|
* *
|
|
* CTAWEAPI.H SB AWE32 DOS API header *
|
|
* *
|
|
* (C) Copyright Creative Technology Ltd. 1992-94. All rights reserved *
|
|
* worldwide. *
|
|
* *
|
|
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY *
|
|
* KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE *
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR *
|
|
* PURPOSE. *
|
|
* *
|
|
* You have a royalty-free right to use, modify, reproduce and *
|
|
* distribute the Sample Files (and/or any modified version) in *
|
|
* any way you find useful, provided that you agree to *
|
|
* the Creative's Software Licensing Aggreement and you also agree that *
|
|
* Creative has no warranty obligations or liability for any Sample Files. *
|
|
* *
|
|
\****************************************************************************/
|
|
|
|
/****************************************************************************\
|
|
* File name : CTAWEAPI.H *
|
|
* *
|
|
* Programmer : Creative SB AWE32 Team *
|
|
* Creative Technology Ltd, 1994. All rights reserved. *
|
|
* *
|
|
* Version : 2.0b *
|
|
* *
|
|
\****************************************************************************/
|
|
|
|
#ifndef _CTAWEAPI
|
|
#define _CTAWEAPI
|
|
|
|
|
|
#define MAXBANKS 64 /* maximum number of banks */
|
|
#define MAXNRPN 32 /* maximum number of NRPN */
|
|
|
|
|
|
#if defined(__FLAT__) || defined(__HIGHC__) || defined(DOS386)
|
|
#define PACKETSIZE 8192 /* packet size for 32bit libraries */
|
|
#else
|
|
#define PACKETSIZE 512 /* packet size for real mode libraries */
|
|
#endif
|
|
|
|
|
|
#if defined(__FLAT__)
|
|
#define NEAR
|
|
#define FAR
|
|
#endif
|
|
|
|
|
|
#if defined(__SC__)
|
|
#pragma pack(1)
|
|
#if defined(DOS386)
|
|
#define NEAR
|
|
#define FAR
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#if defined(__WATCOMC__)
|
|
#pragma pack(1)
|
|
#endif
|
|
|
|
|
|
#if defined(__HIGHC__)
|
|
#define NEAR
|
|
#define FAR
|
|
#define PASCAL _DCC((_DEFAULT_CALLING_CONVENTION|_CALLEE_POPS_STACK) & \
|
|
~ (_REVERSE_PARMS|_OVERLOADED))
|
|
#pragma Push_align_members(1)
|
|
#pragma Global_aliasing_convention("_%r")
|
|
#endif
|
|
|
|
|
|
typedef int BOOL;
|
|
#define FALSE 0
|
|
#define TRUE 1
|
|
|
|
typedef unsigned char BYTE;
|
|
typedef unsigned short WORD;
|
|
typedef unsigned long DWORD;
|
|
|
|
typedef short int SHORT;
|
|
typedef unsigned int UINT;
|
|
typedef signed long LONG;
|
|
|
|
#ifndef FAR
|
|
#define FAR __far
|
|
#endif
|
|
|
|
#ifndef HUGE
|
|
#define HUGE __huge
|
|
#endif
|
|
|
|
#ifndef PASCAL
|
|
#define PASCAL __pascal
|
|
#endif
|
|
|
|
typedef void FAR* LPVOID;
|
|
typedef BYTE FAR* LPBYTE;
|
|
typedef WORD FAR* LPWORD;
|
|
typedef DWORD FAR* LPDWORD;
|
|
|
|
#define LOBYTE(w) ((BYTE)(w))
|
|
#define HIBYTE(w) ((BYTE)(((UINT)(w) >> 8) & 0xFF))
|
|
|
|
#define LOWORD(l) ((WORD)(DWORD)(l))
|
|
#define HIWORD(l) ((WORD)((((DWORD)(l)) >> 16) & 0xFFFF))
|
|
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/* Start of modules */
|
|
extern int* __midieng_code(void);
|
|
extern int* __hardware_code(void);
|
|
extern int* __sbkload_code(void);
|
|
extern int* __nrpn_code(void);
|
|
extern int __midivar_data;
|
|
extern int __nrpnvar_data;
|
|
extern int __embed_data;
|
|
|
|
|
|
typedef char SCRATCH[702];
|
|
typedef char SOUNDFONT[124];
|
|
typedef char GCHANNEL[20];
|
|
typedef char MIDICHANNEL[32];
|
|
typedef char NRPNCHANNEL[96];
|
|
|
|
typedef struct {
|
|
SHORT bank_no; /* Slot number being used */
|
|
SHORT total_banks; /* Total number of banks */
|
|
LONG FAR* banksizes; /* Pointer to a list of bank sizes */
|
|
LONG file_size; /* exact size of the sound font file */
|
|
char FAR* data; /* Address of buffer of size >= PACKETSIZE */
|
|
char FAR* presets; /* Allocated memory for preset data */
|
|
|
|
LONG total_patch_ram; /* Total patch ram available */
|
|
SHORT no_sample_packets;/* Number of packets of sound sample to stream */
|
|
LONG sample_seek; /* Start file location of sound sample */
|
|
LONG preset_seek; /* Address of preset_seek location */
|
|
LONG preset_read_size; /* Number of bytes from preset_seek to allocate and read */
|
|
LONG preset_size; /* Preset actual size */
|
|
} SOUND_PACKET;
|
|
|
|
typedef struct {
|
|
SHORT tag; /* Must be 0x100 or 0x101 */
|
|
SHORT preset_size; /* Preset table of this size is required */
|
|
SHORT no_wave_packets; /* Number of packets of Wave sample to stream. */
|
|
LONG reserved;
|
|
|
|
SHORT bank_no; /* bank number */
|
|
char FAR* data; /* Address of packet of size PACKETSIZE */
|
|
char FAR* presets; /* Allocated memory for preset data */
|
|
LONG sample_size; /* Sample size, i.e. number of samples */
|
|
LONG samples_per_sec; /* Samples per second */
|
|
SHORT bits_per_sample; /* Bits per sample, 8 or 16 */
|
|
SHORT no_channels; /* Number of channels, 1=mono, 2=stereo */
|
|
SHORT looping; /* Looping? 0=no, 1=yes */
|
|
LONG startloop; /* if looping, then these are the addresses */
|
|
LONG endloop;
|
|
SHORT release; /* release time, 0=24ms, 8191=23.78s */
|
|
} WAVE_PACKET;
|
|
|
|
typedef struct {
|
|
LPBYTE SPad1;
|
|
LPBYTE SPad2;
|
|
LPBYTE SPad3;
|
|
LPBYTE SPad4;
|
|
LPBYTE SPad5;
|
|
LPBYTE SPad6;
|
|
LPBYTE SPad7;
|
|
} SOUNDPAD;
|
|
|
|
/* AWE32 variables */
|
|
extern WORD awe32NumG;
|
|
extern WORD awe32BaseAddx;
|
|
extern DWORD awe32DramSize;
|
|
|
|
/* MIDI variables */
|
|
extern SCRATCH awe32Scratch;
|
|
extern SOUNDFONT awe32SFont[4];
|
|
extern GCHANNEL awe32GChannel[32];
|
|
extern MIDICHANNEL awe32MIDIChannel[16];
|
|
extern SOUNDPAD awe32SoundPad;
|
|
|
|
/* NRPN variables */
|
|
extern NRPNCHANNEL awe32NRPNChannel[16];
|
|
|
|
/* SoundFont objects */
|
|
extern BYTE awe32SPad1Obj[];
|
|
extern BYTE awe32SPad2Obj[];
|
|
extern BYTE awe32SPad3Obj[];
|
|
extern BYTE awe32SPad4Obj[];
|
|
extern BYTE awe32SPad5Obj[];
|
|
extern BYTE awe32SPad6Obj[];
|
|
extern BYTE awe32SPad7Obj[];
|
|
|
|
/* AWE register functions */
|
|
extern void PASCAL awe32RegW(WORD, WORD);
|
|
extern WORD PASCAL awe32RegRW(WORD);
|
|
extern void PASCAL awe32RegDW(WORD, DWORD);
|
|
extern DWORD PASCAL awe32RegRDW(WORD);
|
|
|
|
/* MIDI support functions */
|
|
extern WORD PASCAL awe32InitMIDI(void);
|
|
extern WORD PASCAL awe32NoteOn(WORD, WORD, WORD);
|
|
extern WORD PASCAL awe32NoteOff(WORD, WORD, WORD);
|
|
extern WORD PASCAL awe32ProgramChange(WORD, WORD);
|
|
extern WORD PASCAL awe32Controller(WORD, WORD, WORD);
|
|
extern WORD PASCAL awe32PolyKeyPressure(WORD, WORD, WORD);
|
|
extern WORD PASCAL awe32ChannelPressure(WORD, WORD);
|
|
extern WORD PASCAL awe32PitchBend(WORD, WORD, WORD);
|
|
extern WORD PASCAL awe32Sysex(WORD, LPBYTE, WORD);
|
|
extern WORD PASCAL __awe32NoteOff(WORD, WORD, WORD, WORD);
|
|
extern WORD PASCAL __awe32IsPlaying(WORD, WORD, WORD, WORD);
|
|
|
|
/* NRPN support functions */
|
|
extern WORD PASCAL awe32InitNRPN(void);
|
|
|
|
/* Hardware support functions */
|
|
extern WORD PASCAL awe32Detect(WORD);
|
|
extern WORD PASCAL awe32InitHardware(void);
|
|
extern WORD PASCAL awe32Terminate(void);
|
|
|
|
/* SoundFont support functions */
|
|
extern WORD PASCAL awe32TotalPatchRam(SOUND_PACKET FAR*);
|
|
extern WORD PASCAL awe32DefineBankSizes(SOUND_PACKET FAR*);
|
|
extern WORD PASCAL awe32SFontLoadRequest(SOUND_PACKET FAR*);
|
|
extern WORD PASCAL awe32StreamSample(SOUND_PACKET FAR*);
|
|
extern WORD PASCAL awe32SetPresets(SOUND_PACKET FAR*);
|
|
extern WORD PASCAL awe32ReleaseBank(SOUND_PACKET FAR*);
|
|
extern WORD PASCAL awe32ReleaseAllBanks(SOUND_PACKET FAR*);
|
|
extern WORD PASCAL awe32WPLoadRequest(WAVE_PACKET FAR*);
|
|
extern WORD PASCAL awe32WPLoadWave(WAVE_PACKET FAR*);
|
|
extern WORD PASCAL awe32WPStreamWave(WAVE_PACKET FAR*);
|
|
extern WORD PASCAL awe32WPBuildSFont(WAVE_PACKET FAR*);
|
|
|
|
/* End of modules */
|
|
extern int* __midieng_ecode(void);
|
|
extern int* __hardware_ecode(void);
|
|
extern int* __sbkload_ecode(void);
|
|
extern int* __nrpn_ecode(void);
|
|
extern int __midivar_edata;
|
|
extern int __nrpnvar_edata;
|
|
extern int __embed_edata;
|
|
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
|
|
#if defined(__SC__)
|
|
#pragma pack()
|
|
#endif
|
|
|
|
|
|
#if defined(__HIGHC__)
|
|
#pragma Pop_align_members
|
|
#pragma Global_aliasing_convention()
|
|
#pragma Alias(awe32RegW,"AWE32REGW")
|
|
#pragma Alias(awe32RegRW,"AWE32REGRW")
|
|
#pragma Alias(awe32RegDW,"AWE32REGDW")
|
|
#pragma Alias(awe32RegRDW,"AWE32REGRDW")
|
|
#pragma Alias(awe32InitMIDI,"AWE32INITMIDI")
|
|
#pragma Alias(awe32NoteOn,"AWE32NOTEON")
|
|
#pragma Alias(awe32NoteOff,"AWE32NOTEOFF")
|
|
#pragma Alias(awe32ProgramChange,"AWE32PROGRAMCHANGE")
|
|
#pragma Alias(awe32Controller,"AWE32CONTROLLER")
|
|
#pragma Alias(awe32PolyKeyPressure,"AWE32POLYKEYPRESSURE")
|
|
#pragma Alias(awe32ChannelPressure,"AWE32CHANNELPRESSURE")
|
|
#pragma Alias(awe32PitchBend,"AWE32PITCHBEND")
|
|
#pragma Alias(awe32Sysex,"AWE32SYSEX")
|
|
#pragma Alias(__awe32NoteOff,"__AWE32NOTEOFF")
|
|
#pragma Alias(__awe32IsPlaying,"__AWE32ISPLAYING")
|
|
#pragma Alias(awe32InitNRPN,"AWE32INITNRPN")
|
|
#pragma Alias(awe32Detect,"AWE32DETECT")
|
|
#pragma Alias(awe32InitHardware,"AWE32INITHARDWARE")
|
|
#pragma Alias(awe32Terminate,"AWE32TERMINATE")
|
|
#pragma Alias(awe32TotalPatchRam,"AWE32TOTALPATCHRAM")
|
|
#pragma Alias(awe32DefineBankSizes,"AWE32DEFINEBANKSIZES")
|
|
#pragma Alias(awe32SFontLoadRequest,"AWE32SFONTLOADREQUEST")
|
|
#pragma Alias(awe32StreamSample,"AWE32STREAMSAMPLE")
|
|
#pragma Alias(awe32SetPresets,"AWE32SETPRESETS")
|
|
#pragma Alias(awe32ReleaseBank,"AWE32RELEASEBANK")
|
|
#pragma Alias(awe32ReleaseAllBanks,"AWE32RELEASEALLBANKS")
|
|
#pragma Alias(awe32WPLoadRequest,"AWE32WPLOADREQUEST")
|
|
#pragma Alias(awe32WPLoadWave,"AWE32WPLOADWAVE")
|
|
#pragma Alias(awe32WPStreamWave,"AWE32WPSTREAMWAVE")
|
|
#pragma Alias(awe32WPBuildSFont,"AWE32WPBUILDSFONT")
|
|
#endif
|
|
|
|
|
|
#if defined(__WATCOMC__)
|
|
#pragma pack()
|
|
#pragma aux awe32NumG "_*"
|
|
#pragma aux awe32BaseAddx "_*"
|
|
#pragma aux awe32DramSize "_*"
|
|
#pragma aux awe32Scratch "_*"
|
|
#pragma aux awe32SFont "_*"
|
|
#pragma aux awe32GChannel "_*"
|
|
#pragma aux awe32MIDIChannel "_*"
|
|
#pragma aux awe32SoundPad "_*"
|
|
#pragma aux awe32NRPNChannel "_*"
|
|
#pragma aux awe32SPad1Obj "_*"
|
|
#pragma aux awe32SPad2Obj "_*"
|
|
#pragma aux awe32SPad3Obj "_*"
|
|
#pragma aux awe32SPad4Obj "_*"
|
|
#pragma aux awe32SPad5Obj "_*"
|
|
#pragma aux awe32SPad6Obj "_*"
|
|
#pragma aux awe32SPad7Obj "_*"
|
|
#pragma aux __midieng_code "_*"
|
|
#pragma aux __midieng_ecode "_*"
|
|
#pragma aux __hardware_code "_*"
|
|
#pragma aux __hardware_ecode "_*"
|
|
#pragma aux __sbkload_code "_*"
|
|
#pragma aux __sbkload_ecode "_*"
|
|
#pragma aux __nrpn_code "_*"
|
|
#pragma aux __nrpn_ecode "_*"
|
|
#pragma aux __midivar_data "_*"
|
|
#pragma aux __midivar_edata "_*"
|
|
#pragma aux __nrpnvar_data "_*"
|
|
#pragma aux __nrpnvar_edata "_*"
|
|
#pragma aux __embed_data "_*"
|
|
#pragma aux __embed_edata "_*"
|
|
#endif
|
|
|
|
|
|
#endif /* _CTAWEAPI */
|