Commit graph

137 commits

Author SHA1 Message Date
Yamagi Burmeister
fa4eacc976 At OpenAL shutdown don't do not stop only the stream chan but all chans.
I'm not quite sure if this really makes a difference. But it's the only
idea I have regarding several "Quake II hangs at shutdown when OpenAL is
run with Pulseaudio backend" bugs.
2016-08-04 09:21:33 +02:00
Daniel Gibson
4cbe5f25e0 Fix volume of looped sounds in OpenAL backend, fixes #111
AL_PlayChannel() is only called by AL_AddLoopSounds() and
S_IssuePlaysound() - but only the latter set a volume there.
Because of that, loopsounds weren't hearable anymore after the last
commit which removed adding s_volume to all volumes in AL_PlayChannel().
This is fixed by setting the volume for looped sounds in
AL_AddLoopSounds() as well.
Looped sounds don't seem to have a customizable volume and are always
played at full volume (the volume is only changed by distance, but
OpenAL does that automatically).
2015-11-02 01:48:52 +01:00
Daniel Gibson
4e13e3ee69 Uncouple s_volume from raw samples (Ogg playback and cinematics) 2015-11-01 18:02:22 +01:00
Daniel Gibson
1977570b17 Make sure not all OpenAL sources are relative, fix #100
OpenAL sources are reused in Quake2, so if a source has once been used
for a sound coming from the view entity, it'd stay relative, unless
told not to.

So now I set source's AL_SOURCE_RELATIVE to AL_TRUE or AL_FALSE in
AL_PlayChannel(), depending on the source coming from the player or not.

Thanks a lot to Tommi Teistelä for identifying the problem and pushing
me in the right direction!
2015-10-19 18:20:47 +02:00
Sean Dwyer
159a3b8607 Add a cvar to switch behavior when misc track 0 is requested
OGG_OpenName(): add ogg_ignoretrack0 cvar to set whether we respect
default playback behaviour when track 0 is requested to be played via
standard cd audio playback.

Submitted by: ewe2
2015-10-19 18:18:44 +02:00
Yamagi Burmeister
432fdc271b Send view entity sounds from (0,0,0) and mark them AL_SOURCE_RELATIVE.
This was suggested by kcat at https://github.com/kcat/openal-soft/issues/19
This may fix #88.
2015-09-24 19:02:35 +02:00
Yamagi Burmeister
177b424ba1 Remove Mac OS X support
No, this is not a rage quit but the result of a long discussion. There
are several reasons for us to drop OS X support:

- OS X support was always more or less hacky. For example is was never
  really integrated into the build system and some features like the
  OpenAL sound backend never worked well.
- The OS X support never grew into the new world based upon SDL2.
- It was broken since at least Lion which was released 4 years ago.
- None of the developers has a Mac or plans to buy one. Supporting
  a software for a platform not used by the developers is more or
  less impossible.
- And despite several appeals no one from the OS X community ever
  stept up and send patches.

Removed are:
- Makefile support
- The OpenAL quirks
- The Cocoa bindings
- The framworks

Not removed is:
- Savegame support
- Memory management support
- Platform detection
- OpenGL and SDL includes

So, if someone steps up and does a modern, fully integrated port based
upon SDL2 we're happy to merge it back. The requirements are:
- It must be a clean port, without any hacks
- Full build system integration must be provided
- The port must be maintained even after it was merged. At every release
  binaries must be build, API / ABI changes with new OS X versions must
  be tracked.
2015-03-20 17:33:46 +01:00
bibendovsky
c1a3526a67 Add underwater sfx for SDL backend 2014-06-16 08:45:39 +03:00
bibendovsky
e4bb8b25a3 Fix compiling under Visual C++ when OggVorbis playback enabled 2014-06-13 14:07:56 +03:00
bibendovsky
a53f321bed Use proper API to get pointers to OpenAL EFX extensions 2014-06-10 10:23:43 +03:00
svdijk
4d201b3ff0 OpenAL: fix lagging audio when leaving the menu. 2014-04-12 14:27:10 +02:00
svdijk
e07294b6b1 replace most strncpy calls (several of them wrong) by Q_strlcpy calls 2013-05-11 14:44:36 +02:00
svdijk
3c62c2be5a ogg/cda: move defaults from yq2.cfg to engine 2013-05-08 20:06:53 +02:00
Alejandro Ricoveri
1c84805c1f AL_InitUnderwaterFilter wasn't being compiled conditionallyi 2013-04-27 17:21:15 -04:30
Yamagi Burmeister
277c2b9567 Use the same default volume on all platforms again
Testing showed that after the last round of sound changes FreeBSD is the
only platform with distorted sound when s_volume is set too high. I'm
pretty sure that it's caused by a bug in the OSS backend of openal-soft.
I'll need to analyze this more and maybe write a problem report. Since
FreeBSD users should be experienced enough to lower the volume when
there are problem (there's a FAQ in our README!), use the same default
volume on all platforms.
2013-04-21 12:02:38 +02:00
Yamagi Burmeister
3ac88e1bda Rename snd_wav.c to wave.c to get in line with other files 2013-04-21 11:32:20 +02:00
Yamagi Burmeister
84020e4d8e Rename snd_vorbis.c to ogg.c. This name is more appropriate 2013-04-21 11:30:07 +02:00
Yamagi Burmeister
fb7b97d868 Minor cleanups to snd_vorbis.c
- Remove any forward declarations
- Tightens checks for SDL
2013-04-21 11:27:31 +02:00
Yamagi Burmeister
78ce1e491c Rename snd_al.c to openal.c 2013-04-21 11:19:01 +02:00
Yamagi Burmeister
1d6aaca68e Whitespace cleanup 2013-04-21 11:14:00 +02:00
Yamagi Burmeister
a1f5ccfcac Update header comment 2013-04-21 11:13:26 +02:00
Yamagi Burmeister
92be8c75e3 Rework volume handling 2013-04-21 11:06:18 +02:00
Yamagi Burmeister
b9e71913ae Restructure and refactor snd_al.c 2013-04-21 10:40:00 +02:00
Yamagi Burmeister
e5505f90d7 Rename snd_dma.c to sound.c. yq2 never used DMA. 2013-04-20 15:09:57 +02:00
Yamagi Burmeister
957e4d4735 Whitespace cleanup 2013-04-20 15:06:47 +02:00
Yamagi Burmeister
242a62384c Update header comment 2013-04-20 15:06:15 +02:00
Yamagi Burmeister
b9a62ff34b Cleanup snd_dma.c 2013-04-20 15:01:31 +02:00
Yamagi Burmeister
720db15de9 Cleanup local.h of the sound system 2013-04-20 14:20:58 +02:00
Yamagi Burmeister
ef7c85bbcd yq2 never had a dma based soundengine. Let's call it just "sound". 2013-04-20 13:40:54 +02:00
Yamagi Burmeister
b45876ffdd Refactor the SDL part of S_Update() into the backend 2013-04-20 13:32:58 +02:00
Yamagi Burmeister
d9643e8b76 Refactor the SDL part of S_RawSamples into the backend 2013-04-20 13:16:40 +02:00
Yamagi Burmeister
2c356d142e Refactor the SDL part of S_LoadSound into the SDL backend 2013-04-20 10:26:31 +02:00
Yamagi Burmeister
0c93ecbddb Print the number of OpenAL sources in the backend 2013-04-20 10:26:19 +02:00
Yamagi Burmeister
cbecc5b2dc Retire snd_mem.c and integrate it into snd_dma.c and the backends 2013-04-20 09:19:59 +02:00
Yamagi Burmeister
3989ff73b2 Retire snd_mix.c and incorporate it into the SDL backend 2013-04-20 09:03:47 +02:00
Yamagi Burmeister
35ba5b0de1 Move all generic function used only by the SDL backend into it
Additionally rename those function to SDL_ prefix and refactor
them a little.
2013-04-20 08:40:53 +02:00
Yamagi Burmeister
f1ce0c0c00 Move all SDL backend function to the SDL backend and use SDL_ as prefix 2013-04-20 08:02:13 +02:00
Yamagi Burmeister
56d920162e Reduce default volume to 0.3 on non-linux-platforms
If the volume is set too high the OpenAL backend preamplification leads
to overdriven sound samples. It's not quite understandable to me why
that only happen on platforms other than Linux (maybe a bug in OpenAL?)
and there's not much we can do against it besides reducing the volume.
As the side note: Simmilar behavior can be seen at least in ioQ3 and
dhewm3...
2013-01-20 12:01:10 +01:00
Yamagi Burmeister
bc5c308684 Add a cvar "s_openal_maxgain" to clamp AL_GAIN
This cvar is a last resort if all other measures to prevent overdriven
preamplifation fail. Setting it to lower value than 1.0 limits the
overall dynamic range, so sound quality is lost. This is especially
hearable when low volume samples are encountered, like the shotgun
combined with the silencer.
2013-01-20 12:01:10 +01:00
Yamagi Burmeister
1f5012aec3 Calculate the AL_GAIN by s_volume and don't set a global AL_GAIN 2013-01-20 12:01:10 +01:00
Yamagi Burmeister
548bbeb129 Pass raw "float" volume to OpenAL
The client uses float values between 0.0 and 1.0 to represent the volume
of sound samples. This is the range required by OpenAL. But the generic
part of the sound system multiplied the raw float value with 374 and
clamped it to a full integer. That worked by luck withth the OpenAL
backend but broke at least the silencer powerup. Solve this problem by
adding a new field "float oal_vol" to the channel_t struct and use it to
pass the raw float value to OpenAL.

This fixes issue #18
2013-01-20 12:00:29 +01:00
Yamagi Burmeister
2890dafbda Divide effect volume by 3 when using the OpenAL backend
Since OpenAL 1.15 AL_GAIN has much more weight than before. That leeds
to overdriven effect samples unless the volume control is set to a very
low level. With this change volume can be set to a high level without
distorting. But there's one problem. A division by 2 is to low to rule
distortion out and by 3 the game is a little bit quieter than before. A
value of 2.5 would be optimal but is not applicable since the volume is
represented by an integer. I've choosen 3 to be aon the save side.

As a side note: This problem was very less worse on Linux than on
Windows and FreeBSD. Maybe Linux guys need to pump there volume up
to compensate this work-around.
2013-01-06 17:09:30 +01:00
Yamagi Burmeister
86ca73754d Silence a compiler warning on OS X 2012-11-04 09:18:37 +01:00
Yamagi Burmeister
ba10009aa5 Add support for Mac OS X
These are the code changes and Makefile changes necessary to build and
run Yamagi Quake II on Max OS X. OS X 10.6 or higher is required, older
version may work but we cannot guarantee it. The documentation will be
added in another commit. This patch was contributed by W. Beser, I made
only some small cosmetical changes.
2012-09-14 11:21:02 +02:00
Yamagi Burmeister
e5f70fcf40 Merge qal.c into one generic file for all platforms
To archive this, 3 new functions Sys_GetProcAddress(), Sys_LoadLibrary()
and Sys_FreeLibrary() were added to abstract the library loading code
into a platform independend API.
2012-08-01 14:54:18 +02:00
Yamagi Burmeister
399c581f06 Move src/windows to src/backends/windows 2012-08-01 14:12:05 +02:00
Yamagi Burmeister
3fb8492398 Move src/unix to src/backends/unix 2012-08-01 13:58:10 +02:00
Yamagi Burmeister
590baaa3e9 Remove some potential harmfull "long"
While the use of "long" was harmless in this case, it's unnecessary and
we try to keep Quake II free from longs.
2012-06-22 09:44:26 +02:00
Yamagi Burmeister
7b54f3d668 Merge branch 'master' into windows
Conflicts:
	src/client/sound/snd_al.c
2012-06-14 12:27:09 +02:00
Yamagi Burmeister
61b10f12da Fix a crash when entering water with s_openal = 0 2012-06-14 12:24:29 +02:00