📄 soundst.h
字号:
// Emacs style mode select -*- C++ -*- //-----------------------------------------------------------------------------//// $Id: soundst.h,v 1.2 2000/02/27 00:42:12 hurdler Exp $//// Copyright (C) 1993-1996 by id Software, Inc.// Portions Copyright (C) 1998-2000 by DooM Legacy Team.//// 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.////// $Log: soundst.h,v $// Revision 1.2 2000/02/27 00:42:12 hurdler// fix CR+LF problem//// Revision 1.1.1.1 2000/02/22 20:32:33 hurdler// Initial import into CVS (v1.29 pr3)////// DESCRIPTION:// Sound (utility) related. Hang on.// See gensounds.h and gensounds.c for what soundst.h is made of.////-----------------------------------------------------------------------------#ifndef __SOUNDSTH__#define __SOUNDSTH__#define S_MAX_VOLUME 127// when to clip out sounds// Doesn't fit the large outdoor areas.#define S_CLIPPING_DIST (1200*0x10000)// when sounds should be max'd out#define S_CLOSE_DIST (200*0x10000)#define S_ATTENUATOR ((S_CLIPPING_DIST-S_CLOSE_DIST)>>FRACBITS)#define NORM_PITCH 128#define NORM_PRIORITY 64#define NORM_VOLUME snd_MaxVolume#define S_PITCH_PERTURB 1#define NORM_SEP 128#define S_STEREO_SWING (96*0x10000)// % attenuation from front to back#define S_IFRACVOL 30#define NA 0#define S_NUMCHANNELS 2//// MusicInfo struct.//typedef struct{ // up to 6-character name char* name; // lump number of music int lumpnum; // music data void* data; // music handle once registered int handle; } musicinfo_t;//// SoundFX struct.//typedef struct sfxinfo_struct sfxinfo_t;struct sfxinfo_struct{ // up to 6-character name char* name; // Sfx singularity (only one at a time) int singularity; // Sfx priority int priority; // referenced sound if a link sfxinfo_t* link; // pitch if a link int pitch; // volume if a link int volume; // sound data void* data; // this is checked every second to see if sound // can be thrown out (if 0, then decrement, if -1, // then throw out, if > 0, then it's in use) int usefulness; // lump number of sfx int lumpnum; };typedef struct{ // sound information (if null, channel avail.) sfxinfo_t* sfxinfo; // origin of sound void* origin; // handle of the sound being played int handle; } channel_t;enum{ Music, Sfx, SfxLink};enum{ PC=1, Adlib=2, SB=4, Midi=8}; // cards availableenum{ sfxThrowOut=-1, sfxNotUsed=0};//// Initialize the sound code at start of level//void S_Start(void);//// Start sound for thing at <origin>// using <sound_id> from sounds.h//extern voidS_StartSound( void* origin, int sound_id );// Will start a sound at a given volume.extern voidS_StartSoundAtVolume( void* origin, int sound_id, int volume );// Stop sound for thing at <origin>extern void S_StopSound(void* origin);// Start music using <music_id> from sounds.hextern void S_StartMusic(int music_id);// Start music using <music_id> from sounds.h,// and set whether loopingextern voidS_ChangeMusic( int music_id, int looping );// Stops the musicextern void S_StopMusic(void);void S_PauseSound(void);void S_ResumeSound(void);//// Updates music & sounds//extern void S_UpdateSounds(void* listener);void S_SetMusicVolume(int volume);void S_SetSfxVolume(int volume);//// Initializes sound stuff, including volume//voidS_Init( int , int );//// SOUND IO//#define FREQ_LOW 0x40#define FREQ_NORM 0x80#define FREQ_HIGH 0xffvoid I_SetMusicVolume(int volume);void I_SetSfxVolume(int volume);//// MUSIC I/O//void I_PauseSong(int handle);void I_ResumeSong(int handle);//// Called by anything that wishes to start music.// plays a song, and when the song is done,// starts playing it again in an endless loop.// Horrible thing to do, considering.voidI_PlaySong( int handle, int looping );// stops a song over 3 seconds.void I_StopSong(int handle);// registers a song handle to song dataint I_RegisterSong(void *data);// see above then think backwardsvoid I_UnRegisterSong(int handle);// is the song playing?int I_QrySongPlaying(int handle);//// SFX I/O//void I_SetChannels(int channels);int I_GetSfxLumpNum (sfxinfo_t*);// Starts a sound in a particular sound channel.intI_StartSound( int id, void* data, int vol, int sep, int pitch, int priority );// Updates the volume, separation,// and pitch of a sound channel.voidI_UpdateSoundParams( int handle, int vol, int sep, int pitch );// Stops a sound channel.void I_StopSound(int handle);// Called by S_*()'s to see if a channel is still playing.// Returns 0 if no longer playing, 1 if playing.int I_SoundIsPlaying(int handle);// the complete set of sound effectsextern sfxinfo_t S_sfx[];// the complete set of musicextern musicinfo_t S_music[];#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -