📄 bass.h
字号:
// DX7 voice allocation & management flags#define BASS_VAM_HARDWARE 1#define BASS_VAM_SOFTWARE 2#define BASS_VAM_TERM_TIME 4#define BASS_VAM_TERM_DIST 8#define BASS_VAM_TERM_PRIO 16// Channel info structure
typedef struct { DWORD freq; // default playback rate DWORD chans; // channels DWORD flags; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags DWORD ctype; // type of channel DWORD origres; // original resolution HPLUGIN plugin; // plugin
HSAMPLE sample; // sample
const char *filename; // filename} BASS_CHANNELINFO;// BASS_CHANNELINFO types#define BASS_CTYPE_SAMPLE 1#define BASS_CTYPE_RECORD 2#define BASS_CTYPE_STREAM 0x10000#define BASS_CTYPE_STREAM_OGG 0x10002#define BASS_CTYPE_STREAM_MP1 0x10003#define BASS_CTYPE_STREAM_MP2 0x10004#define BASS_CTYPE_STREAM_MP3 0x10005#define BASS_CTYPE_STREAM_AIFF 0x10006#define BASS_CTYPE_STREAM_WAV 0x40000 // WAVE flag, LOWORD=codec#define BASS_CTYPE_STREAM_WAV_PCM 0x50001#define BASS_CTYPE_STREAM_WAV_FLOAT 0x50003#define BASS_CTYPE_MUSIC_MOD 0x20000#define BASS_CTYPE_MUSIC_MTM 0x20001#define BASS_CTYPE_MUSIC_S3M 0x20002#define BASS_CTYPE_MUSIC_XM 0x20003#define BASS_CTYPE_MUSIC_IT 0x20004#define BASS_CTYPE_MUSIC_MO3 0x00100 // MO3 flagtypedef struct { DWORD ctype; // channel type const char *name; // format description const char *exts; // file extension filter (*.ext1;*.ext2;etc...)} BASS_PLUGINFORM;typedef struct { DWORD version; // version (same form as BASS_GetVersion) DWORD formatc; // number of formats const BASS_PLUGINFORM *formats; // the array of formats} BASS_PLUGININFO;// 3D vector (for 3D positions/velocities/orientations)typedef struct BASS_3DVECTOR {#ifdef __cplusplus BASS_3DVECTOR() {}; BASS_3DVECTOR(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {};#endif float x; // +=right, -=left float y; // +=up, -=down float z; // +=front, -=behind} BASS_3DVECTOR;// 3D channel modes#define BASS_3DMODE_NORMAL 0 // normal 3D processing#define BASS_3DMODE_RELATIVE 1 // position is relative to the listener#define BASS_3DMODE_OFF 2 // no 3D processing// software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM)
#define BASS_3DALG_DEFAULT 0
#define BASS_3DALG_OFF 1
#define BASS_3DALG_FULL 2
#define BASS_3DALG_LIGHT 3
#ifdef _WIN32// EAX environments, use with BASS_SetEAXParametersenum{ EAX_ENVIRONMENT_GENERIC, EAX_ENVIRONMENT_PADDEDCELL, EAX_ENVIRONMENT_ROOM, EAX_ENVIRONMENT_BATHROOM, EAX_ENVIRONMENT_LIVINGROOM, EAX_ENVIRONMENT_STONEROOM, EAX_ENVIRONMENT_AUDITORIUM, EAX_ENVIRONMENT_CONCERTHALL, EAX_ENVIRONMENT_CAVE, EAX_ENVIRONMENT_ARENA, EAX_ENVIRONMENT_HANGAR, EAX_ENVIRONMENT_CARPETEDHALLWAY, EAX_ENVIRONMENT_HALLWAY, EAX_ENVIRONMENT_STONECORRIDOR, EAX_ENVIRONMENT_ALLEY, EAX_ENVIRONMENT_FOREST, EAX_ENVIRONMENT_CITY, EAX_ENVIRONMENT_MOUNTAINS, EAX_ENVIRONMENT_QUARRY, EAX_ENVIRONMENT_PLAIN, EAX_ENVIRONMENT_PARKINGLOT, EAX_ENVIRONMENT_SEWERPIPE, EAX_ENVIRONMENT_UNDERWATER, EAX_ENVIRONMENT_DRUGGED, EAX_ENVIRONMENT_DIZZY, EAX_ENVIRONMENT_PSYCHOTIC, EAX_ENVIRONMENT_COUNT // total number of environments};// EAX presets, usage: BASS_SetEAXParameters(EAX_PRESET_xxx)#define EAX_PRESET_GENERIC EAX_ENVIRONMENT_GENERIC,0.5F,1.493F,0.5F#define EAX_PRESET_PADDEDCELL EAX_ENVIRONMENT_PADDEDCELL,0.25F,0.1F,0.0F#define EAX_PRESET_ROOM EAX_ENVIRONMENT_ROOM,0.417F,0.4F,0.666F#define EAX_PRESET_BATHROOM EAX_ENVIRONMENT_BATHROOM,0.653F,1.499F,0.166F#define EAX_PRESET_LIVINGROOM EAX_ENVIRONMENT_LIVINGROOM,0.208F,0.478F,0.0F#define EAX_PRESET_STONEROOM EAX_ENVIRONMENT_STONEROOM,0.5F,2.309F,0.888F#define EAX_PRESET_AUDITORIUM EAX_ENVIRONMENT_AUDITORIUM,0.403F,4.279F,0.5F#define EAX_PRESET_CONCERTHALL EAX_ENVIRONMENT_CONCERTHALL,0.5F,3.961F,0.5F#define EAX_PRESET_CAVE EAX_ENVIRONMENT_CAVE,0.5F,2.886F,1.304F#define EAX_PRESET_ARENA EAX_ENVIRONMENT_ARENA,0.361F,7.284F,0.332F#define EAX_PRESET_HANGAR EAX_ENVIRONMENT_HANGAR,0.5F,10.0F,0.3F#define EAX_PRESET_CARPETEDHALLWAY EAX_ENVIRONMENT_CARPETEDHALLWAY,0.153F,0.259F,2.0F#define EAX_PRESET_HALLWAY EAX_ENVIRONMENT_HALLWAY,0.361F,1.493F,0.0F#define EAX_PRESET_STONECORRIDOR EAX_ENVIRONMENT_STONECORRIDOR,0.444F,2.697F,0.638F#define EAX_PRESET_ALLEY EAX_ENVIRONMENT_ALLEY,0.25F,1.752F,0.776F#define EAX_PRESET_FOREST EAX_ENVIRONMENT_FOREST,0.111F,3.145F,0.472F#define EAX_PRESET_CITY EAX_ENVIRONMENT_CITY,0.111F,2.767F,0.224F#define EAX_PRESET_MOUNTAINS EAX_ENVIRONMENT_MOUNTAINS,0.194F,7.841F,0.472F#define EAX_PRESET_QUARRY EAX_ENVIRONMENT_QUARRY,1.0F,1.499F,0.5F#define EAX_PRESET_PLAIN EAX_ENVIRONMENT_PLAIN,0.097F,2.767F,0.224F#define EAX_PRESET_PARKINGLOT EAX_ENVIRONMENT_PARKINGLOT,0.208F,1.652F,1.5F#define EAX_PRESET_SEWERPIPE EAX_ENVIRONMENT_SEWERPIPE,0.652F,2.886F,0.25F#define EAX_PRESET_UNDERWATER EAX_ENVIRONMENT_UNDERWATER,1.0F,1.499F,0.0F#define EAX_PRESET_DRUGGED EAX_ENVIRONMENT_DRUGGED,0.875F,8.392F,1.388F#define EAX_PRESET_DIZZY EAX_ENVIRONMENT_DIZZY,0.139F,17.234F,0.666F#define EAX_PRESET_PSYCHOTIC EAX_ENVIRONMENT_PSYCHOTIC,0.486F,7.563F,0.806F#endiftypedef DWORD (CALLBACK STREAMPROC)(HSTREAM handle, void *buffer, DWORD length, void *user);/* User stream callback function. NOTE: A stream function should obviously be as quickas possible, other streams (and MOD musics) can't be mixed until it's finished.handle : The stream that needs writingbuffer : Buffer to write the samples inlength : Number of bytes to writeuser : The 'user' parameter value given when calling BASS_StreamCreateRETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end the stream. */#define BASS_STREAMPROC_END 0x80000000 // end of user stream flag
// special STREAMPROCs
#define STREAMPROC_DUMMY (STREAMPROC*)0 // "dummy" stream
#define STREAMPROC_PUSH (STREAMPROC*)-1 // push stream
// BASS_StreamCreateFileUser file systems
#define STREAMFILE_NOBUFFER 0
#define STREAMFILE_BUFFER 1
#define STREAMFILE_BUFFERPUSH 2
// User file stream callback functions
typedef void (CALLBACK FILECLOSEPROC)(void *user);
typedef QWORD (CALLBACK FILELENPROC)(void *user);
typedef DWORD (CALLBACK FILEREADPROC)(void *buffer, DWORD length, void *user);
typedef BOOL (CALLBACK FILESEEKPROC)(QWORD offset, void *user);
typedef struct {
FILECLOSEPROC *close;
FILELENPROC *length;
FILEREADPROC *read;
FILESEEKPROC *seek;
} BASS_FILEPROCS;
// BASS_StreamPutFileData options
#define BASS_FILEDATA_END 0 // end & close the file
// BASS_StreamGetFilePosition modes#define BASS_FILEPOS_CURRENT 0#define BASS_FILEPOS_DECODE BASS_FILEPOS_CURRENT#define BASS_FILEPOS_DOWNLOAD 1#define BASS_FILEPOS_END 2#define BASS_FILEPOS_START 3#define BASS_FILEPOS_CONNECTED 4
#define BASS_FILEPOS_BUFFER 5
#define BASS_FILEPOS_SOCKET 6
typedef void (CALLBACK DOWNLOADPROC)(const void *buffer, DWORD length, void *user);/* Internet stream download callback function.buffer : Buffer containing the downloaded data... NULL=end of downloadlength : Number of bytes in the bufferuser : The 'user' parameter value given when calling BASS_StreamCreateURL */// BASS_ChannelSetSync types#define BASS_SYNC_POS 0#define BASS_SYNC_END 2#define BASS_SYNC_META 4#define BASS_SYNC_SLIDE 5#define BASS_SYNC_STALL 6#define BASS_SYNC_DOWNLOAD 7#define BASS_SYNC_FREE 8#define BASS_SYNC_SETPOS 11
#define BASS_SYNC_MUSICPOS 10#define BASS_SYNC_MUSICINST 1#define BASS_SYNC_MUSICFX 3#define BASS_SYNC_OGG_CHANGE 12
#define BASS_SYNC_MIXTIME 0x40000000 // FLAG: sync at mixtime, else at playtime#define BASS_SYNC_ONETIME 0x80000000 // FLAG: sync only once, else continuouslytypedef void (CALLBACK SYNCPROC)(HSYNC handle, DWORD channel, DWORD data, void *user);/* Sync callback function. NOTE: a sync callback function should be veryquick as other syncs can't be processed until it has finished. If the syncis a "mixtime" sync, then other streams and MOD musics can't be mixed untilit's finished either.handle : The sync that has occuredchannel: Channel that the sync occured indata : Additional data associated with the sync's occuranceuser : The 'user' parameter given when calling BASS_ChannelSetSync */typedef void (CALLBACK DSPPROC)(HDSP handle, DWORD channel, void *buffer, DWORD length, void *user);/* DSP callback function. NOTE: A DSP function should obviously be as quick aspossible... other DSP functions, streams and MOD musics can not be processeduntil it's finished.handle : The DSP handlechannel: Channel that the DSP is being applied tobuffer : Buffer to apply the DSP tolength : Number of bytes in the bufferuser : The 'user' parameter given when calling BASS_ChannelSetDSP */typedef BOOL (CALLBACK RECORDPROC)(HRECORD handle, const void *buffer, DWORD length, void *user);/* Recording callback function.handle : The recording handlebuffer : Buffer containing the recorded sample datalength : Number of bytesuser : The 'user' parameter value given when calling BASS_RecordStartRETURN : TRUE = continue recording, FALSE = stop */// BASS_ChannelIsActive return values
#define BASS_ACTIVE_STOPPED 0
#define BASS_ACTIVE_PLAYING 1
#define BASS_ACTIVE_STALLED 2
#define BASS_ACTIVE_PAUSED 3
// Channel attributes
#define BASS_ATTRIB_FREQ 1
#define BASS_ATTRIB_VOL 2
#define BASS_ATTRIB_PAN 3
#define BASS_ATTRIB_EAXMIX 4
#define BASS_ATTRIB_MUSIC_AMPLIFY 0x100
#define BASS_ATTRIB_MUSIC_PANSEP 0x101
#define BASS_ATTRIB_MUSIC_PSCALER 0x102
#define BASS_ATTRIB_MUSIC_BPM 0x103
#define BASS_ATTRIB_MUSIC_SPEED 0x104
#define BASS_ATTRIB_MUSIC_VOL_GLOBAL 0x105
#define BASS_ATTRIB_MUSIC_VOL_CHAN 0x200 // + channel #
#define BASS_ATTRIB_MUSIC_VOL_INST 0x300 // + instrument #
// BASS_ChannelGetData flags#define BASS_DATA_AVAILABLE 0 // query how much data is buffered#define BASS_DATA_FLOAT 0x40000000 // flag: return floating-point sample data#define BASS_DATA_FFT256 0x80000000 // 256 sample FFT
#define BASS_DATA_FFT512 0x80000001 // 512 FFT#define BASS_DATA_FFT1024 0x80000002 // 1024 FFT#define BASS_DATA_FFT2048 0x80000003 // 2048 FFT#define BASS_DATA_FFT4096 0x80000004 // 4096 FFT#define BASS_DATA_FFT8192 0x80000005 // 8192 FFT
#define BASS_DATA_FFT_INDIVIDUAL 0x10 // FFT flag: FFT for each channel, else all combined#define BASS_DATA_FFT_NOWINDOW 0x20 // FFT flag: no Hanning window// BASS_ChannelGetTags types : what's returned#define BASS_TAG_ID3 0 // ID3v1 tags : TAG_ID3 structure#define BASS_TAG_ID3V2 1 // ID3v2 tags : variable length block#define BASS_TAG_OGG 2 // OGG comments : series of null-terminated UTF-8 strings#define BASS_TAG_HTTP 3 // HTTP headers : series of null-terminated ANSI strings#define BASS_TAG_ICY 4 // ICY headers : series of null-terminated ANSI strings#define BASS_TAG_META 5 // ICY metadata : ANSI string#define BASS_TAG_VENDOR 9 // OGG encoder : UTF-8 string
#define BASS_TAG_LYRICS3 10 // Lyric3v2 tag : ASCII string
#define BASS_TAG_RIFF_INFO 0x100 // RIFF "INFO" tags : series of null-terminated ANSI strings#define BASS_TAG_RIFF_BEXT 0x101 // RIFF/BWF Broadcast Audio Extension tags : TAG_BEXT structure
#define BASS_TAG_MUSIC_NAME 0x10000 // MOD music name : ANSI string#define BASS_TAG_MUSIC_MESSAGE 0x10001 // MOD message : ANSI string#define BASS_TAG_MUSIC_INST 0x10100 // + instrument #, MOD instrument name : ANSI string#define BASS_TAG_MUSIC_SAMPLE 0x10300 // + sample #, MOD sample name : ANSI string
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -