00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __SOUND_SERVER_H__
00032 #define __SOUND_SERVER_H__
00033
00035
00036
00037
00038
00039
00040 #define MaxVolume 255
00041 #define SOUND_BUFFER_SIZE 65536
00042
00046 class CSample {
00047 public:
00048 CSample() : Channels(0), SampleSize(0), Frequency(0), BitsPerSample(0),
00049 Buffer(NULL), Pos(0), Len(0) {}
00050 virtual ~CSample() {}
00051
00052 virtual int Read(void *buf, int len) = 0;
00053
00054 unsigned char Channels;
00055 unsigned char SampleSize;
00056 unsigned int Frequency;
00057 unsigned short BitsPerSample;
00058
00059 unsigned char *Buffer;
00060 int Pos;
00061 int Len;
00062 };
00063
00067 enum _play_audio_flags_ {
00068 PlayAudioStream = 1,
00069 PlayAudioPreLoad = 2,
00070 PlayAudioLoadInMemory = 4,
00071 PlayAudioLoadOnDemand = 8
00072 };
00073
00074
00075
00076
00077
00078 extern CSample *LoadWav(const char *name, int flags);
00079 extern CSample *LoadVorbis(const char *name, int flags);
00080 extern CSample *LoadMikMod(const char *name, int flags);
00081
00083 extern int SetChannelVolume(int channel, int volume);
00085 extern int SetChannelStereo(int channel, int stereo);
00087 extern void SetChannelFinishedCallback(int channel, void (*callback)(int channel));
00089 extern CSample *GetChannelSample(int channel);
00091 extern void StopChannel(int channel);
00093 extern void StopAllChannels();
00094
00096 extern CSample *LoadSample(const std::string &name);
00098 extern int PlaySample(CSample *sample);
00100 extern int PlaySoundFile(const std::string &name);
00101
00103 extern void SetEffectsVolume(int volume);
00105 extern int GetEffectsVolume();
00107 extern void SetEffectsEnabled(bool enabled);
00109 extern bool IsEffectsEnabled();
00110
00112 void SetMusicFinishedCallback(void (*callback)());
00114 extern int PlayMusic(CSample *sample);
00116 extern int PlayMusic(const std::string &file);
00118 extern void StopMusic();
00120 extern void SetMusicVolume(int volume);
00122 extern int GetMusicVolume();
00124 extern void SetMusicEnabled(bool enabled);
00126 extern bool IsMusicEnabled();
00128 extern bool IsMusicPlaying();
00129
00131 extern bool SoundEnabled();
00133 extern int InitSound();
00135 extern void QuitSound();
00136
00138
00139 #endif // !__SOUND_SERVER_H__