diff --git a/src/i_sound.h b/src/i_sound.h index a88038b39e1b513aadc2039a7be43f6b29253e52..4e6a253333aed70eaafdaaa817188ff781706c78 100644 --- a/src/i_sound.h +++ b/src/i_sound.h @@ -247,6 +247,8 @@ UINT32 I_GetMusicPosition(void); boolean I_SetSongTrack(INT32 track); +void I_SetInternalMusicVolume(UINT8 volume); + /** \brief The I_StartDigSong function \param musicname music lump name diff --git a/src/s_sound.c b/src/s_sound.c index 3b0c87463af25c27e48e85697409ba9fc7ab6935..2d4de70b1c5b114d0bf9461a0edb0b41759e1273 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -1476,6 +1476,11 @@ void S_StopMusic(void) } } +void S_SetInternalMusicVolume(INT32 volume) +{ + I_SetInternalMusicVolume(min(max(volume, 0), 100)); +} + void S_SetDigMusicVolume(INT32 volume) { if (volume < 0 || volume > 31) diff --git a/src/s_sound.h b/src/s_sound.h index 096a03f1f4bd5d69a2a50fe2400a501f32c78c77..19b616ab2487800b6eb90c1e11ff915a5d885b8f 100644 --- a/src/s_sound.h +++ b/src/s_sound.h @@ -180,6 +180,7 @@ void S_UpdateSounds(void); FUNCMATH fixed_t S_CalculateSoundDistance(fixed_t px1, fixed_t py1, fixed_t pz1, fixed_t px2, fixed_t py2, fixed_t pz2); +void S_SetInternalMusicVolume(INT32 volume); void S_SetDigMusicVolume(INT32 volume); void S_SetMIDIMusicVolume(INT32 volume); void S_SetSfxVolume(INT32 volume); diff --git a/src/sdl/mixer_sound.c b/src/sdl/mixer_sound.c index 3b2857a9ee765c4969a2f2389f25678386e91435..5de1831ce8dba13bdc262a8f7613b73bfcf5e99c 100644 --- a/src/sdl/mixer_sound.c +++ b/src/sdl/mixer_sound.c @@ -1160,6 +1160,14 @@ boolean I_SetSongTrack(int track) return false; } +void I_SetInternalMusicVolume(UINT8 volume) +{ + internal_volume = volume; + if (!music) + return; + Mix_VolumeMusic(get_real_volume(midimode ? midi_volume : music_volume)); +} + void I_StopFadingMusic() { if (fading_id)