UFO: Alien Invasion
s_music.cpp File Reference
Include dependency graph for s_music.cpp:

Go to the source code of this file.

Data Structures

struct  music_t
 

Macros

#define MUSIC_MAX_ENTRIES   64
 

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

◆ MUSIC_MAX_ENTRIES

#define MUSIC_MAX_ENTRIES   64

Definition at line 61 of file s_music.cpp.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
MUSIC_MAIN 
MUSIC_GEOSCAPE 
MUSIC_BATTLESCAPE 
MUSIC_AIRCOMBAT 
MUSIC_MAX 

Definition at line 39 of file s_music.cpp.

Function Documentation

◆ M_AddToSampleBuffer()

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 data, i, s_env_t::initialized, LittleShort, M_PlayMusicStream(), MAX_RAW_SAMPLES, s_env_t::rate, s_env, musicStream_t::sampleBuf, musicStream_t::samplePos, and scale.

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

◆ M_Change_f()

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_t::initialized, M_PlayRandomByCategory(), music, MUSIC_AIRCOMBAT, MUSIC_BATTLESCAPE, MUSIC_GEOSCAPE, MUSIC_MAIN, musicArrayLength, music_t::playing, Q_streq, s_env, and type.

◆ M_CompleteMusic()

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().

◆ M_Frame()

◆ M_Init()

◆ M_MusicStreamCallback()

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

◆ M_MusicStreamUpdate()

static void M_MusicStreamUpdate ( void  )
static

Definition at line 309 of file s_music.cpp.

References music_t::interruptStream, M_StopMusicStream(), and music.

Referenced by M_Frame().

◆ M_ParseMusic()

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, name, linkedList_t::next, and Q_streq.

Referenced by CL_ParseClientData().

◆ M_Play_f()

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().

◆ M_PlayMusicStream()

static void M_PlayMusicStream ( musicStream_t userdata)
static

◆ M_PlayRandomByCategory()

static bool M_PlayRandomByCategory ( int  category)
static

◆ M_RandomTrack_f()

static void M_RandomTrack_f ( void  )
static

◆ M_Shutdown()

void M_Shutdown ( void  )

Definition at line 372 of file s_music.cpp.

References Cmd_TableRemoveList(), M_Stop(), and musicCmds.

Referenced by S_Shutdown().

◆ M_Start()

◆ M_Stop()

void M_Stop ( void  )

◆ M_StopMusicStream()

Variable Documentation

◆ music

◆ musicArrayLength

int musicArrayLength[MUSIC_MAX] = {}
static

Definition at line 63 of file s_music.cpp.

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

◆ musicArrays

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

Definition at line 62 of file s_music.cpp.

Referenced by M_ParseMusic(), and M_PlayRandomByCategory().

◆ musicCmds

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
void M_Stop(void)
Definition: s_music.cpp:114
static void M_Change_f(void)
Changes the music if it suits the current situation.
Definition: s_music.cpp:259
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.

Referenced by M_Init(), and M_Shutdown().

◆ snd_music

cvar_t* snd_music
static

Definition at line 65 of file s_music.cpp.

Referenced by M_Frame(), M_Init(), and M_PlayRandomByCategory().

◆ snd_music_play

cvar_t* snd_music_play
static

Definition at line 67 of file s_music.cpp.

Referenced by M_Frame(), and M_Init().

◆ snd_music_volume

cvar_t* snd_music_volume
static

Definition at line 66 of file s_music.cpp.

Referenced by M_Frame(), and M_Init().