void S_Init(void) { Com_DPrintf("\nSound Initialization\n"); if (COM_CheckParm("-nosound") || COM_CheckParm("-safe")) return; Cvar_Register(&bgmvolume); Cvar_Register(&s_volume); Cvar_Register(&s_initsound); Cvar_Register(&s_nosound); Cvar_Register(&s_precache); Cvar_Register(&s_khz); Cvar_Register(&s_ambientlevel); Cvar_Register(&s_ambientfade); Cvar_Register(&s_show); Cvar_Register(&s_mixahead); // compatibility with old configs Cmd_AddLegacyCommand ("volume", "s_volume"); Cmd_AddLegacyCommand ("nosound", "s_nosound"); Cmd_AddLegacyCommand ("precache", "s_precache"); Cmd_AddLegacyCommand ("ambient_level", "s_ambientlevel"); Cmd_AddLegacyCommand ("ambient_fade", "s_ambientfade"); Cmd_AddLegacyCommand ("snd_show", "s_show"); Cmd_AddLegacyCommand ("_snd_mixahead", "s_mixahead"); Cmd_AddCommand("play", S_Play_f); Cmd_AddCommand("playvol", S_PlayVol_f); Cmd_AddCommand("stopsound", S_StopAllSounds_f); Cmd_AddCommand("soundlist", S_SoundList_f); Cmd_AddCommand("soundinfo", S_SoundInfo_f); snd_initialized = true; num_sfx = 0; SND_InitScaletable (); total_channels = MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS; // no statics memset(channels, 0, MAX_CHANNELS * sizeof(channel_t)); }
/* ================ S_Init ================ */ void S_Init (void) { Con_Printf("\nSound Initialization\n"); Cvar_RegisterVariable(&precache); if (COM_CheckParm("-nosound")) return; if (COM_CheckParm("-simsound")) fakedma = true; Cmd_AddCommand("play", S_Play); Cmd_AddCommand("playvol", S_PlayVol); Cmd_AddCommand("stopsound", S_StopAllSoundsC); Cmd_AddCommand("soundlist", S_SoundList); Cmd_AddCommand("soundinfo", S_SoundInfo_f); Cvar_RegisterVariable(&nosound); Cvar_RegisterVariable(&volume); Cvar_RegisterVariable(&loadas8bit); Cvar_RegisterVariable(&bgmvolume); Cvar_RegisterVariable(&bgmtype); Cvar_RegisterVariable(&bgmbuffer); Cvar_RegisterVariable(&ambient_level); Cvar_RegisterVariable(&ambient_fade); Cvar_RegisterVariable(&snd_noextraupdate); Cvar_RegisterVariable(&snd_show); Cvar_RegisterVariable(&_snd_mixahead); if (host_parms.memsize < 0x800000) { Cvar_Set ("loadas8bit", "1"); Con_Printf ("loading all sounds as 8bit\n"); } snd_initialized = true; S_Startup (); SND_InitScaletable (); known_sfx = Hunk_AllocName (MAX_SFX*sizeof(sfx_t), "sfx_t"); num_sfx = 0; // create a piece of DMA memory if (fakedma) { shm = (void *) Hunk_AllocName(sizeof(*shm), "shm"); shm->splitbuffer = 0; shm->samplebits = 16; shm->speed = 22050; shm->channels = 2; shm->samples = 32768; shm->samplepos = 0; shm->soundalive = true; shm->gamealive = true; shm->submission_chunk = 1; shm->buffer = Hunk_AllocName(1<<16, "shmbuf"); } Con_Printf ("Sound sampling rate: %i\n", shm->speed); // provides a tick sound until washed clean // if (shm->buffer) // shm->buffer[4] = shm->buffer[5] = 0x7f; // force a pop for debugging ambient_sfx[AMBIENT_WATER] = S_PrecacheSound ("ambience/water1.wav"); ambient_sfx[AMBIENT_SKY] = S_PrecacheSound ("ambience/wind2.wav"); S_StopAllSounds (true); }
void S_Init (void) { if (snd_initialized) { //whoops Com_Printf_State (PRINT_INFO, "Sound is already initialized\n"); return; } Com_DPrintf("\nSound Initialization\n"); Cvar_SetCurrentGroup(CVAR_GROUP_SOUND); Cvar_Register(&bgmvolume); Cvar_Register(&s_volume); Cvar_Register(&s_nosound); Cvar_Register(&s_precache); Cvar_Register(&s_loadas8bit); Cvar_Register(&s_khz); Cvar_Register(&s_ambientlevel); Cvar_Register(&s_ambientfade); Cvar_Register(&s_noextraupdate); Cvar_Register(&s_show); Cvar_Register(&s_mixahead); Cvar_Register(&s_swapstereo); #if (defined(__linux__) || defined(__FreeBSD__)) Cvar_Register(&s_stereo); Cvar_Register(&s_device); Cvar_Register(&s_bits); #endif #ifdef __linux__ Cvar_Register(&s_noalsa); #endif Cvar_ResetCurrentGroup(); // compatibility with old configs Cmd_AddLegacyCommand ("nosound", "s_nosound"); Cmd_AddLegacyCommand ("precache", "s_precache"); Cmd_AddLegacyCommand ("loadas8bit", "s_loadas8bit"); Cmd_AddLegacyCommand ("ambient_level", "s_ambientlevel"); Cmd_AddLegacyCommand ("ambient_fade", "s_ambientfade"); Cmd_AddLegacyCommand ("snd_noextraupdate", "s_noextraupdate"); Cmd_AddLegacyCommand ("snd_show", "s_show"); Cmd_AddLegacyCommand ("_snd_mixahead", "s_mixahead"); if (COM_CheckParm("-nosound")) { Cmd_AddLegacyCommand ("play", ""); // just suppress warnings return; } Cmd_AddCommand("snd_restart", S_Restart_f); Cmd_AddLegacyCommand("s_restart", "snd_restart"); // exclusively for Disconnect Cmd_AddCommand("play", S_Play_f); Cmd_AddCommand("playvol", S_PlayVol_f); Cmd_AddCommand("stopsound", S_StopAllSounds_f); Cmd_AddCommand("soundlist", S_SoundList_f); Cmd_AddCommand("soundinfo", S_SoundInfo_f); if (!snd_initialized && host_memsize < 0x800000) { Cvar_Set (&s_loadas8bit, "1"); Com_Printf ("loading all sounds as 8bit\n"); } snd_initialized = true; SND_InitScaletable (); if (!S_Startup ()) { snd_initialized = false; return; } known_sfx = (sfx_t *) Hunk_AllocName (MAX_SFX * sizeof(sfx_t), "sfx_t"); num_sfx = 0; ambient_sfx[AMBIENT_WATER] = S_PrecacheSound ("ambience/water1.wav"); ambient_sfx[AMBIENT_SKY] = S_PrecacheSound ("ambience/wind2.wav"); S_StopAllSounds (true); }
/* ================ S_Init ================ */ void S_Init (void) { int i; if (snd_initialized) { Con_Printf("Sound is already initialized\n"); return; } Cvar_RegisterVariable(&nosound); Cvar_RegisterVariable(&sfxvolume); Cvar_RegisterVariable(&precache); Cvar_RegisterVariable(&loadas8bit); Cvar_RegisterVariable(&bgmvolume); Cvar_RegisterVariable(&ambient_level); Cvar_RegisterVariable(&ambient_fade); Cvar_RegisterVariable(&snd_noextraupdate); Cvar_RegisterVariable(&snd_show); Cvar_RegisterVariable(&_snd_mixahead); Cvar_RegisterVariable(&sndspeed); Cvar_RegisterVariable(&snd_mixspeed); Cvar_RegisterVariable(&snd_filterquality); if (safemode || COM_CheckParm("-nosound")) return; Con_Printf("\nSound Initialization\n"); Cmd_AddCommand("play", S_Play); Cmd_AddCommand("playvol", S_PlayVol); Cmd_AddCommand("stopsound", S_StopAllSoundsC); Cmd_AddCommand("soundlist", S_SoundList); Cmd_AddCommand("soundinfo", S_SoundInfo_f); i = COM_CheckParm("-sndspeed"); if (i && i < com_argc-1) { Cvar_SetQuick (&sndspeed, com_argv[i+1]); } i = COM_CheckParm("-mixspeed"); if (i && i < com_argc-1) { Cvar_SetQuick (&snd_mixspeed, com_argv[i+1]); } if (host_parms->memsize < 0x800000) { Cvar_SetQuick (&loadas8bit, "1"); Con_Printf ("loading all sounds as 8bit\n"); } Cvar_SetCallback(&sfxvolume, SND_Callback_sfxvolume); Cvar_SetCallback(&snd_filterquality, &SND_Callback_snd_filterquality); SND_InitScaletable (); known_sfx = (sfx_t *) Hunk_AllocName (MAX_SFX*sizeof(sfx_t), "sfx_t"); num_sfx = 0; snd_initialized = true; S_Startup (); if (sound_started == 0) return; // provides a tick sound until washed clean // if (shm->buffer) // shm->buffer[4] = shm->buffer[5] = 0x7f; // force a pop for debugging ambient_sfx[AMBIENT_WATER] = S_PrecacheSound ("ambience/water1.wav"); ambient_sfx[AMBIENT_SKY] = S_PrecacheSound ("ambience/wind2.wav"); S_CodecInit (); S_StopAllSounds (true); }
static void SND_Callback_sfxvolume (cvar_t *var) { SND_InitScaletable (); }