X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsound.h;h=5d27f20a9f6f6547cedf369903cb8b921941689c;hp=5350c14338022cfceeeacc46b4df8924b0b62afb;hb=2f1f47c267eb7b16d95eb25cfb53eb5effedea9a;hpb=e4467a70cdf808b36d10965bdf6316f0cbc35214 diff --git a/src/libgame/sound.h b/src/libgame/sound.h index 5350c143..5d27f20a 100644 --- a/src/libgame/sound.h +++ b/src/libgame/sound.h @@ -14,27 +14,8 @@ #ifndef SOUND_H #define SOUND_H -#include - #include "platform.h" -#if defined(PLATFORM_LINUX) -#include -#endif - -#if defined(PLATFORM_LINUX) -#include -#elif defined(PLATFORM_FREEBSD) -#include -#elif defined(PLATFORM_NETBSD) -#include -#include -#elif defined(PLATFORM_HPUX) -#include -#endif - -#include "system.h" - #if defined(PLATFORM_UNIX) && !defined(TARGET_SDL) #define AUDIO_UNIX_NATIVE @@ -48,50 +29,34 @@ #define AUDIO_STREAMING_DSP #endif -#define AUDIO_SAMPLE_RATE_8000 8000 -#define AUDIO_SAMPLE_RATE_22050 22050 - -#define AUDIO_FRAGMENT_SIZE_512 512 -#define AUDIO_FRAGMENT_SIZE_1024 1024 -#define AUDIO_FRAGMENT_SIZE_2048 2048 -#define AUDIO_FRAGMENT_SIZE_4096 4096 +/* values for platform specific sound initialization */ +#define AUDIO_SAMPLE_RATE_8000 8000 +#define AUDIO_SAMPLE_RATE_22050 22050 -#define AUDIO_NUM_CHANNELS_MONO 1 -#define AUDIO_NUM_CHANNELS_STEREO 2 +#define AUDIO_FRAGMENT_SIZE_512 512 +#define AUDIO_FRAGMENT_SIZE_1024 1024 +#define AUDIO_FRAGMENT_SIZE_2048 2048 +#define AUDIO_FRAGMENT_SIZE_4096 4096 -#define AUDIO_FORMAT_UNKNOWN (0) -#define AUDIO_FORMAT_U8 (1 << 0) -#define AUDIO_FORMAT_S16 (1 << 1) -#define AUDIO_FORMAT_LE (1 << 2) -#define AUDIO_FORMAT_BE (1 << 3) +#define AUDIO_NUM_CHANNELS_MONO 1 +#define AUDIO_NUM_CHANNELS_STEREO 2 -/* expiration time (in milliseconds) for sound loops */ -#define SOUND_LOOP_EXPIRATION_TIME 200 +#define AUDIO_FORMAT_UNKNOWN (0) +#define AUDIO_FORMAT_U8 (1 << 0) +#define AUDIO_FORMAT_S16 (1 << 1) +#define AUDIO_FORMAT_LE (1 << 2) +#define AUDIO_FORMAT_BE (1 << 3) -#if defined(TARGET_SDL) -/* one second fading interval == 1000 ticks (milliseconds) */ -#define SOUND_FADING_INTERVAL 1000 -#define SOUND_MAX_VOLUME SDL_MIX_MAXVOLUME -#endif - -#if defined(AUDIO_STREAMING_DSP) -#define SOUND_FADING_VOLUME_STEP (PSND_MAX_VOLUME / 40) -#define SOUND_FADING_VOLUME_THRESHOLD (SOUND_FADING_VOLUME_STEP * 2) -#endif - -#if defined(AUDIO_STREAMING_DSP) -#define DEFAULT_AUDIO_SAMPLE_RATE AUDIO_SAMPLE_RATE_22050 +#if defined(AUDIO_UNIX_NATIVE) && !defined(AUDIO_STREAMING_DSP) +#define DEFAULT_AUDIO_SAMPLE_RATE AUDIO_SAMPLE_RATE_8000 #else -#define DEFAULT_AUDIO_SAMPLE_RATE AUDIO_SAMPLE_RATE_8000 +#define DEFAULT_AUDIO_SAMPLE_RATE AUDIO_SAMPLE_RATE_22050 #endif -#define DEFAULT_AUDIO_FRAGMENT_SIZE_UNIX AUDIO_FRAGMENT_SIZE_512 -#define DEFAULT_AUDIO_FRAGMENT_SIZE_WIN32 AUDIO_FRAGMENT_SIZE_2048 - -#if defined(PLATFORM_UNIX) -#define DEFAULT_AUDIO_FRAGMENT_SIZE DEFAULT_AUDIO_FRAGMENT_SIZE_UNIX +#if defined(PLATFORM_WIN32) +#define DEFAULT_AUDIO_FRAGMENT_SIZE AUDIO_FRAGMENT_SIZE_2048 #else -#define DEFAULT_AUDIO_FRAGMENT_SIZE DEFAULT_AUDIO_FRAGMENT_SIZE_WIN32 +#define DEFAULT_AUDIO_FRAGMENT_SIZE AUDIO_FRAGMENT_SIZE_512 #endif #if defined(TARGET_SDL) @@ -103,138 +68,8 @@ #define MUSIC_CHANNEL 0 #define FIRST_SOUND_CHANNEL 1 -#if !defined(PLATFORM_HPUX) -#define SND_BLOCKSIZE 4096 -#else -#define SND_BLOCKSIZE 32768 -#endif - -/* some values for PlaySound(), StopSound() and friends */ -#if !defined(PLATFORM_MSDOS) - -#define PSND_SILENCE 0 -#define PSND_MAX_VOLUME_BITS 15 -#define PSND_MIN_VOLUME 0 -#define PSND_MAX_VOLUME (1 << PSND_MAX_VOLUME_BITS) -#define PSND_MIDDLE 0 -#define PSND_MAX_STEREO_BITS 7 -#define PSND_MAX_STEREO (1 << PSND_MAX_STEREO_BITS) -#define PSND_MAX_LEFT (-PSND_MAX_STEREO) -#define PSND_MAX_RIGHT (+PSND_MAX_STEREO) -#define PSND_MAX_LEFT2RIGHT_BITS (PSND_MAX_STEREO_BITS+1) -#define PSND_MAX_LEFT2RIGHT (1 << PSND_MAX_LEFT2RIGHT_BITS) - -#else /* PLATFORM_MSDOS */ - -#define PSND_SILENCE 0 -#define PSND_MIN_VOLUME 0 -#define PSND_MAX_VOLUME 255 -#define PSND_MAX_LEFT 0 -#define PSND_MAX_RIGHT 255 -#define PSND_MIDDLE 128 - -#endif - -#if 0 -#define PSND_NO_LOOP 0 -#define PSND_LOOP 1 -#define PSND_MUSIC 2 - -#define SSND_FADE_SOUND (1 << 0) -#define SSND_FADE_MUSIC (1 << 1) -#define SSND_FADE_ALL (1 << 2) -#define SSND_FADING (SSND_FADE_SOUND | \ - SSND_FADE_MUSIC | \ - SSND_FADE_ALL) -#define SSND_STOP_SOUND (1 << 3) -#define SSND_STOP_MUSIC (1 << 4) -#define SSND_STOP_ALL (1 << 5) -#define SSND_STOPPING (SSND_STOP_SOUND | \ - SSND_STOP_MUSIC | \ - SSND_STOP_ALL) -#define SSND_MUSIC (SSND_FADE_MUSIC | SSND_STOP_MUSIC) -#define SSND_ALL (SSND_FADE_ALL | SSND_STOP_ALL) - -#define SND_RELOAD_SOUNDS 1 -#define SND_RELOAD_MUSIC 2 -#endif - -#define SND_TYPE_NONE 0 -#define SND_TYPE_WAV 1 - -#define MUS_TYPE_NONE 0 -#define MUS_TYPE_WAV 1 -#define MUS_TYPE_MOD 2 - -/* settings for sound path, sound device, etc. */ -#ifndef SND_PATH -#define SND_PATH "./sounds" -#endif - -#define DEVICENAME_DSP "/dev/dsp" -#define DEVICENAME_AUDIO "/dev/audio" -#define DEVICENAME_AUDIOCTL "/dev/audioCtl" - -#if 0 -#if defined(AUDIO_STREAMING_DSP) -#define AUDIO_DEVICE DEVICENAME_DSP -#else -#define AUDIO_DEVICE DEVICENAME_AUDIO -#endif -#endif - -/* value for undefined sound effect filename */ -#define SND_FILE_UNDEFINED "NONE" - - -#if 0 -struct SoundHeader_SUN -{ - unsigned long magic; - unsigned long hdr_size; - unsigned long data_size; - unsigned long encoding; - unsigned long sample_rate; - unsigned long channels; -}; - -struct SoundHeader_8SVX -{ - char magic_FORM[4]; - unsigned long chunk_size; - char magic_8SVX[4]; -}; -#endif - -struct AudioFormatInfo -{ - boolean stereo; /* availability of stereo sound */ - int format; /* size and endianess of sample data */ - int sample_rate; /* sample frequency */ - int fragment_size; /* audio device fragment size in bytes */ -}; - -struct SoundEffectInfo -{ - char *text; - char *default_filename; - char *filename; -}; - -struct SampleInfo -{ - char *source_filename; - int num_references; - - int type; - int format; - long data_len; - void *data_ptr; -}; - -typedef struct SampleInfo SoundInfo; -typedef struct SampleInfo MusicInfo; +/* values for PlaySound(), StopSound() and friends */ #define SND_CTRL_NONE (0) #define SND_CTRL_MUSIC (1 << 0) #define SND_CTRL_LOOP (1 << 1) @@ -264,30 +99,43 @@ typedef struct SampleInfo MusicInfo; SND_CTRL_RELOAD_MUSIC)) #define ALL_SOUNDS(x) ((x).state & SND_CTRL_ALL_SOUNDS) -struct SoundControl -{ - boolean active; - int nr; - int volume; - int stereo_position; +#if !defined(TARGET_ALLEGRO) - int state; +#define PSND_SILENCE 0 +#define PSND_MAX_VOLUME_BITS 15 +#define PSND_MIN_VOLUME 0 +#define PSND_MAX_VOLUME (1 << PSND_MAX_VOLUME_BITS) +#define PSND_MIDDLE 0 +#define PSND_MAX_STEREO_BITS 7 +#define PSND_MAX_STEREO (1 << PSND_MAX_STEREO_BITS) +#define PSND_MAX_LEFT (-PSND_MAX_STEREO) +#define PSND_MAX_RIGHT (+PSND_MAX_STEREO) +#define PSND_MAX_LEFT2RIGHT_BITS (PSND_MAX_STEREO_BITS+1) +#define PSND_MAX_LEFT2RIGHT (1 << PSND_MAX_LEFT2RIGHT_BITS) - unsigned long playing_starttime; - unsigned long playing_pos; +#else /* TARGET_ALLEGRO */ - int type; - int format; - long data_len; - void *data_ptr; +#define PSND_SILENCE 0 +#define PSND_MIN_VOLUME 0 +#define PSND_MAX_VOLUME 255 +#define PSND_MAX_LEFT 0 +#define PSND_MAX_RIGHT 255 +#define PSND_MIDDLE 128 -#if defined(PLATFORM_MSDOS) - int voice; #endif + +/* value for undefined sound effect filename */ +#define SND_FILE_UNDEFINED "NONE" + + +struct SoundEffectInfo +{ + char *text; + char *default_filename; + char *filename; }; -typedef struct SoundControl SoundControl; /* general sound functions */ void UnixOpenAudio(void);