UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
s_music.cpp File Reference

Go to the source code of this file.

Data Structures

struct  music_s
 

Macros

#define MUSIC_MAX_ENTRIES   64
 

Typedefs

typedef struct music_s music_t
 

Enumerations

enum  {
  MUSIC_MAIN, MUSIC_GEOSCAPE, MUSIC_BATTLESCAPE, MUSIC_AIRCOMBAT,
  MUSIC_MAX
}
 

Functions

void M_ParseMusic (const char *name, const char **text)
 Parses music definitions for different situations. More...
 
void M_Stop (void)
 
static void M_Start (const char *file)
 
static void M_Play_f (void)
 Plays the music file given via commandline parameter. More...
 
static void M_RandomTrack_f (void)
 Sets the music cvar to a random track. More...
 
static bool M_PlayRandomByCategory (int category)
 
static void M_Change_f (void)
 Changes the music if it suits the current situation. More...
 
static int M_CompleteMusic (const char *partial, const char **match)
 
static void M_MusicStreamUpdate (void)
 
void M_Frame (void)
 
void M_Init (void)
 
void M_Shutdown (void)
 
static void M_MusicStreamCallback (musicStream_t *userdata, byte *stream, int length)
 
static void M_PlayMusicStream (musicStream_t *userdata)
 
void M_AddToSampleBuffer (musicStream_t *userdata, int rate, int samples, const byte *data)
 Add stereo samples with a 16 byte width to the stream buffer. More...
 
void M_StopMusicStream (musicStream_t *userdata)
 

Variables

static char * musicArrays [MUSIC_MAX][MUSIC_MAX_ENTRIES] = {{}, {}}
 
static int musicArrayLength [MUSIC_MAX] = {}
 
static music_t music = {{}, {}, nullptr, 0, nullptr, false, false, true}
 
static cvar_tsnd_music
 
static cvar_tsnd_music_volume
 
static cvar_tsnd_music_play
 
static const cmdList_t musicCmds []
 

Macro Definition Documentation

#define MUSIC_MAX_ENTRIES   64

Definition at line 61 of file s_music.cpp.

Referenced by M_ParseMusic().

Typedef Documentation

typedef struct music_s music_t

Enumeration Type Documentation

anonymous enum
Enumerator
MUSIC_MAIN 
MUSIC_GEOSCAPE 
MUSIC_BATTLESCAPE 
MUSIC_AIRCOMBAT 
MUSIC_MAX 

Definition at line 39 of file s_music.cpp.

Function Documentation

void M_AddToSampleBuffer ( musicStream_t userdata,
int  rate,
int  samples,
const byte data 
)

Add stereo samples with a 16 byte width to the stream buffer.

Parameters
[in]samplesThe amount of stereo samples that should be added to the stream buffer (this is usually 1/4 of the size of the data buffer, one sample should have 4 bytes, 2 for each channel)
[in]dataThe stereo sample buffer
[in,out]userdataThe music stream
[in]rateThe sample rate

Definition at line 431 of file s_music.cpp.

References i, s_env_s::initialized, LittleShort, M_PlayMusicStream(), MAX_RAW_SAMPLES, s_env_s::rate, s_env, musicStream_s::sampleBuf, musicStream_s::samplePos, and scale.

Referenced by CIN_OGM_LoadAudioFrame(), CIN_ROQ_DecodeSoundMono(), and CIN_ROQ_DecodeSoundStereo().

static void M_Change_f ( void  )
static

Changes the music if it suits the current situation.

Todo:
Make the music a scriptable list

Definition at line 259 of file s_music.cpp.

References CL_OnBattlescape(), Cmd_Argc(), Cmd_Argv(), Com_DPrintf(), Com_Printf(), DEBUG_SOUND, s_env_s::initialized, M_PlayRandomByCategory(), MUSIC_AIRCOMBAT, MUSIC_BATTLESCAPE, MUSIC_GEOSCAPE, MUSIC_MAIN, musicArrayLength, music_s::playing, Q_streq, s_env, and type.

static int M_CompleteMusic ( const char *  partial,
const char **  match 
)
static

Definition at line 296 of file s_music.cpp.

References Cmd_GenericCompleteFunction(), Com_Printf(), and FS_NextFileFromFileList().

Referenced by M_Init().

static void M_MusicStreamCallback ( musicStream_t userdata,
byte stream,
int  length 
)
static
static void M_MusicStreamUpdate ( void  )
static

Definition at line 309 of file s_music.cpp.

References music_s::interruptStream, and M_StopMusicStream().

Referenced by M_Frame().

void M_ParseMusic ( const char *  name,
const char **  text 
)

Parses music definitions for different situations.

Note
We have lists for geoscape, battlescape, main and aircombat

Definition at line 73 of file s_music.cpp.

References cl_genericPool, Com_Error(), Com_ParseList(), Com_Printf(), ERR_DROP, i, LIST_Delete(), Mem_PoolStrDup, MUSIC_AIRCOMBAT, MUSIC_BATTLESCAPE, MUSIC_GEOSCAPE, MUSIC_MAIN, MUSIC_MAX_ENTRIES, musicArrayLength, musicArrays, linkedList_t::next, and Q_streq.

Referenced by CL_ParseClientData().

static void M_Play_f ( void  )
static

Plays the music file given via commandline parameter.

Definition at line 206 of file s_music.cpp.

References Cmd_Argc(), Cmd_Argv(), Cvar_GetString(), Cvar_Set(), and M_Start().

static void M_PlayMusicStream ( musicStream_t userdata)
static
static bool M_PlayRandomByCategory ( int  category)
static
static void M_RandomTrack_f ( void  )
static
void M_Shutdown ( void  )

Definition at line 372 of file s_music.cpp.

References Cmd_TableRemoveList(), and M_Stop().

Referenced by S_Shutdown().

void M_Stop ( void  )
See also
M_Start

Definition at line 114 of file s_music.cpp.

References music_s::buffer, music_s::data, FS_FreeFile(), and music_s::playingStream.

Referenced by M_Frame(), M_PlayMusicStream(), M_Shutdown(), and M_Start().

void M_StopMusicStream ( musicStream_t userdata)

Variable Documentation

music_t music = {{}, {}, nullptr, 0, nullptr, false, false, true}
static

Definition at line 64 of file s_music.cpp.

int musicArrayLength[MUSIC_MAX] = {}
static

Definition at line 63 of file s_music.cpp.

Referenced by M_Change_f(), M_ParseMusic(), and M_PlayRandomByCategory().

char* musicArrays[MUSIC_MAX][MUSIC_MAX_ENTRIES] = {{}, {}}
static

Definition at line 62 of file s_music.cpp.

Referenced by M_ParseMusic(), and M_PlayRandomByCategory().

const cmdList_t musicCmds[]
static
Initial value:
= {
{"music_play", M_Play_f, "Plays a music track."},
{"music_change", M_Change_f, "Changes the music theme (valid values:battlescape/geoscape/main/aircombat)."},
{"music_stop", M_Stop, "Stops currently playing music track."},
{"music_randomtrack", M_RandomTrack_f, "Plays a random music track."},
{nullptr, nullptr, nullptr}
}
static void M_RandomTrack_f(void)
Sets the music cvar to a random track.
Definition: s_music.cpp:217
static void M_Change_f(void)
Changes the music if it suits the current situation.
Definition: s_music.cpp:259
void M_Stop(void)
Definition: s_music.cpp:114
static void M_Play_f(void)
Plays the music file given via commandline parameter.
Definition: s_music.cpp:206

Definition at line 351 of file s_music.cpp.

cvar_t* snd_music
static

Definition at line 65 of file s_music.cpp.

cvar_t* snd_music_play
static

Definition at line 67 of file s_music.cpp.

cvar_t* snd_music_volume
static

Definition at line 66 of file s_music.cpp.