rnd-20020315-2-src
[rocksndiamonds.git] / src / libgame / sound.h
index d50b4a22936e1aff3539f5dec703b6034c879ad5..07e73550085431f76d563cc7913d33840fe1d980 100644 (file)
@@ -1,7 +1,7 @@
 /***********************************************************
 * Artsoft Retro-Game Library                               *
 *----------------------------------------------------------*
-* (c) 1994-2000 Artsoft Entertainment                      *
+* (c) 1994-2001 Artsoft Entertainment                      *
 *               Holger Schemel                             *
 *               Detmolder Strasse 189                      *
 *               33604 Bielefeld                            *
@@ -26,6 +26,9 @@
 #include <linux/soundcard.h>
 #elif defined(PLATFORM_FREEBSD)
 #include <machine/soundcard.h>
+#elif defined(PLATFORM_NETBSD)
+#include <sys/ioctl.h>
+#include <sys/audioio.h>
 #elif defined(PLATFORM_HPUX)
 #include <sys/audio.h>
 #endif
 
 
 #if defined(PLATFORM_LINUX) || defined(PLATFORM_FREEBSD) || defined(VOXWARE)
+#define AUDIO_LINUX_IOCTL
+#endif
+
+#if defined(AUDIO_LINUX_IOCTL) || defined(PLATFORM_NETBSD)
 #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
+
+#define AUDIO_MONO_CHANNEL                     1
+#define AUDIO_STEREO_CHANNELS                  2
+
+#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
+
+#define DEFAULT_AUDIO_SAMPLE_RATE              AUDIO_SAMPLE_RATE_22050
+#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
+#else
+#define DEFAULT_AUDIO_FRAGMENT_SIZE    DEFAULT_AUDIO_FRAGMENT_SIZE_WIN32
+#endif
+
 #if !defined(PLATFORM_MSDOS)
-#define MAX_SOUNDS_PLAYING     16
+#define MAX_SOUNDS_PLAYING                     16
 #else
-#define MAX_SOUNDS_PLAYING     8
+#define MAX_SOUNDS_PLAYING                     8
 #endif
 
 #if !defined(PLATFORM_HPUX)
 #endif
 #endif
 
+#if 0
 struct SoundHeader_SUN
 {
   unsigned long magic;
@@ -116,6 +156,7 @@ struct SoundHeader_8SVX
   unsigned long chunk_size;
   char magic_8SVX[4];
 };
+#endif
 
 struct SampleInfo
 { 
@@ -129,6 +170,7 @@ struct SampleInfo
 
 #if defined(TARGET_SDL)
   Mix_Chunk *mix_chunk;
+  Mix_Music *mix_music;
 #endif
 };
 
@@ -153,21 +195,27 @@ struct SoundControl
 };
 
 /* general sound functions */
-void UnixOpenAudio(struct AudioSystemInfo *);
-void UnixCloseAudio(struct AudioSystemInfo *);
+void UnixOpenAudio(void);
+void UnixCloseAudio(void);
 
 /* sound server functions */ 
+void InitPlaylist(void);
+void StartSoundserver(void);
 void SoundServer(void);
 
 /* sound client functions */
-void AllocSoundArray(int);
-boolean LoadSound(int, char *);
+boolean LoadSound(char *);
+boolean LoadMod(char *);
+int LoadMusic(void);
+void PlayMusic(int);
 void PlaySound(int);
 void PlaySoundStereo(int, int);
 void PlaySoundLoop(int);
 void PlaySoundExt(int, int, int, boolean);
+void FadeMusic(void);
 void FadeSound(int);
 void FadeSounds(void);
+void StopMusic(void);
 void StopSound(int);
 void StopSounds(void);
 void StopSoundExt(int, int);