mirror of
https://github.com/id-Software/DOOM.git
synced 2026-03-19 16:39:36 +01:00
The DOOM sources as originally released on December 23, 1997
This commit is contained in:
312
sndserv/soundst.h
Normal file
312
sndserv/soundst.h
Normal file
@@ -0,0 +1,312 @@
|
||||
// Emacs style mode select -*- C++ -*-
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Id: soundst.h,v 1.3 1997/01/29 22:40:45 b1 Exp $
|
||||
//
|
||||
// Copyright (C) 1993-1996 by id Software, Inc.
|
||||
//
|
||||
// This source is available for distribution and/or modification
|
||||
// only under the terms of the DOOM Source Code License as
|
||||
// published by id Software. All rights reserved.
|
||||
//
|
||||
// The source is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
|
||||
// for more details.
|
||||
//
|
||||
//
|
||||
// $Log: soundst.h,v $
|
||||
// Revision 1.3 1997/01/29 22:40:45 b1
|
||||
// Reformatting, S (sound) module files.
|
||||
//
|
||||
// Revision 1.2 1997/01/21 19:00:07 b1
|
||||
// First formatting run:
|
||||
// using Emacs cc-mode.el indentation for C++ now.
|
||||
//
|
||||
// Revision 1.1 1997/01/19 17:22:50 b1
|
||||
// Initial check in DOOM sources as of Jan. 10th, 1997
|
||||
//
|
||||
//
|
||||
// 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 available
|
||||
|
||||
enum
|
||||
{
|
||||
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 void
|
||||
S_StartSound
|
||||
( void* origin,
|
||||
int sound_id );
|
||||
|
||||
|
||||
|
||||
// Will start a sound at a given volume.
|
||||
extern void
|
||||
S_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.h
|
||||
extern void S_StartMusic(int music_id);
|
||||
|
||||
// Start music using <music_id> from sounds.h,
|
||||
// and set whether looping
|
||||
extern void
|
||||
S_ChangeMusic
|
||||
( int music_id,
|
||||
int looping );
|
||||
|
||||
|
||||
// Stops the music
|
||||
extern 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
|
||||
//
|
||||
void
|
||||
S_Init
|
||||
( int ,
|
||||
int );
|
||||
|
||||
|
||||
|
||||
//
|
||||
// SOUND IO
|
||||
//
|
||||
#define FREQ_LOW 0x40
|
||||
#define FREQ_NORM 0x80
|
||||
#define FREQ_HIGH 0xff
|
||||
|
||||
|
||||
void 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.
|
||||
void
|
||||
I_PlaySong
|
||||
( int handle,
|
||||
int looping );
|
||||
|
||||
|
||||
// stops a song over 3 seconds.
|
||||
void I_StopSong(int handle);
|
||||
|
||||
// registers a song handle to song data
|
||||
int I_RegisterSong(void *data);
|
||||
|
||||
// see above then think backwards
|
||||
void 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.
|
||||
int
|
||||
I_StartSound
|
||||
( int id,
|
||||
void* data,
|
||||
int vol,
|
||||
int sep,
|
||||
int pitch,
|
||||
int priority );
|
||||
|
||||
|
||||
// Updates the volume, separation,
|
||||
// and pitch of a sound channel.
|
||||
void
|
||||
I_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 effects
|
||||
extern sfxinfo_t S_sfx[];
|
||||
|
||||
// the complete set of music
|
||||
extern musicinfo_t S_music[];
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user