📄 bass.h
字号:
/*
BASS 2.4 C/C++ header file
Copyright (c) 1999-2008 Un4seen Developments Ltd. See the BASS.CHM file for more detailed documentation
*/#ifndef BASS_H#define BASS_H#ifdef _WIN32 // Windows#include <wtypes.h>typedef unsigned __int64 QWORD;#else // OSX#include <stdint.h>#define WINAPI#define CALLBACKtypedef uint8_t BYTE;typedef uint16_t WORD;typedef uint32_t DWORD;typedef uint64_t QWORD;
#ifndef __OBJC__typedef int BOOL;
#endif#define TRUE 1#define FALSE 0#define LOBYTE(a) (BYTE)(a)
#define HIBYTE(a) (BYTE)((a)>>8)
#define LOWORD(a) (WORD)(a)#define HIWORD(a) (WORD)((a)>>16)#define MAKEWORD(a,b) (WORD)(((a)&0xff)|((b)<<8))
#define MAKELONG(a,b) (DWORD)(((a)&0xffff)|((b)<<16))#endif#ifdef __cplusplusextern "C" {#endif#define BASSVERSION 0x204 // API version#define BASSVERSIONTEXT "2.4"
#ifndef BASSDEF#define BASSDEF(f) WINAPI f#endiftypedef DWORD HMUSIC; // MOD music handletypedef DWORD HSAMPLE; // sample handletypedef DWORD HCHANNEL; // playing sample's channel handletypedef DWORD HSTREAM; // sample stream handletypedef DWORD HRECORD; // recording handletypedef DWORD HSYNC; // synchronizer handletypedef DWORD HDSP; // DSP handletypedef DWORD HFX; // DX8 effect handletypedef DWORD HPLUGIN; // Plugin handle// Error codes returned by BASS_ErrorGetCode#define BASS_OK 0 // all is OK#define BASS_ERROR_MEM 1 // memory error#define BASS_ERROR_FILEOPEN 2 // can't open the file#define BASS_ERROR_DRIVER 3 // can't find a free/valid driver#define BASS_ERROR_BUFLOST 4 // the sample buffer was lost#define BASS_ERROR_HANDLE 5 // invalid handle#define BASS_ERROR_FORMAT 6 // unsupported sample format#define BASS_ERROR_POSITION 7 // invalid position#define BASS_ERROR_INIT 8 // BASS_Init has not been successfully called#define BASS_ERROR_START 9 // BASS_Start has not been successfully called#define BASS_ERROR_ALREADY 14 // already initialized/paused/whatever#define BASS_ERROR_NOCHAN 18 // can't get a free channel#define BASS_ERROR_ILLTYPE 19 // an illegal type was specified#define BASS_ERROR_ILLPARAM 20 // an illegal parameter was specified#define BASS_ERROR_NO3D 21 // no 3D support#define BASS_ERROR_NOEAX 22 // no EAX support#define BASS_ERROR_DEVICE 23 // illegal device number#define BASS_ERROR_NOPLAY 24 // not playing#define BASS_ERROR_FREQ 25 // illegal sample rate#define BASS_ERROR_NOTFILE 27 // the stream is not a file stream#define BASS_ERROR_NOHW 29 // no hardware voices available#define BASS_ERROR_EMPTY 31 // the MOD music has no sequence data#define BASS_ERROR_NONET 32 // no internet connection could be opened#define BASS_ERROR_CREATE 33 // couldn't create the file#define BASS_ERROR_NOFX 34 // effects are not available#define BASS_ERROR_NOTAVAIL 37 // requested data is not available#define BASS_ERROR_DECODE 38 // the channel is a "decoding channel"#define BASS_ERROR_DX 39 // a sufficient DirectX version is not installed#define BASS_ERROR_TIMEOUT 40 // connection timedout#define BASS_ERROR_FILEFORM 41 // unsupported file format#define BASS_ERROR_SPEAKER 42 // unavailable speaker#define BASS_ERROR_VERSION 43 // invalid BASS version (used by add-ons)
#define BASS_ERROR_CODEC 44 // codec is not available/supported#define BASS_ERROR_ENDED 45 // the channel/file has ended
#define BASS_ERROR_UNKNOWN -1 // some other mystery problem// BASS_SetConfig options
#define BASS_CONFIG_BUFFER 0
#define BASS_CONFIG_UPDATEPERIOD 1
#define BASS_CONFIG_GVOL_SAMPLE 4
#define BASS_CONFIG_GVOL_STREAM 5
#define BASS_CONFIG_GVOL_MUSIC 6
#define BASS_CONFIG_CURVE_VOL 7
#define BASS_CONFIG_CURVE_PAN 8
#define BASS_CONFIG_FLOATDSP 9
#define BASS_CONFIG_3DALGORITHM 10
#define BASS_CONFIG_NET_TIMEOUT 11
#define BASS_CONFIG_NET_BUFFER 12
#define BASS_CONFIG_PAUSE_NOPLAY 13
#define BASS_CONFIG_NET_PREBUF 15
#define BASS_CONFIG_NET_PASSIVE 18
#define BASS_CONFIG_REC_BUFFER 19
#define BASS_CONFIG_NET_PLAYLIST 21
#define BASS_CONFIG_MUSIC_VIRTUAL 22
#define BASS_CONFIG_VERIFY 23
#define BASS_CONFIG_UPDATETHREADS 24
// BASS_SetConfigPtr options
#define BASS_CONFIG_NET_AGENT 16
#define BASS_CONFIG_NET_PROXY 17
// Initialization flags#define BASS_DEVICE_8BITS 1 // use 8 bit resolution, else 16 bit#define BASS_DEVICE_MONO 2 // use mono, else stereo#define BASS_DEVICE_3D 4 // enable 3D functionality#define BASS_DEVICE_LATENCY 256 // calculate device latency (BASS_INFO struct)#define BASS_DEVICE_CPSPEAKERS 1024 // detect speakers via Windows control panel
#define BASS_DEVICE_SPEAKERS 2048 // force enabling of speaker assignment#define BASS_DEVICE_NOSPEAKER 4096 // ignore speaker arrangement// DirectSound interfaces (for use with BASS_GetDSoundObject)#define BASS_OBJECT_DS 1 // IDirectSound#define BASS_OBJECT_DS3DL 2 // IDirectSound3DListener
// Device info structure
typedef struct {
const char *name; // description
const char *driver; // driver
DWORD flags;
} BASS_DEVICEINFO;
// BASS_DEVICEINFO flags
#define BASS_DEVICE_ENABLED 1
#define BASS_DEVICE_DEFAULT 2
#define BASS_DEVICE_INIT 4
typedef struct { DWORD flags; // device capabilities (DSCAPS_xxx flags) DWORD hwsize; // size of total device hardware memory DWORD hwfree; // size of free device hardware memory DWORD freesam; // number of free sample slots in the hardware DWORD free3d; // number of free 3D sample slots in the hardware DWORD minrate; // min sample rate supported by the hardware DWORD maxrate; // max sample rate supported by the hardware BOOL eax; // device supports EAX? (always FALSE if BASS_DEVICE_3D was not used) DWORD minbuf; // recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY) DWORD dsver; // DirectSound version DWORD latency; // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY) DWORD initflags;// BASS_Init "flags" parameter DWORD speakers; // number of speakers available DWORD freq; // current output rate (Vista/OSX only)
} BASS_INFO;// BASS_INFO flags (from DSOUND.H)#define DSCAPS_CONTINUOUSRATE 0x00000010 // supports all sample rates between min/maxrate#define DSCAPS_EMULDRIVER 0x00000020 // device does NOT have hardware DirectSound support#define DSCAPS_CERTIFIED 0x00000040 // device driver has been certified by Microsoft#define DSCAPS_SECONDARYMONO 0x00000100 // mono#define DSCAPS_SECONDARYSTEREO 0x00000200 // stereo#define DSCAPS_SECONDARY8BIT 0x00000400 // 8 bit#define DSCAPS_SECONDARY16BIT 0x00000800 // 16 bit// Recording device info structure
typedef struct { DWORD flags; // device capabilities (DSCCAPS_xxx flags) DWORD formats; // supported standard formats (WAVE_FORMAT_xxx flags) DWORD inputs; // number of inputs BOOL singlein; // TRUE = only 1 input can be set at a time DWORD freq; // current input rate (Vista/OSX only)
} BASS_RECORDINFO;// BASS_RECORDINFO flags (from DSOUND.H)#define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER // device does NOT have hardware DirectSound recording support#define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED // device driver has been certified by Microsoft// defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H)#ifndef WAVE_FORMAT_1M08#define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */#define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */#define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */#define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */#define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */#define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */#define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */#define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */#define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */#define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */#define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */#define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */#endif// Sample info structure
typedef struct { DWORD freq; // default playback rate float volume; // default volume (0-1) float pan; // default pan (-1=left, 0=middle, 1=right) DWORD flags; // BASS_SAMPLE_xxx flags DWORD length; // length (in bytes) DWORD max; // maximum simultaneous playbacks DWORD origres; // original resolution bits DWORD chans; // number of channels DWORD mingap; // minimum gap (ms) between creating channels DWORD mode3d; // BASS_3DMODE_xxx mode float mindist; // minimum distance float maxdist; // maximum distance DWORD iangle; // angle of inside projection cone DWORD oangle; // angle of outside projection cone float outvol; // delta-volume outside the projection cone DWORD vam; // voice allocation/management flags (BASS_VAM_xxx) DWORD priority; // priority (0=lowest, 0xffffffff=highest)} BASS_SAMPLE;#define BASS_SAMPLE_8BITS 1 // 8 bit#define BASS_SAMPLE_FLOAT 256 // 32-bit floating-point#define BASS_SAMPLE_MONO 2 // mono#define BASS_SAMPLE_LOOP 4 // looped#define BASS_SAMPLE_3D 8 // 3D functionality#define BASS_SAMPLE_SOFTWARE 16 // not using hardware mixing#define BASS_SAMPLE_MUTEMAX 32 // mute at max distance (3D only)#define BASS_SAMPLE_VAM 64 // DX7 voice allocation & management#define BASS_SAMPLE_FX 128 // old implementation of DX8 effects#define BASS_SAMPLE_OVER_VOL 0x10000 // override lowest volume#define BASS_SAMPLE_OVER_POS 0x20000 // override longest playing#define BASS_SAMPLE_OVER_DIST 0x30000 // override furthest from listener (3D only)#define BASS_STREAM_PRESCAN 0x20000 // enable pin-point seeking/length (MP3/MP2/MP1)#define BASS_MP3_SETPOS BASS_STREAM_PRESCAN#define BASS_STREAM_AUTOFREE 0x40000 // automatically free the stream when it stop/ends#define BASS_STREAM_RESTRATE 0x80000 // restrict the download rate of internet file streams#define BASS_STREAM_BLOCK 0x100000 // download/play internet file stream in small blocks#define BASS_STREAM_DECODE 0x200000 // don't play the stream, only decode (BASS_ChannelGetData)#define BASS_STREAM_STATUS 0x800000 // give server status info (HTTP/ICY tags) in DOWNLOADPROC#define BASS_MUSIC_FLOAT BASS_SAMPLE_FLOAT
#define BASS_MUSIC_MONO BASS_SAMPLE_MONO
#define BASS_MUSIC_LOOP BASS_SAMPLE_LOOP
#define BASS_MUSIC_3D BASS_SAMPLE_3D
#define BASS_MUSIC_FX BASS_SAMPLE_FX
#define BASS_MUSIC_AUTOFREE BASS_STREAM_AUTOFREE#define BASS_MUSIC_DECODE BASS_STREAM_DECODE#define BASS_MUSIC_PRESCAN BASS_STREAM_PRESCAN // calculate playback length#define BASS_MUSIC_CALCLEN BASS_MUSIC_PRESCAN#define BASS_MUSIC_RAMP 0x200 // normal ramping#define BASS_MUSIC_RAMPS 0x400 // sensitive ramping#define BASS_MUSIC_SURROUND 0x800 // surround sound#define BASS_MUSIC_SURROUND2 0x1000 // surround sound (mode 2)#define BASS_MUSIC_FT2MOD 0x2000 // play .MOD as FastTracker 2 does#define BASS_MUSIC_PT1MOD 0x4000 // play .MOD as ProTracker 1 does#define BASS_MUSIC_NONINTER 0x10000 // non-interpolated sample mixing
#define BASS_MUSIC_SINCINTER 0x800000 // sinc interpolated sample mixing#define BASS_MUSIC_POSRESET 0x8000 // stop all notes when moving position
#define BASS_MUSIC_POSRESETEX 0x400000 // stop all notes and reset bmp/etc when moving position
#define BASS_MUSIC_STOPBACK 0x80000 // stop the music on a backwards jump effect#define BASS_MUSIC_NOSAMPLE 0x100000 // don't load the samples// Speaker assignment flags#define BASS_SPEAKER_FRONT 0x1000000 // front speakers#define BASS_SPEAKER_REAR 0x2000000 // rear/side speakers#define BASS_SPEAKER_CENLFE 0x3000000 // center & LFE speakers (5.1)#define BASS_SPEAKER_REAR2 0x4000000 // rear center speakers (7.1)#define BASS_SPEAKER_N(n) ((n)<<24) // n'th pair of speakers (max 15)#define BASS_SPEAKER_LEFT 0x10000000 // modifier: left#define BASS_SPEAKER_RIGHT 0x20000000 // modifier: right#define BASS_SPEAKER_FRONTLEFT BASS_SPEAKER_FRONT|BASS_SPEAKER_LEFT#define BASS_SPEAKER_FRONTRIGHT BASS_SPEAKER_FRONT|BASS_SPEAKER_RIGHT#define BASS_SPEAKER_REARLEFT BASS_SPEAKER_REAR|BASS_SPEAKER_LEFT#define BASS_SPEAKER_REARRIGHT BASS_SPEAKER_REAR|BASS_SPEAKER_RIGHT#define BASS_SPEAKER_CENTER BASS_SPEAKER_CENLFE|BASS_SPEAKER_LEFT#define BASS_SPEAKER_LFE BASS_SPEAKER_CENLFE|BASS_SPEAKER_RIGHT#define BASS_SPEAKER_REAR2LEFT BASS_SPEAKER_REAR2|BASS_SPEAKER_LEFT#define BASS_SPEAKER_REAR2RIGHT BASS_SPEAKER_REAR2|BASS_SPEAKER_RIGHT#define BASS_UNICODE 0x80000000#define BASS_RECORD_PAUSE 0x8000 // start recording paused
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -