Commit graph

136 commits

Author SHA1 Message Date
Christoph Oelckers
f50e402e92 - sorted sound backend code into subdirectories. 2019-07-14 16:07:18 +02:00
Christoph Oelckers
1081338af2 - removed a few obsolete definitions from basictypes.h 2019-06-26 22:13:12 +02:00
Christoph Oelckers
979f1df281 Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor
# Conflicts:
#	src/g_level.cpp
#	src/p_user.cpp
2019-02-05 13:49:07 +01:00
alexey.lysiuk
69492b1e27 - fixed ambient sounds "leaking" into reverb environment
Set speed of sound to 343.3 and init scale to 1 according to @kcat suggestion

https://forum.zdoom.org/viewtopic.php?t=63185
https://forum.zdoom.org/viewtopic.php?t=63524
2019-02-05 13:13:52 +02:00
Christoph Oelckers
c77487dab8 - moved the menu.h include from oalsound.h to oalsound.cpp.
The menu is a very 'dirty' header, and forcing it to be pulled in with something entirely unrelated is not good - even though only two files include oalsound.h.
2019-01-31 19:44:04 +01:00
Christoph Oelckers
39f53a4de0 - took the delayed console command execution out of the thinker management.
Doing this intermingled with the thinkers is highly unsafe because there are absolutely no guarantees about order of execution.
Effectively it ran these commands right in the middle of the playsim which could cause all sorts of synchronization issues, because CCMDs are part of the UI, not the playsim.

- pass a const string to AddCommandString.

This function manipulated the input buffer, leading to all sorts of code contortions to make sure that the passed parameter is clean for that.
This function will now create a copy of the passed parameter which it can manipulate without complicating its calling code.

# Conflicts:
#	src/c_dispatch.cpp
2019-01-27 10:24:49 +01:00
Christoph Oelckers
25ad71a113 - Changed a few allocations into usin TArrays
S_SoundCurve in particular looked like a candidate for leaking memory.
2018-11-30 17:07:42 +01:00
alexey.lysiuk
2ae8d39441 Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03:00
alexey.lysiuk
a4bee610b4 Added runtime warning about usage of unsupported OpenAL implementation
https://forum.zdoom.org/viewtopic.php?t=59920
2018-03-24 15:00:36 +02:00
alexey.lysiuk
c4b3dcf266 Fixed indent of OpenAL initialization messages
Tab characters should not be used for indenting messages in console
2018-03-24 14:53:47 +02:00
alexey.lysiuk
40bf8a421e User's OpenAL library has precedence over Apple's framework
https://forum.zdoom.org/viewtopic.php?t=59920
2018-03-24 12:09:23 +02:00
Christoph Oelckers
b939836846 - renamed FileRdr back to FileReader. 2018-03-11 19:29:37 +01:00
Christoph Oelckers
8bbfd39f42 - fixed some remaining issues:
* initial positioning in a subsection of a file failed. This mainly affected music playback.
* made the FileRdr constructor which takes a FileReaderInterface private so that everything that needs it must be explicitly declared as friend.
* removed a few redundant construction initializers for FileRdrs.
* loading compressed nodes needs to check the validity of its reader.
* use GetLength to detemine the size of a Zip file instead of doing another seek to the end.
* removed duplicate Length variables.
2018-03-11 13:26:30 +01:00
Christoph Oelckers
5fa63c396d - sound code and most of texture code converted to FileRdr.
This allowed to remove a lot of bad pointer voodoo in the music loader, because the new class does not allow duplication of the reader object
2018-03-10 18:45:11 +01:00
Chris Robinson
e566cb9184 Properly parse FLAC and Ogg Vorbis files for their comments 2018-02-12 17:33:20 +01:00
Christoph Oelckers
87816f811f - removed windows.h include from a few files which do not need it anymore. 2017-11-25 10:58:33 +01:00
alexey.lysiuk
0e706bfecf Use tmpfileplus() instead of tempnam()
Finally get rid of security or deprecated warnings cause by tempnam() function usage
2017-11-07 11:50:07 +02:00
David Carlier
b871b1898d OpenBSD build fix.
- No timidity user defined parameters supported.
- Shared libraries versioning policy differs on OpenBSD.
2017-10-21 14:49:41 -04:00
Chris Robinson
bbaec90f61 Fix speed of sound and unit scale 2017-10-01 07:39:26 +02:00
Dugan Chen
bc0f9023f6 Add mem_fn header to oalsound.cpp 2017-05-22 21:54:58 +02:00
alexey.lysiuk
3ab4a2238e Removed some remains of sound system MIDI device 2017-05-13 16:45:02 +03:00
Chris Robinson
e1fc33c38f Don't downmix sounds when AL_SOFT_source_spatialize is available 2017-05-12 21:38:45 +02:00
alexey.lysiuk
e1266685d9 Use proper function to set sound offsets in samples
This fixes the following compilation warnings:
src\sound\oalsound.cpp(1588): warning C4244: 'argument': conversion from 'unsigned int' to 'ALfloat', possible loss of data
src\sound\oalsound.cpp(1796): warning C4244: 'argument': conversion from 'unsigned int' to 'ALfloat', possible loss of data
2017-05-08 10:29:41 +03:00
alexey.lysiuk
e848abf4df Fixed restoration of absolute time position for sounds
Loading of saved game no longer restarts sounds from beginning
2017-05-07 13:00:06 +03:00
Chris Robinson
996ce4497d Add a resampler option for the OpenAL backend 2017-05-06 18:07:31 +02:00
Chris Robinson
6044c876ab Update LASTRUNVERSION to handle the snd_hrtf change
Also snd_hrtf now uses -1 for "auto" and 0 for "off", which makes more sense.
2017-05-01 00:26:28 +02:00
Chris Robinson
aae6ded2dd Add snd_hrtf back in to allow enabling HRTF again
It's now an Int type instead of Bool. Older config files that had it set to
"true" or "false" will interpret it as 0, which is Auto (the default).
2017-04-30 18:41:39 +02:00
Christoph Oelckers
21af612224 - avoid double loading sound data for monoization. 2017-04-26 20:51:06 +02:00
Christoph Oelckers
99579efd0d - fixed a few issues with libmpg123 not correctly reporting the sound's length and issues with repeatedly rewinding the song. 2017-04-25 21:30:11 +02:00
Chris Robinson
f97efefe7e Set the source gain to 0 before stopping it
Stopping a source in the middle of playback can causing undesirable "popping"
from a sudden change in amplitude. Setting the source gain to 0 gives OpenAL
the opportunity to ramp the source's output to 0, where it can be safely
stopped without causing a sudden change in amplitude.
2017-04-24 13:12:43 +02:00
alexey.lysiuk
70abf19f76 Replaced pointless comparison with loop_start range check
src/sound/oalsound.cpp:1285:17: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
2017-04-23 14:49:36 +03:00
Chris Robinson
c2391d6a0d Fix the default loop end point 2017-04-23 09:06:34 +02:00
Chris Robinson
4b7834465b Fix off-by-one error for the loop end 2017-04-23 09:06:34 +02:00
Christoph Oelckers
882279d600 - clamp the loop end point to the sample size for sound effects so that bogus values do not render the loop start ineffective. 2017-04-22 15:49:39 +02:00
alexey.lysiuk
4e1e527b2c Fixed compilation with Clang
src/sound/oalsound.cpp:1288: error: non-constant-expression cannot be narrowed from type 'uint32_t' (aka 'unsigned int') to 'ALint' (aka 'int') in initializer list [-Wc++11-narrowing]
2017-04-21 22:07:06 +03:00
Christoph Oelckers
f7a22154b7 - fixed: loop_end needs a different default in the sound effect code than in the music code. 2017-04-21 16:25:36 +02:00
Christoph Oelckers
b3f3500ce5 - added loop tag reading for Ogg and Flac sound effects. Due to lack of test material this is currently untested.
- removed unaligned memory access in FindLoopTags.
2017-04-21 12:29:50 +02:00
Christoph Oelckers
1f69a000df - removed redundant sound includes. 2017-04-18 20:55:40 +02:00
alexey.lysiuk
8db239d34f Fixed build with NO_OPENAL defined
https://mantis.zdoom.org/view.php?id=596
2017-04-18 16:40:31 +03:00
Christoph Oelckers
c219811a54 - removed FMod as the last remaining piece of code that is not GPL compatible.
Please consider GZDoom as licensed under the GPL starting with this commit, even though the license headers have not been changed yet.
2017-04-17 01:06:54 +02:00
Christoph Oelckers
dfd3535e02 - added a dedicated player class for streamed music formats (i.e. MP3, Ogg and Flac)
The idea is to have more control on the game side instead of dealing with these formats in the backend, which was done for FMod because it already had the decoders implemented.
However, with OpenAL this setup makes no sense and only complicates future extensions that can be better handled at a higher level.
2017-04-01 19:47:12 +02:00
Christoph Oelckers
921abc404d - fixed GCC warnings and errors
(Is there anyway to tone down GCC's warning level? It outputs too many false positives for potentially uninitialized variables in which the genuine errors get drowned.)
2017-03-11 19:02:35 +01:00
Christoph Oelckers
fec958cc0a - finally managed to get rid of the DWORD type.
This one was particularly nasty because Windows also defines a DWORD, but in Windows it is an unsigned long, not an unsigned int so changing types caused type conflicts and not all could be removed.
Those referring to the Windows type have to be kept, fortunately they are mostly in the Win32 directory, with a handful of exceptions elsewhere.
2017-03-10 19:46:22 +01:00
Christoph Oelckers
8d6fe24945 cleanup of MIDI code dependencies
* make the critical section local to the respective platform instead of polluting everything with system specific symbols.
* moved system specific class declarations into the source file instead of having them in the global header.

This commit temporarily disables the Windows system device because it cannot be done without polluting the global header and still needs a bit of refactoring.
2017-03-10 19:08:36 +01:00
Christoph Oelckers
d2beacfc5f - except for DWORD, all homegrown integer types are gone - a handful were left where they represent genuine Windows types. 2017-03-09 19:54:41 +01:00
Christoph Oelckers
c008ddaf66 - replaced homegrown SWORD, SBYTE and uint32_t types. 2017-03-09 19:31:45 +01:00
alexey.lysiuk
de9c9221fe Added AudioToolbox MIDI device for macOS
This device is the default one for OpenAL backend on Apple's platform
2017-03-08 11:23:36 +02:00
alexey.lysiuk
54ca55f070 Default MIDI device is now created by sound backend
OpenAL backend now plays music by default
It uses WinMM device on Windows and OPL on other platforms
2017-03-08 11:04:02 +02:00
Thomas Hume
c4cb94123f Do not change indentation of the licence... 2017-02-23 21:01:09 +01:00
Thomas Hume
c1cafd3bbc Consistency of indents, removes false-pos warnings
Clang reports missleading indentation with non bracketed if in the
presence of mixed tabs/spaces
2017-02-23 21:01:09 +01:00