📄 audio.h
字号:
/* * $Id: audio.h 1.17 1996/09/25 17:13:02 chasan released $ * 1.18 1998/10/12 23:54:08 chasan released * 1.19 1998/10/24 18:20:52 chasan released * * SEAL Synthetic Audio Library API Interface * * Copyright (C) 1995, 1996, 1997, 1998 Carlos Hasan. All Rights Reserved. * */#ifndef __AUDIO_H#define __AUDIO_H#ifdef __cplusplusextern "C" {#endif#ifndef WIN32#define AIAPI#else#define AIAPI __stdcall#endif#ifndef WINAPI/* atomic data types definitions */typedef void VOID;typedef char CHAR;typedef int INT;typedef long LONG;typedef int BOOL;typedef unsigned char BYTE;typedef unsigned short WORD;typedef unsigned int UINT;typedef unsigned long DWORD;typedef VOID* LPVOID;typedef CHAR* LPCHAR;typedef INT* LPINT;typedef LONG* LPLONG;typedef BOOL* LPBOOL;typedef BYTE* LPBYTE;typedef WORD* LPWORD;typedef UINT* LPUINT;typedef DWORD* LPDWORD;typedef CHAR* LPSTR;typedef DWORD HANDLE;/* helper macros */#define LOBYTE(s) ((BYTE)(s))//#define HIBYTE(s) ((BYTE)((WORD)(s)>>8))#define LOWORD(l) ((WORD)(l))//#define HIWORD(l) ((WORD)((DWORD)(l)>>16))//#define MAKEWORD(l,h) ((WORD)(((BYTE)(l))|(((WORD)((BYTE)(h)))<<8)))//#define MAKELONG(l,h) ((DWORD)(((WORD)(l))|(((DWORD)((WORD)(h)))<<16)))#endif/* audio system version number */#define AUDIO_SYSTEM_VERSION 0x0106/* audio capabilities bit fields definitions */#define AUDIO_FORMAT_1M08 0x00000001#define AUDIO_FORMAT_1S08 0x00000002#define AUDIO_FORMAT_1M16 0x00000004#define AUDIO_FORMAT_1S16 0x00000008#define AUDIO_FORMAT_2M08 0x00000010#define AUDIO_FORMAT_2S08 0x00000020#define AUDIO_FORMAT_2M16 0x00000040#define AUDIO_FORMAT_2S16 0x00000080#define AUDIO_FORMAT_4M08 0x00000100#define AUDIO_FORMAT_4S08 0x00000200#define AUDIO_FORMAT_4M16 0x00000400#define AUDIO_FORMAT_4S16 0x00000800/* audio format bit fields defines for devices and waveforms */#define AUDIO_FORMAT_8BITS 0x0000#define AUDIO_FORMAT_16BITS 0x0001#define AUDIO_FORMAT_LOOP 0x0010#define AUDIO_FORMAT_BIDILOOP 0x0020#define AUDIO_FORMAT_REVERSE 0x0080#define AUDIO_FORMAT_MONO 0x0000#define AUDIO_FORMAT_STEREO 0x0100#define AUDIO_FORMAT_FILTER 0x8000/* audio resource limits defines */#define AUDIO_MAX_VOICES 32#define AUDIO_MAX_SAMPLES 16#define AUDIO_MAX_PATCHES 128#define AUDIO_MAX_PATTERNS 256#define AUDIO_MAX_ORDERS 256#define AUDIO_MAX_NOTES 96#define AUDIO_MAX_POINTS 12#define AUDIO_MIN_PERIOD 1#define AUDIO_MAX_PERIOD 31999#define AUDIO_MIN_VOLUME 0x00#define AUDIO_MAX_VOLUME 0x40#define AUDIO_MIN_PANNING 0x00#define AUDIO_MAX_PANNING 0xFF#define AUDIO_MIN_POSITION 0x00000000L#define AUDIO_MAX_POSITION 0x00100000L#define AUDIO_MIN_FREQUENCY 0x00000200L#define AUDIO_MAX_FREQUENCY 0x00080000L/* audio error code defines */#define AUDIO_ERROR_NONE 0x0000#define AUDIO_ERROR_INVALHANDLE 0x0001#define AUDIO_ERROR_INVALPARAM 0x0002#define AUDIO_ERROR_NOTSUPPORTED 0x0003#define AUDIO_ERROR_BADDEVICEID 0x0004#define AUDIO_ERROR_NODEVICE 0x0005#define AUDIO_ERROR_DEVICEBUSY 0x0006#define AUDIO_ERROR_BADFORMAT 0x0007#define AUDIO_ERROR_NOMEMORY 0x0008#define AUDIO_ERROR_NODRAMMEMORY 0x0009#define AUDIO_ERROR_FILENOTFOUND 0x000A#define AUDIO_ERROR_BADFILEFORMAT 0x000B#define AUDIO_LAST_ERROR 0x000B/* audio device identifiers */#define AUDIO_DEVICE_NONE 0x0000#define AUDIO_DEVICE_MAPPER 0xFFFF/* audio product identifiers */#define AUDIO_PRODUCT_NONE 0x0000#define AUDIO_PRODUCT_SB 0x0001#define AUDIO_PRODUCT_SB15 0x0002#define AUDIO_PRODUCT_SB20 0x0003#define AUDIO_PRODUCT_SBPRO 0x0004#define AUDIO_PRODUCT_SB16 0x0005#define AUDIO_PRODUCT_AWE32 0x0006#define AUDIO_PRODUCT_WSS 0x0007#define AUDIO_PRODUCT_ESS 0x0008#define AUDIO_PRODUCT_GUS 0x0009#define AUDIO_PRODUCT_GUSDB 0x000A#define AUDIO_PRODUCT_GUSMAX 0x000B#define AUDIO_PRODUCT_IWAVE 0x000C#define AUDIO_PRODUCT_PAS 0x000D#define AUDIO_PRODUCT_PAS16 0x000E#define AUDIO_PRODUCT_ARIA 0x000F#define AUDIO_PRODUCT_WINDOWS 0x0100#define AUDIO_PRODUCT_LINUX 0x0101#define AUDIO_PRODUCT_SPARC 0x0102#define AUDIO_PRODUCT_SGI 0x0103#define AUDIO_PRODUCT_DSOUND 0x0104#define AUDIO_PRODUCT_OS2MMPM 0x0105#define AUDIO_PRODUCT_OS2DART 0x0106#define AUDIO_PRODUCT_BEOSR3 0x0107#define AUDIO_PRODUCT_BEOS 0x0108#define AUDIO_PRODUCT_QNX 0x0109/* audio mixer channels */#define AUDIO_MIXER_MASTER_VOLUME 0x0001#define AUDIO_MIXER_TREBLE 0x0002#define AUDIO_MIXER_BASS 0x0003#define AUDIO_MIXER_CHORUS 0x0004#define AUDIO_MIXER_REVERB 0x0005/* audio envelope bit fields */#define AUDIO_ENVELOPE_ON 0x0001#define AUDIO_ENVELOPE_SUSTAIN 0x0002#define AUDIO_ENVELOPE_LOOP 0x0004/* audio pattern bit fields */#define AUDIO_PATTERN_PACKED 0x0080#define AUDIO_PATTERN_NOTE 0x0001#define AUDIO_PATTERN_SAMPLE 0x0002#define AUDIO_PATTERN_VOLUME 0x0004#define AUDIO_PATTERN_COMMAND 0x0008#define AUDIO_PATTERN_PARAMS 0x0010/* audio module bit fields */#define AUDIO_MODULE_AMIGA 0x0000#define AUDIO_MODULE_LINEAR 0x0001#define AUDIO_MODULE_PANNING 0x8000#pragma pack(1)/* audio capabilities structure */typedef struct { WORD wProductId; /* product identifier */ CHAR szProductName[30]; /* product name */ DWORD dwFormats; /* formats supported */} AUDIOCAPS, *LPAUDIOCAPS;/* audio format structure */typedef struct { UINT nDeviceId; /* device identifier */ WORD wFormat; /* playback format */ WORD nSampleRate; /* sampling frequency */} AUDIOINFO, *LPAUDIOINFO;/* audio waveform structure */typedef struct { LPBYTE lpData; /* data pointer */ DWORD dwHandle; /* waveform handle */ DWORD dwLength; /* waveform length */ DWORD dwLoopStart; /* loop start point */ DWORD dwLoopEnd; /* loop end point */ WORD nSampleRate; /* sampling rate */ WORD wFormat; /* format bits */} AUDIOWAVE, *LPAUDIOWAVE;/* audio envelope point structure */typedef struct { WORD nFrame; /* envelope frame */ WORD nValue; /* envelope value */} AUDIOPOINT, *LPAUDIOPOINT;/* audio envelope structure */typedef struct { AUDIOPOINT aEnvelope[AUDIO_MAX_POINTS]; /* envelope points */ BYTE nPoints; /* number of points */ BYTE nSustain; /* sustain point */ BYTE nLoopStart; /* loop start point */ BYTE nLoopEnd; /* loop end point */ WORD wFlags; /* envelope flags */ WORD nSpeed; /* envelope speed */} AUDIOENVELOPE, *LPAUDIOENVELOPE;/* audio sample structure */typedef struct { CHAR szSampleName[32]; /* sample name */ BYTE nVolume; /* default volume */ BYTE nPanning; /* default panning */ BYTE nRelativeNote; /* relative note */ BYTE nFinetune; /* finetune */ AUDIOWAVE Wave; /* waveform handle */} AUDIOSAMPLE, *LPAUDIOSAMPLE;/* audio patch structure */typedef struct { CHAR szPatchName[32]; /* patch name */ BYTE aSampleNumber[AUDIO_MAX_NOTES]; /* multi-sample table */ WORD nSamples; /* number of samples */ BYTE nVibratoType; /* vibrato type */ BYTE nVibratoSweep; /* vibrato sweep */ BYTE nVibratoDepth; /* vibrato depth */ BYTE nVibratoRate; /* vibrato rate */ WORD nVolumeFadeout; /* volume fadeout */ AUDIOENVELOPE Volume; /* volume envelope */ AUDIOENVELOPE Panning; /* panning envelope */ LPAUDIOSAMPLE aSampleTable; /* sample table */} AUDIOPATCH, *LPAUDIOPATCH;/* audio pattern structure */typedef struct { WORD nPacking; /* packing type */ WORD nTracks; /* number of tracks */ WORD nRows; /* number of rows */ WORD nSize; /* data size */ LPBYTE lpData; /* data pointer */} AUDIOPATTERN, *LPAUDIOPATTERN;/* audio module structure */typedef struct { CHAR szModuleName[32]; /* module name */ WORD wFlags; /* module flags */ WORD nOrders; /* number of orders */ WORD nRestart; /* restart position */ WORD nTracks; /* number of tracks */ WORD nPatterns; /* number of patterns */ WORD nPatches; /* number of patches */ WORD nTempo; /* initial tempo */ WORD nBPM; /* initial BPM */ BYTE aOrderTable[AUDIO_MAX_ORDERS]; /* order table */ BYTE aPanningTable[AUDIO_MAX_VOICES]; /* panning table */ LPAUDIOPATTERN aPatternTable; /* pattern table */ LPAUDIOPATCH aPatchTable; /* patch table */} AUDIOMODULE, *LPAUDIOMODULE;/* audio music track structure */typedef struct { BYTE nNote; /* note index */ BYTE nPatch; /* patch number */ BYTE nSample; /* sample number */ BYTE nCommand; /* effect command */ BYTE bParams; /* effect params */ BYTE nVolumeCmd; /* volume command */ BYTE nVolume; /* volume level */ BYTE nPanning; /* stereo panning */ LONG dwFrequency; /* note frequency */ WORD wPeriod; /* note period */} AUDIOTRACK, *LPAUDIOTRACK;/* audio callback function defines */typedef VOID (AIAPI* LPFNAUDIOWAVE)(LPBYTE, UINT);typedef VOID (AIAPI* LPFNAUDIOTIMER)(VOID);typedef VOID (AIAPI* LPFNAUDIOCALLBACK)(BYTE, UINT, UINT);/* audio handle defines */typedef HANDLE HAC;typedef HAC* LPHAC;#pragma pack()/* audio interface API prototypes */UINT AIAPI AInitialize(VOID);UINT AIAPI AGetVersion(VOID);UINT AIAPI AGetAudioNumDevs(VOID);UINT AIAPI AGetAudioDevCaps(UINT nDeviceId, LPAUDIOCAPS lpCaps);UINT AIAPI AGetErrorText(UINT nErrorCode, LPSTR lpText, UINT nSize);UINT AIAPI APingAudio(LPUINT lpnDeviceId);UINT AIAPI AOpenAudio(LPAUDIOINFO lpInfo);UINT AIAPI ACloseAudio(VOID);UINT AIAPI AUpdateAudio(VOID);UINT AIAPI AUpdateAudioEx(UINT nFrames);UINT AIAPI ASetAudioMixerValue(UINT nChannel, UINT nValue);UINT AIAPI AOpenVoices(UINT nVoices);UINT AIAPI ACloseVoices(VOID);UINT AIAPI ASetAudioCallback(LPFNAUDIOWAVE lpfnAudioWave);UINT AIAPI ASetAudioTimerProc(LPFNAUDIOTIMER lpfnAudioTimer);UINT AIAPI ASetAudioTimerRate(UINT nTimerRate);LONG AIAPI AGetAudioDataAvail(VOID);UINT AIAPI ACreateAudioData(LPAUDIOWAVE lpWave);UINT AIAPI ADestroyAudioData(LPAUDIOWAVE lpWave);UINT AIAPI AWriteAudioData(LPAUDIOWAVE lpWave, DWORD dwOffset, UINT nCount);UINT AIAPI ACreateAudioVoice(LPHAC lphVoice);UINT AIAPI ADestroyAudioVoice(HAC hVoice);UINT AIAPI APlayVoice(HAC hVoice, LPAUDIOWAVE lpWave);UINT AIAPI APrimeVoice(HAC hVoice, LPAUDIOWAVE lpWave);UINT AIAPI AStartVoice(HAC hVoice);UINT AIAPI AStopVoice(HAC hVoice);UINT AIAPI ASetVoicePosition(HAC hVoice, LONG dwPosition);UINT AIAPI ASetVoiceFrequency(HAC hVoice, LONG dwFrequency);UINT AIAPI ASetVoiceVolume(HAC hVoice, UINT nVolume);UINT AIAPI ASetVoicePanning(HAC hVoice, UINT nPanning);UINT AIAPI AGetVoicePosition(HAC hVoice, LPLONG lpdwPosition);UINT AIAPI AGetVoiceFrequency(HAC hVoice, LPLONG lpdwFrequency);UINT AIAPI AGetVoiceVolume(HAC hVoice, LPUINT lpnVolume);UINT AIAPI AGetVoicePanning(HAC hVoice, LPUINT lpnPanning);UINT AIAPI AGetVoiceStatus(HAC hVoice, LPBOOL lpnStatus);UINT AIAPI APlayModule(LPAUDIOMODULE lpModule);UINT AIAPI AStopModule(VOID);UINT AIAPI APauseModule(VOID);UINT AIAPI AResumeModule(VOID);UINT AIAPI ASetModuleVolume(UINT nVolume);UINT AIAPI ASetModulePosition(UINT nOrder, UINT nRow);UINT AIAPI AGetModuleVolume(LPUINT lpnVolume);UINT AIAPI AGetModulePosition(LPUINT pnOrder, LPUINT lpnRow);UINT AIAPI AGetModuleStatus(LPBOOL lpnStatus);UINT AIAPI ASetModuleCallback(LPFNAUDIOCALLBACK lpfnAudioCallback);UINT AIAPI ALoadModuleFile(LPSTR lpszFileName, LPAUDIOMODULE* lplpModule, DWORD dwFileOffset);UINT AIAPI AFreeModuleFile(LPAUDIOMODULE lpModule);UINT AIAPI ALoadWaveFile(LPSTR lpszFileName, LPAUDIOWAVE* lplpWave, DWORD dwFileOffset);UINT AIAPI AFreeWaveFile(LPAUDIOWAVE lpWave);UINT AIAPI AGetModuleTrack(UINT nTrack, LPAUDIOTRACK lpTrack);#ifdef __cplusplus};#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -