mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 13:47:58 +03:00
Disable audio virtualization on special audio sources such as music and ambient sounds
This prevents the music from being muffled by HRTF virtualization
This commit is contained in:
parent
a067c58b3d
commit
869075f47b
2 changed files with 45 additions and 4 deletions
|
@ -646,6 +646,17 @@ qboolean S_OPENAL_Init()
|
|||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
// Disable sound virtualization on special channels
|
||||
// (triggered music, ambient sounds...)
|
||||
//
|
||||
for (i = 0; i < MAX_SOUNDSYSTEM_SONGS; i++) {
|
||||
openal.chan_song[i].set_no_virtualization();
|
||||
}
|
||||
openal.chan_mp3.set_no_virtualization();
|
||||
openal.chan_trig_music.set_no_virtualization();
|
||||
openal.chan_movie.set_no_virtualization();
|
||||
|
||||
Cmd_AddCommand("playmp3", S_OPENAL_PlayMP3);
|
||||
Cmd_AddCommand("stopmp3", S_OPENAL_StopMP3);
|
||||
Cmd_AddCommand("loadsoundtrack", S_loadsoundtrack);
|
||||
|
@ -1366,16 +1377,15 @@ static void S_OPENAL_Start2DSound(
|
|||
pChannel->iBaseRate = pChannel->sample_playback_rate();
|
||||
pChannel->set_no_3d();
|
||||
fRealVolume = fRealVolume * s_fVolumeGain;
|
||||
pChannel->set_gain(fRealVolume);
|
||||
pChannel->play();
|
||||
} else {
|
||||
pChannel->stop();
|
||||
pChannel->set_no_3d();
|
||||
pChannel->set_sfx(pSfx);
|
||||
pChannel->set_gain(fRealVolume);
|
||||
pChannel->play();
|
||||
}
|
||||
|
||||
pChannel->set_gain(fRealVolume);
|
||||
pChannel->play();
|
||||
|
||||
if (s_show_sounds->integer > 0) {
|
||||
Com_DPrintf(
|
||||
"OpenAL: 2D - %d (#%i) - %s (vol %f, mindist %f, maxdist %f)\n",
|
||||
|
@ -2912,6 +2922,35 @@ void openal_channel::play()
|
|||
alDieIfError();
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
openal_channel::set_no_virtualization
|
||||
==============
|
||||
*/
|
||||
void openal_channel::set_no_virtualization()
|
||||
{
|
||||
#if AL_SOFT_direct_channels_remix
|
||||
qalSourcei(source, AL_DIRECT_CHANNELS_SOFT, AL_REMIX_UNMATCHED_SOFT);
|
||||
alDieIfError();
|
||||
#elif AL_SOFT_direct_channels
|
||||
qalSourcei(source, AL_DIRECT_CHANNELS_SOFT, AL_TRUE);
|
||||
alDieIfError();
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
openal_channel::set_virtualization
|
||||
==============
|
||||
*/
|
||||
void openal_channel::set_virtualization()
|
||||
{
|
||||
#if AL_SOFT_direct_channels_remix || AL_SOFT_direct_channels
|
||||
qalSourcei(source, AL_DIRECT_CHANNELS_SOFT, AL_FALSE);
|
||||
alDieIfError();
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
openal_channel::pause
|
||||
|
|
|
@ -95,6 +95,8 @@ public:
|
|||
|
||||
void set_no_3d();
|
||||
void set_3d();
|
||||
void set_no_virtualization();
|
||||
void set_virtualization();
|
||||
|
||||
void set_gain(float gain);
|
||||
void set_velocity(float v0, float v1, float v2);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue