2006-03-20 17:12:09 +00:00
|
|
|
/*
|
|
|
|
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
|
|
|
|
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
|
|
|
|
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
|
|
|
|
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
|
|
|
|
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
|
|
|
|
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
|
|
|
|
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
|
|
|
|
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
|
|
|
|
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
|
|
|
|
COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
*
|
|
|
|
* Include file for sound hardware.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef _DIGI_H
|
|
|
|
#define _DIGI_H
|
|
|
|
|
|
|
|
#include "pstypes.h"
|
|
|
|
#include "vecmat.h"
|
|
|
|
|
|
|
|
typedef struct digi_sound {
|
2008-04-06 20:23:28 +00:00
|
|
|
int bits;
|
|
|
|
int freq;
|
2006-03-20 17:12:09 +00:00
|
|
|
int length;
|
|
|
|
ubyte * data;
|
|
|
|
} digi_sound;
|
|
|
|
|
|
|
|
extern int digi_get_settings();
|
|
|
|
extern int digi_init();
|
|
|
|
extern void digi_reset();
|
|
|
|
extern void digi_close();
|
|
|
|
|
|
|
|
// Volume is max at F1_0.
|
|
|
|
extern void digi_play_sample( int sndnum, fix max_volume );
|
|
|
|
extern void digi_play_sample_once( int sndnum, fix max_volume );
|
|
|
|
extern int digi_link_sound_to_object( int soundnum, short objnum, int forever, fix max_volume );
|
|
|
|
extern int digi_link_sound_to_pos( int soundnum, short segnum, short sidenum, vms_vector * pos, int forever, fix max_volume );
|
|
|
|
// Same as above, but you pass the max distance sound can be heard. The old way uses f1_0*256 for max_distance.
|
|
|
|
extern int digi_link_sound_to_object2( int soundnum, short objnum, int forever, fix max_volume, fix max_distance );
|
|
|
|
extern int digi_link_sound_to_pos2( int soundnum, short segnum, short sidenum, vms_vector * pos, int forever, fix max_volume, fix max_distance );
|
|
|
|
|
2013-03-03 01:03:33 +00:00
|
|
|
#if defined(DXX_BUILD_DESCENT_II)
|
2006-03-20 17:12:09 +00:00
|
|
|
extern int digi_link_sound_to_object3( int org_soundnum, short objnum, int forever, fix max_volume, fix max_distance, int loop_start, int loop_end );
|
2013-03-03 01:03:33 +00:00
|
|
|
#endif
|
2006-03-20 17:12:09 +00:00
|
|
|
|
|
|
|
extern void digi_play_sample_3d( int soundno, int angle, int volume, int no_dups ); // Volume from 0-0x7fff
|
|
|
|
|
|
|
|
extern void digi_init_sounds();
|
|
|
|
extern void digi_sync_sounds();
|
|
|
|
extern void digi_kill_sound_linked_to_segment( int segnum, int sidenum, int soundnum );
|
|
|
|
extern void digi_kill_sound_linked_to_object( int objnum );
|
|
|
|
|
|
|
|
extern void digi_set_digi_volume( int dvolume );
|
2010-06-14 08:13:16 +00:00
|
|
|
extern void digi_set_volume( int dvolume );
|
2006-03-20 17:12:09 +00:00
|
|
|
|
|
|
|
extern int digi_is_sound_playing(int soundno);
|
|
|
|
|
|
|
|
extern void digi_pause_digi_sounds();
|
|
|
|
extern void digi_resume_digi_sounds();
|
|
|
|
|
|
|
|
extern void digi_set_max_channels(int n);
|
|
|
|
extern int digi_get_max_channels();
|
|
|
|
|
|
|
|
extern int digi_xlat_sound(int soundno);
|
|
|
|
|
|
|
|
extern void digi_stop_sound( int channel );
|
|
|
|
|
|
|
|
// Volume 0-F1_0
|
|
|
|
extern int digi_start_sound(short soundnum, fix volume, int pan, int looping, int loop_start, int loop_end, int soundobj);
|
|
|
|
|
|
|
|
// Stops all sounds that are playing
|
|
|
|
void digi_stop_all_channels();
|
|
|
|
|
2010-06-14 08:13:16 +00:00
|
|
|
void digi_stop_digi_sounds();
|
|
|
|
|
2006-03-20 17:12:09 +00:00
|
|
|
extern void digi_end_sound( int channel );
|
|
|
|
extern void digi_set_channel_pan( int channel, int pan );
|
|
|
|
extern void digi_set_channel_volume( int channel, int volume );
|
|
|
|
extern int digi_is_channel_playing(int channel);
|
|
|
|
extern void digi_debug();
|
|
|
|
|
|
|
|
extern void digi_play_sample_looping( int soundno, fix max_volume,int loop_start, int loop_end );
|
|
|
|
extern void digi_change_looping_volume( fix volume );
|
|
|
|
extern void digi_stop_looping_sound();
|
|
|
|
|
|
|
|
// Plays a queued voice sound.
|
|
|
|
extern void digi_start_sound_queued( short soundnum, fix volume );
|
|
|
|
|
2007-09-18 13:37:39 +00:00
|
|
|
// Following declarations are for the runtime switching system
|
|
|
|
|
|
|
|
#define SAMPLE_RATE_11K 11025
|
|
|
|
#define SAMPLE_RATE_22K 22050
|
|
|
|
#define SAMPLE_RATE_44K 44100
|
|
|
|
|
|
|
|
#define SDLMIXER_SYSTEM 1
|
|
|
|
#define SDLAUDIO_SYSTEM 2
|
|
|
|
|
2010-06-14 08:13:16 +00:00
|
|
|
#define MUSIC_TYPE_NONE 0
|
|
|
|
#define MUSIC_TYPE_BUILTIN 1
|
|
|
|
#define MUSIC_TYPE_REDBOOK 2
|
|
|
|
#define MUSIC_TYPE_CUSTOM 3
|
|
|
|
|
|
|
|
// play-order definitions for custom music
|
|
|
|
#define MUSIC_CM_PLAYORDER_CONT 0
|
2010-08-17 14:59:57 +00:00
|
|
|
#define MUSIC_CM_PLAYORDER_LEVEL 1
|
2011-01-20 11:17:30 +00:00
|
|
|
#define MUSIC_CM_PLAYORDER_RAND 2
|
2009-03-03 12:55:27 +00:00
|
|
|
|
2007-09-21 19:06:05 +00:00
|
|
|
#define SOUND_MAX_VOLUME F1_0 / 2
|
2007-09-18 13:37:39 +00:00
|
|
|
|
|
|
|
extern int digi_volume;
|
|
|
|
extern int digi_sample_rate;
|
|
|
|
void digi_select_system(int);
|
2010-06-14 08:13:16 +00:00
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
// Windows native-MIDI stuff.
|
|
|
|
void digi_win32_set_midi_volume( int mvolume );
|
2013-06-08 22:24:17 +00:00
|
|
|
int digi_win32_play_midi_song(const char * filename, int loop );
|
2010-11-28 15:49:40 +00:00
|
|
|
void digi_win32_pause_midi_song();
|
|
|
|
void digi_win32_resume_midi_song();
|
2011-07-15 08:43:03 +00:00
|
|
|
void digi_win32_stop_midi_song();
|
2010-06-14 08:13:16 +00:00
|
|
|
#endif
|
2007-09-18 13:37:39 +00:00
|
|
|
|
2006-03-20 17:12:09 +00:00
|
|
|
#endif
|