_________ __ __ / _____// |_____________ _/ |______ ____ __ __ ______ \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/ / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \ /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ > \/ \/ \//_____/ \/ ______________________ ______________________ T H E W A R B E G I N S Stratagus - A free fantasy real time strategy game engine
#include "stratagus.h"
#include "sound_server.h"
#include "fluidsynth.h"
#include "iocompat.h"
#include "iolib.h"
#include "unit.h"
#include "SDL.h"
Classes | |
struct | SoundChannel |
Channels for sound effects and unit speech. More... | |
sound_server.cpp - The sound server (hardware layer and so on) | |
#define | MaxChannels 64 |
static bool | SoundInitialized |
static bool | MusicPlaying |
is sound initialized More... | |
static int | EffectsVolume = 128 |
flag true if playing music More... | |
static int | MusicVolume = 128 |
effects sound volume More... | |
static bool | MusicEnabled = true |
music volume More... | |
static bool | EffectsEnabled = true |
static SoundChannel | Channels [MaxChannels] |
static int | NextFreeChannel |
struct { | |
CSample * Sample | |
void(* FinishedCallback )() | |
Music sample. More... | |
} | MusicChannel |
struct { | |
SDL_AudioSpec Format | |
SDL_mutex * Lock | |
SDL_cond * Cond | |
SDL_Thread * Thread | |
int * MixerBuffer | |
Uint8 * Buffer | |
bool Running | |
} | Audio |
static void | ChannelFinished (int channel) |
static int | ConvertToStereo32 (const char *src, char *dest, int frequency, int chansize, int channels, int bytes) |
static void | MixMusicToStereo32 (int *buffer, int size) |
static int | MixSampleToStereo32 (CSample *sample, int index, unsigned char volume, char stereo, int *buffer, int size) |
static int | MixChannelsToStereo32 (int *buffer, int size) |
static void | ClipMixToStereo16 (const int *mix, int size, short *output) |
static void | MixIntoBuffer (void *buffer, int samples) |
static void | FillAudio (void *, Uint8 *stream, int len) |
static int | FillThread (void *) |
bool | SampleIsPlaying (CSample *sample) |
Check, if this sample is already playing. More... | |
bool | UnitSoundIsPlaying (Origin *origin) |
Check if this unit plays some sound. More... | |
static int | FillChannel (CSample *sample, unsigned char volume, char stereo, Origin *origin) |
int | SetChannelVolume (int channel, int volume) |
Load a MIDI file. More... | |
int | SetChannelStereo (int channel, int stereo) |
Set the channel stereo. More... | |
void | SetChannelFinishedCallback (int channel, void(*callback)(int channel)) |
Set the channel's callback for when a sound finishes playing. More... | |
CSample * | GetChannelSample (int channel) |
Get the sample playing on a channel. More... | |
void | StopChannel (int channel) |
Stop a channel. More... | |
void | StopAllChannels () |
Stop all channels. More... | |
static CSample * | LoadSample (const char *name, enum _play_audio_flags_ flag) |
CSample * | LoadSample (const std::string &name) |
Load a sample. More... | |
int | PlaySample (CSample *sample, Origin *origin) |
Play a sample. More... | |
int | PlaySoundFile (const std::string &name) |
Play a sound file. More... | |
void | SetEffectsVolume (int volume) |
Set effects volume. More... | |
int | GetEffectsVolume () |
Get effects volume. More... | |
void | SetEffectsEnabled (bool enabled) |
Set effects enabled. More... | |
bool | IsEffectsEnabled () |
Check if effects are enabled. More... | |
void | SetMusicFinishedCallback (void(*callback)()) |
Set the music finished callback. More... | |
int | PlayMusic (CSample *sample) |
Play a music file. More... | |
int | PlayMusic (const std::string &file) |
Play a music file. More... | |
void | StopMusic () |
Stop music playing. More... | |
void | SetMusicVolume (int volume) |
Set music volume. More... | |
int | GetMusicVolume () |
Get music volume. More... | |
void | SetMusicEnabled (bool enabled) |
Set music enabled. More... | |
bool | IsMusicEnabled () |
Check if music is enabled. More... | |
bool | IsMusicPlaying () |
Check if music is playing. More... | |
bool | SoundEnabled () |
Check if sound is enabled. More... | |
static int | InitSdlSound (int freq, int size) |
int | InitSound () |
Initialize the sound card. More... | |
void | QuitSound () |
Cleanup sound. More... | |
#define MaxChannels 64 |
|
static |
A channel is finished playing
|
static |
Clip mix to output stereo 16 signed bit.
mix | signed 32 bit input. |
size | number of samples in input. |
output | clipped 16 signed bit output buffer. |
|
static |
Convert RAW sound data to 44100 hz, Stereo, 16 bits per channel
src | Source buffer |
dest | Destination buffer |
frequency | Frequency of source |
chansize | Bitrate in bytes per channel of source |
channels | Number of channels of source |
bytes | Number of compressed bytes to read |
|
static |
Fill buffer for the sound card.
udata | the pointer stored in userdata field of SDL_AudioSpec. |
stream | pointer to buffer you want to fill with information. |
len | is length of audio buffer in bytes. |
|
static |
Put a sound request in the next free channel.
|
static |
Fill audio thread.
CSample* GetChannelSample | ( | int | channel | ) |
Get the sample playing on a channel.
Get the sample playing on a channel
int GetEffectsVolume | ( | ) |
Get effects volume.
Get effects volume
int GetMusicVolume | ( | ) |
Get music volume.
Get music volume
|
static |
Initialize sound card hardware part with SDL.
freq | Sample frequency (44100,22050,11025 hz). |
size | Sample size (8bit, 16bit) |
int InitSound | ( | ) |
Initialize the sound card.
Initialize sound card.
bool IsEffectsEnabled | ( | ) |
Check if effects are enabled.
Check if effects are enabled
bool IsMusicEnabled | ( | ) |
Check if music is enabled.
Check if music is enabled
bool IsMusicPlaying | ( | ) |
Check if music is playing.
Check if music is playing
|
static |
CSample* LoadSample | ( | const std::string & | name | ) |
Load a sample.
Load a sample
name | File name of sample (short version). |
|
static |
Mix channels to stereo 32 bit.
buffer | Buffer for mixed samples. |
size | Number of samples that fits into buffer. |
|
static |
Mix into buffer.
buffer | Buffer to be filled with samples. Buffer must be big enough. |
samples | Number of samples. |
|
static |
Mix music to stereo 32 bit.
buffer | Buffer for mixed samples. |
size | Number of samples that fits into buffer. |
|
static |
Mix sample to buffer.
The input samples are adjusted by the local volume and resampled to the output frequence.
sample | Input sample |
index | Position into input sample |
volume | Volume of the input sample |
stereo | Stereo (left/right) position of sample |
buffer | Output buffer |
size | Size of output buffer (in samples per channel) |
int PlayMusic | ( | CSample * | sample | ) |
Play a music file.
Play a music file.
sample | Music sample. |
int PlayMusic | ( | const std::string & | file | ) |
Play a music file.
Play a music file.
file | Name of music file, format is automatically detected. |
Play a sample.
Play a sound sample
sample | Sample to play |
int PlaySoundFile | ( | const std::string & | name | ) |
Play a sound file.
Play a sound file
name | Filename of a sound to play |
void QuitSound | ( | ) |
Cleanup sound.
Cleanup sound server.
bool SampleIsPlaying | ( | CSample * | sample | ) |
Check, if this sample is already playing.
Check if this sound is already playing
void SetChannelFinishedCallback | ( | int | channel, |
void(*)(int channel) | callback | ||
) |
Set the channel's callback for when a sound finishes playing.
Set the channel's callback for when a sound finishes playing
channel | Channel to set |
callback | Callback to call when the sound finishes |
int SetChannelStereo | ( | int | channel, |
int | stereo | ||
) |
Set the channel stereo.
Set the channel stereo
channel | Channel to set |
stereo | -128 to 127, out of range will not set the stereo |
int SetChannelVolume | ( | int | channel, |
int | volume | ||
) |
Load a MIDI file.
Set the channel volume
channel | Channel to set |
volume | New volume, <0 will not set the volume |
void SetEffectsEnabled | ( | bool | enabled | ) |
Set effects enabled.
Set effects enabled
void SetEffectsVolume | ( | int | volume | ) |
Set effects volume.
Set the global sound volume.
volume | the sound volume 0-255 |
void SetMusicEnabled | ( | bool | enabled | ) |
Set music enabled.
Set music enabled
void SetMusicFinishedCallback | ( | void(*)() | callback | ) |
Set the music finished callback.
Set the music finished callback
void SetMusicVolume | ( | int | volume | ) |
Set music volume.
Set the music volume.
volume | the music volume 0-255 |
bool SoundEnabled | ( | ) |
Check if sound is enabled.
Check if sound is enabled
void StopAllChannels | ( | ) |
Stop all channels.
Stop all channels
void StopChannel | ( | int | channel | ) |
Stop a channel.
Stop a channel
channel | Channel to stop |
void StopMusic | ( | ) |
Stop music playing.
Stop the current playing music.
bool UnitSoundIsPlaying | ( | Origin * | origin | ) |
Check if this unit plays some sound.
struct { ... } Audio |
Uint8* Buffer |
|
static |
SDL_cond* Cond |
|
static |
|
static |
flag true if playing music
void(* FinishedCallback)() |
Music sample.
SDL_AudioSpec Format |
SDL_mutex* Lock |
int* MixerBuffer |
struct { ... } MusicChannel |
|
static |
music volume
|
static |
is sound initialized
|
static |
effects sound volume
|
static |
bool Running |
CSample* Sample |
|
static |
SDL_Thread* Thread |