updated sound code. pitch code needs recent openal cvs.
This commit is contained in:
parent
b151298459
commit
edfaaf9b96
1 changed files with 6 additions and 19 deletions
25
src/openal.c
25
src/openal.c
|
@ -37,14 +37,11 @@ static int SoundActivated = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
openal.c TODO:
|
openal.c TODO:
|
||||||
1. AL_PITCH code does not work.
|
1. AL_PITCH seems to work, but laststand is still a bit weird.
|
||||||
OpenAL alf_tpitch is currently broken. (Doesn't work with LOOPING, etc.)
|
|
||||||
Maps like Last Stand use it for (some rather odd) ambient sounds.
|
|
||||||
2. Panning somewhat works now. Need someone to verify.
|
2. Panning somewhat works now. Need someone to verify.
|
||||||
3. There is no EAX/Reverb. But there's probably not much I can do...
|
3. There is no EAX/Reverb. But there's probably not much I can do...
|
||||||
4. Restarting sound system may or may not work.
|
4. Restarting sound system may or may not work.
|
||||||
5. Doppler (if it was originally used) isn't currently used.
|
5. Doppler (if it was originally used) isn't currently used.
|
||||||
Probably also broken in OpenAL (see 1).
|
|
||||||
6. Better Error Handling (device not avail, etc).
|
6. Better Error Handling (device not avail, etc).
|
||||||
*/
|
*/
|
||||||
int PlatStartSoundSys()
|
int PlatStartSoundSys()
|
||||||
|
@ -397,21 +394,13 @@ int PlatPlaySound(int activeIndex)
|
||||||
if (!PlatSoundHasStopped(activeIndex))
|
if (!PlatSoundHasStopped(activeIndex))
|
||||||
PlatStopSound (activeIndex);
|
PlatStopSound (activeIndex);
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* TODO: hack until pitching works right */
|
|
||||||
if (GameSounds[si].pitch < -500)
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
alSourcei (ActiveSounds[activeIndex].ds3DBufferP, AL_BUFFER,
|
alSourcei (ActiveSounds[activeIndex].ds3DBufferP, AL_BUFFER,
|
||||||
GameSounds[si].dsBufferP);
|
GameSounds[si].dsBufferP);
|
||||||
|
|
||||||
#if 1 /* PLEASE REMOVE IFDEF! */
|
|
||||||
if (ActiveSounds[activeIndex].loop)
|
if (ActiveSounds[activeIndex].loop)
|
||||||
alSourcei (ActiveSounds[activeIndex].ds3DBufferP, AL_LOOPING, AL_TRUE);
|
alSourcei (ActiveSounds[activeIndex].ds3DBufferP, AL_LOOPING, AL_TRUE);
|
||||||
else
|
else
|
||||||
alSourcei (ActiveSounds[activeIndex].ds3DBufferP, AL_LOOPING, AL_FALSE);
|
alSourcei (ActiveSounds[activeIndex].ds3DBufferP, AL_LOOPING, AL_FALSE);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (1 || ActiveSounds[activeIndex].pitch != GameSounds[si].pitch) {
|
if (1 || ActiveSounds[activeIndex].pitch != GameSounds[si].pitch) {
|
||||||
PlatChangeSoundPitch(activeIndex, ActiveSounds[activeIndex].pitch);
|
PlatChangeSoundPitch(activeIndex, ActiveSounds[activeIndex].pitch);
|
||||||
|
@ -539,17 +528,15 @@ int PlatChangeSoundPitch(int activeIndex, int pitch)
|
||||||
}
|
}
|
||||||
|
|
||||||
alSourcef(ActiveSounds[activeIndex].ds3DBufferP, AL_PITCH, frequency);
|
alSourcef(ActiveSounds[activeIndex].ds3DBufferP, AL_PITCH, frequency);
|
||||||
|
|
||||||
|
#ifdef OPENAL_DEBUG
|
||||||
fprintf(stderr, "OPENAL: freq change = %f\n", frequency);
|
fprintf(stderr, "OPENAL: freq change = %f\n", frequency);
|
||||||
#if 0
|
#endif
|
||||||
if (pitch < -500) { /* currently can't play it anyway... */
|
|
||||||
alSourceStop(ActiveSounds[activeIndex].ds3DBufferP);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
ActiveSounds[activeIndex].pitch = pitch;
|
ActiveSounds[activeIndex].pitch = pitch;
|
||||||
|
|
||||||
#ifdef OPENAL_DEBUG
|
#ifdef OPENAL_DEBUG
|
||||||
fprintf(stderr, "OPENAL: PlatChangeSoundPitch(%d, %d) = %f\n", activeIndex, pitch, (double)frequency / (double)GameSounds[ActiveSounds[activeIndex].soundIndex].dsFrequency);
|
fprintf(stderr, "OPENAL: PlatChangeSoundPitch(%d, %d) = %f\n", activeIndex, pitch, (double)frequency);
|
||||||
#endif
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue