Commit graph

532 commits

Author SHA1 Message Date
Christoph Oelckers
11bea8249a . added SetMusicVolume script function. 2016-12-28 21:41:06 +01:00
Christoph Oelckers
e956d19769 - preserve the factor set by I_SetMusicVolume when starting new music. 2016-12-27 15:44:06 +01:00
Christoph Oelckers
b0ddba2240 Merge branch 'master' of c:\Programming\Doom-Dev\zdoom_\ into zscript 2016-11-27 16:31:26 +01:00
Edoardo Prezioso
ae382f4005 - Fixed the spline/cubic crashes for FMOD 4.24 64-bit, too. 2016-11-24 09:26:39 +01:00
Christoph Oelckers
85ff172ee3 Merge remote-tracking branch 'remotes/origin/master' into zscript 2016-11-14 15:03:14 +01:00
Braden Obrzut
9342898361 - Added support for GTK3 (thanks to "MineyMe" and edward-san)
- Replaced GTK/OS X (note different from Cocoa) clipboard code with SDL clipboard API.
- Removed requirement to link to GTK in order to compile with GTK support.
	- GTK is no longer init'd if the GTK IWAD picker is not used.
	- Our usage of GTK is such that the dynamic loader can work with both GTK2 and GTK3 depending on what's installed.
	- Since we're accumulating a lot of library loaders I've built a generic interface as FModule which replaces TOptWin32Proc and the loaders in the OpenAL and Fluidsynth code.
2016-11-12 18:32:09 -05:00
Christoph Oelckers
646f9b21c7 Merge branch 'master' of https://github.com/rheit/zdoom into zscript
# Conflicts:
#	src/scripting/codegeneration/codegen.cpp
2016-10-18 00:55:56 +02:00
Braden Obrzut
741c9edf42 - Clear out GCC 6.2 warnings (interestingly they now check for misleading indentation which found a good case in fragglescript/t_func.cpp even though I believe it was harmless) 2016-10-17 00:19:08 -04:00
Christoph Oelckers
b1a83bfd26 - started with cleanup and separation of DECORATE code.
* everything related to scripting is now placed in a subdirectory 'scripting', which itself is separated into DECORATE, ZSCRIPT, the VM and code generation.
 * a few items have been moved to different headers so that the DECORATE parser definitions can mostly be kept local. The only exception at the moment is the flags interface on which 3 source files depend.
2016-10-12 19:22:33 +02:00
Christoph Oelckers
aeb5377821 - do not generate SYSEX events when playing MIDIs through FMod, because there has been a report that it doesn't work correctly. 2016-10-05 16:45:12 +02:00
alexey.lysiuk
099bfed806 Fixed endianness issue with precaching of MUS files 2016-10-01 11:50:29 +02:00
alexey.lysiuk
0a24c15445 Added ability to customize path to FluidSynth dynamic library
Use fluid_lib CVAR to set path or default name of dynamic library will be used instead
2016-09-22 08:43:00 +02:00
alexey.lysiuk
4f7e1f0171 FluisSynth dynamic library is now referenced by system specific name on macOS 2016-09-22 08:43:00 +02:00
alexey.lysiuk
c88eec3d73 Fixed 'unreferenced local variable' warnings when building with FMOD Studio API 2016-09-12 20:37:12 +02:00
alexey.lysiuk
764705a8e0 Fixed 'Could not set resampler method. Defaults will be used. (Error 31)' message with FMOD Studio API 2016-09-12 20:37:11 +02:00
alexey.lysiuk
a2a1d2a36d Fixed significant distortion of sound effects with FMOD Studio API 2016-09-12 20:37:11 +02:00
Christoph Oelckers
e04055dbb2 - added multiple message levels for 'developer' CVAR so that the important stuff won't get drowned in pointless notification spam that's of no use to anyone.
- made 'developer' CVAR persist across launches and added some menu entries for it.
- added checks for 'developer' to ACS's CheckInventory function.
2016-08-28 09:55:04 +02:00
Braden Obrzut
716fbec8ee - Added support for building with FMOD Studio Low Level API (partially based off of Emile Belanger's/Beloko Games Android work)
- Use with FMOD Studio 1.06.x. 1.07 and 1.08 compile but for some reason produce a lot of noise on vanilla Doom sounds.
	- Crashes when used with fluidsynth provided by Ubuntu 16.04, but a self compiled version of the library works just fine.
	- Reverbs are mostly untested, but implemented.
	- Debug waveform drawing is not implemented as it requires a non-trivial amount of work.
	- It will still show as FMOD Ex in the menus since I'm too lazy at the moment to make it a "separate" backend.
2016-08-27 22:14:57 -04:00
alexey.lysiuk
5348a15b75 Added option to control dynamic loading of OpenAL
Dynamic loading is enabled by default, set DYN_OPENAL to OFF to link with static or dynamic library

# Conflicts:
#	src/sound/oalsound.cpp
#	src/sound/oalsound.h
2016-05-29 14:25:04 +02:00
Christoph Oelckers
9e0301c1a1 - prevent message spam with no MIDI devices. 2016-05-18 13:11:01 +02:00
Christoph Oelckers
a7fd04a235 Merge branch 'master' of https://github.com/kcat/zdoom 2016-05-18 11:48:27 +02:00
Chris Robinson
fe966916d7 Set head-relative for sources near the listener
This matches the behavior of the FMOD backend
2016-05-16 17:02:39 -07:00
Christoph Oelckers
ebca170e73 - fixed a few warnings in OpenAL code. 2016-05-13 10:07:18 +02:00
Chris Robinson
8334189d66 Merge remote-tracking branch 'zdoom/master' 2016-05-05 12:55:16 -07:00
Chris Robinson
ba1574e65a Don't define OpenAL redirect macros with the IDE's parser
At least with KDevelop4, macros like this interefere with contextual info by
causing it to show information about the macro itself (where it's defined and
what it defines to), rather than the function (parameters, comments, etc). It
also gets in the way of auto-completion.
2016-05-05 21:00:30 +02:00
Chris Robinson
fa46965a71 Check for OpenAL device errors after pausing/resuming the device 2016-05-05 21:00:30 +02:00
Chris Robinson
0b7b78c5d2 Better handle channel configs when monoizing in LoadSound 2016-05-05 21:00:29 +02:00
Chris Robinson
e298f8389b Avoid divide-by-0 when the area sound radius is less than the max distance 2016-05-05 21:00:29 +02:00
Chris Robinson
66c61a7c8b Set the appropriate start offset for non-3D sounds too 2016-05-05 21:00:28 +02:00
Chris Robinson
26a8a8a1ba Pause OpenAL processing using ALC_SOFT_pause_device when inactive 2016-05-05 21:00:28 +02:00
Chris Robinson
e1c8890c5e Set the appropriate start offset for restarted sounds 2016-05-05 21:00:27 +02:00
Chris Robinson
c3cef91a4f Properly sum the channels being downmixed to mono 2016-05-05 21:00:27 +02:00
Chris Robinson
12c9281a7e Avoid redundantly setting DistanceScale 2016-05-05 21:00:26 +02:00
Chris Robinson
bf5ac9b476 Use AL_EXT_SOURCE_RADIUS for area sounds 2016-05-05 21:00:26 +02:00
Chris Robinson
55294c5806 Use the correct OpenAL lib name on Linux 2016-05-05 21:00:25 +02:00
Chris Robinson
0d402618a3 Load mono copies of multichannel sounds that are used in 3D 2016-05-01 21:44:03 +02:00
Chris Robinson
6e25d3f618 Use a background thread for processing OpenAL streams 2016-04-26 06:12:56 -07:00
Chris Robinson
204d0c8572 Don't try to define __try/__except on non-MSVC systems
They didn't do anything anyway, and can clash with other compilers since they
may be used internally (macros and keywords starting with __ are for compiler
use).
2016-04-26 05:55:18 -07:00
Randy Heit
bf629d2590 Use a range instead of strict equality when deciding head sounds
- See http://forum.zdoom.org/viewtopic.php?f=7&t=51583
2016-04-17 20:14:25 -05:00
Christoph Oelckers
db86385cf6 - removed STACK_ARGS.
The only reason this even existed was that ZDoom's original VC projects used __fastcall. The CMake generated project do not, they stick to __cdecl.
Since no performance gain can be seen by using __fastcall the best course of action is to just remove all traces of it from the source and forget that it ever existed.
2016-04-11 10:46:30 +02:00
Christoph Oelckers
12129b0f07 - added a system-include independent wrapper for Windows's OutputDebugString, so that this can be used more easily in files that cannot include windows.h. 2016-04-10 13:03:44 +02:00
Christoph Oelckers
51b05d331d - replaced AActor::vel and player_t::Vel with a floating point version.
- Converted P_MovePlayer and all associated variables to floating point because this wasn't working well with a mixture between float and fixed.

Like the angle commit this has just been patched up to compile, the bulk of work is yet to be done.
2016-03-20 00:54:18 +01:00
alexey.lysiuk
b20956e207 Made FMOD Ex stream buffer size customizable
Use snd_streambuffersize to set size of stream buffer in KB, default is 64
See http://forum.zdoom.org/viewtopic.php?t=51230
2016-03-16 22:15:13 +02:00
Braden Obrzut
93be5aca05 - Fixed: Modern versions of GCC on PowerPC inserted padding to the end of pragma packed structures.
- Worked aorund modern GCC bug where C++ exceptions in Objective-C++ code would result in an ICE (bug is already on their tracker, but I doubt it will be fixed unless I decide to dig into the issue myself).
- Turn off fused floating point instructions since these can cause slight deviations in floating point code.
- Use -static-libgcc when compiling on the Mac with GCC since we need to use a custom version of GCC to do so now.
- Note: ZDoom will currently still crash on exit on PowerPC since it seems to be deciding that NameManager needs to be destructed before the console commands.
2016-03-13 01:14:08 -05:00
Randy Heit
55142078d8 Normalize line endings 2016-03-01 09:47:10 -06:00
Christoph Oelckers
e42dbb5087 Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	src/sound/oalsound.cpp
2016-02-13 14:56:03 +01:00
Christoph Oelckers
340faef1ec - fixed a few 64-bit warnings. 2016-02-13 13:37:28 +01:00
alexey.lysiuk
ce8b2974a3 Handle inability of OpenAL implementation to return number of available sources
OpenAL specification doesn't require alcGetIntegerv() to return meaningful values for ALC_MONO_SOURCES and ALC_MONO_SOURCES.
At least Apple's OpenAL implementation returns zeroes, although it can generate reasonable number of sources.
2016-02-13 11:11:02 +02:00
Christoph Oelckers
dde9336235 - silence floating point conversion warnings in oalsound.cpp 2016-02-10 11:29:32 +01:00
Braden Obrzut
f33993dcb5 - Load OpenAL at runtime for all platforms because I can't think of a good reason not to handle them all the same right now. 2016-02-09 22:40:19 -05:00
Christoph Oelckers
4d2a52418f - added an errorlog option.
This cuts down on as much message noise as possible, outputs everything to a file specified as a parameter and then quits immediately, allowing this to run from a batch that's supposed to check a larger list of files for errors.
Multiple outputs get appended if the file already exists.
2016-02-09 14:20:49 +01:00
Randy Heit
5ee988f607 Fixed: Applying reverb with FMOD 4.36.yy killed sound
- It turns out that the FMOD_REVERB_PROPERTIES structure actually changed
  with 4.36.00 and not with 4.38.00.
2016-02-06 19:29:13 -06:00
Randy Heit
09a17c2198 Quiet some narrowing conversion warnings from VS2015 2016-02-05 22:18:53 -06:00
Randy Heit
b3b0886b64 Merge branch 'scripting'
Conflicts:
	src/actor.h
	src/g_doom/a_doomweaps.cpp
	src/g_hexen/a_blastradius.cpp
	src/p_enemy.cpp
	src/p_enemy.h
	src/thingdef/thingdef.h
	src/thingdef/thingdef_codeptr.cpp
	wadsrc/static/actors/constants.txt
2016-02-04 15:17:22 -06:00
Christoph Oelckers
66f053f131 - on second thought: this shouldn't explode the speakers with too high values. 2016-02-02 15:02:06 +01:00
Christoph Oelckers
c002c2fde9 - added a mastervolume setting for DUMB because its default volume is far less than all the other music options. 2016-02-02 14:45:32 +01:00
alexey.lysiuk
90dd6b61b4 Fixed build with Creative Labs OpenAL SDK
Tested with
* Creative OpenAL from https://www.openal.org/downloads/OpenAL11CoreSDK.zip
* OpenAL Soft from http://kcat.strangesoft.net/openal-binaries/openal-soft-1.17.1-bin.zip
2016-02-02 10:29:23 +02:00
Christoph Oelckers
fe3e56c6bc - fixed: oalload.h should only do stuff is NO_OPENAL is not defined. 2016-02-01 18:49:12 +01:00
Christoph Oelckers
ee045371a3 - On Windows, use LoadLibrary/GetProcAddress to load OpenAL function addresses.
The reason for this is that on my system, the static or delay loaded method always picks the (obsolete) system-installed OpenAL version (needed for some old games) which is not wanted here if there's another one in the local ZDoom directory.
This also removes the dependency on the broken import library that comes with OpenAL Soft which causes compile errors with more modern MSVC compilers on default settings.
2016-02-01 14:02:25 +01:00
Braden Obrzut
1fcb9fcf06 - Fixed: Crash when automatically switching sound backends due to failure. 2016-01-29 23:10:10 -05:00
Christoph Oelckers
c3047f448e - fixed: When MIDI->Open returns failure, the MIDI device needs to be deleted. Otherwise the dead device object can trigger an assert later. 2016-01-27 10:39:21 +01:00
Randy Heit
9744b9e0d9 Merge branch 'master' into scripting
Conflicts:
	src/actor.h
	src/dobject.h
	src/dobjgc.cpp
	src/p_local.h
	src/thingdef/thingdef_codeptr.cpp
2016-01-21 12:45:06 -06:00
Christoph Oelckers
995721836b Merge branch 'SpawnParticle' of https://github.com/Edward850/zdoom
Conflicts:
	src/actor.h
2016-01-21 17:04:52 +01:00
Randy Heit
710fa55288 Port recent SMF changes to XMI and HMI:
- Handle SysEx messages instead of ignoring them.
- Don't lose time for unhandled events with delays.
2016-01-20 18:37:05 -06:00
Randy Heit
7f6b421e87 Make sure all unhandled delayed MIDI events generate NOPs
- Looking over the code again, I see that discarded SysEx messages can
  cause the same issue as unhandled meta events, so generalize the
  returning of a NOP for everything.
2016-01-20 18:27:04 -06:00
Edward Richardson
e5c67cee83 Merge branch conflicts fix
- CONFLICT (content): Merge conflict in src/p_acs.cpp
- Updated position variables
2016-01-21 10:49:57 +13:00
Randy Heit
1a356dfa51 Fixed: MIDI meta events were completely discarded, including their delays
(unless the event was for setting the tempo) This left the following
events in the track to happen at the wrong time.
2016-01-20 14:53:56 -06:00
Christoph Oelckers
bf747075e8 Merge branch 'master' into scripting
Conflicts:
	src/actor.h
	src/g_hexen/a_clericstaff.cpp
	src/p_enemy.cpp
	src/p_interaction.cpp
	src/p_local.h
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
2016-01-17 20:57:55 +01:00
Christoph Oelckers
cfcd2668cc Merge commit '772a5724313f2ad0bd6828fcc28545a9ee5e6068' into scripting
Conflicts:
	src/p_pspr.cpp
	src/thingdef/thingdef_codeptr.cpp
2016-01-17 20:00:45 +01:00
Christoph Oelckers
fbaab5044d Merge commit '38df0665e3a2018cf1d0028a36357df6c7e908e9' into scripting
Conflicts:
	src/d_dehacked.cpp
	src/decallib.cpp
	src/g_hexen/a_clericstaff.cpp
	src/p_interaction.cpp
	src/p_local.h
	src/thingdef/thingdef_codeptr.cpp
	wadsrc/static/actors/constants.txt
	wadsrc/static/actors/shared/inventory.txt
2016-01-17 19:50:34 +01:00
Christoph Oelckers
5207aa6cc0 Merge commit '125afcf3defb901e23bd44d32fa86681ef1748f6' into scripting
Conflicts:
	src/p_local.h
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
	wadsrc/static/actors/shared/inventory.txt
2016-01-17 19:09:05 +01:00
Randy Heit
16781e47ae Use a 64k stream buffer for all streams, not just net streams
- FLACs need a larger buffer than the default to run without starving on
  later versions of FMOD.
2016-01-14 20:41:09 -06:00
Christoph Oelckers
8ded18a96c - changed default frequency for Timidity++ to 44100kHz. 2016-01-05 14:09:34 +01:00
Christoph Oelckers
addd059410 Merge branch 'master' of https://github.com/rheit/zdoom 2015-12-31 23:05:13 +01:00
Christoph Oelckers
5e975ac9f6 - extended $mididevice to add an optional parameter, which has the following meaning for the different MIDI devices:
* OPL: specify the core to use for playing this song
* FluidSynth: specify a soundfont that should be used for playing the song.
* WildMidi: specify a config file that should be used for playing the song.
* Timidity++: specify an executable that should be used for playing the song. At least under Windows this allows using Timidity++ with different configs if the executable and each single config are placed in different directories.
* GUS: currently not operational, but should later also specify the config. This will need some work, because right now this is initialized only when the sound system is initialized.
* all other: no function.

These options should mainly be for end users who want to fine-tune how to play the music.
2015-12-31 23:03:53 +01:00
Randy Heit
d8af2e558f Fix potentiol buffer overrun in MUSSong2::Precache() 2015-12-31 15:28:18 -06:00
Christoph Oelckers
1316120fe4 - fixed: The MUS precacher did not handle invalid patches well.
- increased the valid range of patch values for MUS. According to the original MIDI2MUS code it can handle numbers up to 188, not 181, and at least one track from Eternal Doom uses #183.
2015-12-31 14:35:34 +01:00
Christoph Oelckers
c88ed426a8 - oops, this somehow lost the shift operator... 2015-12-30 20:39:38 +01:00
Christoph Oelckers
3c40d71c20 - hopefully fixed the MUS precaching for good.
According to blzut3, it looks like it is a byte followed by a variable length field. It can be any value 0-15 and will be followed by that many bytes one for each bank used. If the bank count is 0 then it is shorthand for using one bank (bank 0).
2015-12-30 20:32:19 +01:00
Christoph Oelckers
be6daf5d78 - changed instrument lookup in MUS files.
Based on evidence from several songs in Eternal Doom the description in all known documents is wrong. The instruments are not stored in a 16-bit word but in an 8-bit byte, followed by some variable size data.

Known variations are:

* second byte is 0 - no additional data follows
* second byte is 1 - a third byte for the 'bank' value follows.
2015-12-30 19:13:28 +01:00
Edoardo Prezioso
a2b377c580 - Fixed Clang errors/warnings on wildMIDI code. 2015-12-30 10:58:52 +01:00
Christoph Oelckers
aff42a6186 - don't look up a lump name in PathExpander if we are only looking for real files. 2015-12-30 10:21:17 +01:00
Christoph Oelckers
1def61e3e3 - allow changing the reverb and resampling mode setting for WildMidi.
- fixed: WildMidi did not initialize the reverb data structures.
- removed the menu option for midi_timiditylike.
2015-12-30 10:14:18 +01:00
Randy Heit
3ec6ad5018 Add SysEx retrieval to the MIDI file reader 2015-12-29 22:39:38 -06:00
Randy Heit
6d2e93254f Fix CreateSMF's SysEx writing
- It was wrong before. It might still be wrong, but at least it doesn't
  look obviously wrong anymore.
2015-12-29 17:55:20 -06:00
Randy Heit
545e2f7c69 Slap WildMidi onto snd_listmididevices's output for Windows 2015-12-29 17:55:20 -06:00
Christoph Oelckers
fe2dcfd588 - refactored the GUS/Timidity player's path building code so that it can also be used by WildMidi.
- fixed crash during sound reset - in this case I_ShutdownMusic should not close the WildMidi player.
2015-12-29 20:38:08 +01:00
Edoardo Prezioso
7c82c576a3 - Fixed Linux compiler errors and snd_mididevice.
-- errno.h is required for 'errno';
-- don't use str(n)casecmp and rely on ZDoom CMake handling;
-- add a missing parenthesis around a 'signed char' cast;
-- remove an unneeded GNU_SOURCE redefinition;
-- the non-MSVC side of snd_mididevice was not adapted to the new code, making wildmidi unavailable through the menu.
2015-12-29 10:33:20 +01:00
Randy Heit
afc36544b7 Add a WildMidi softsynth device
- This removes the preceding psuedo MIDI device for WildMidi.
2015-12-28 22:16:35 -06:00
Christoph Oelckers
060a6b2ff2 - shut down WildMidi when exiting.
The pointless error message in WildMidi_Shutdown was removed to keep the rest of the code simple and allowing to call this even when the device never was used.
2015-12-28 21:23:21 +01:00
Christoph Oelckers
a94120b6a4 Merge branch 'master' into WildMidi 2015-12-28 21:01:17 +01:00
Kyle Evans
7c6237e134 <stdlib.h> has replaced <malloc.h> on FreeBSD as well 2015-12-10 21:24:37 -06:00
Christoph Oelckers
724445354c - add the WildMidiMIDIDevice CPP file. 2015-12-01 10:39:22 +01:00
Christoph Oelckers
a03b947729 - WildMidi generally working, some cleanup left to do... 2015-11-28 20:58:14 +01:00
Christoph Oelckers
a55d85c51c - do not wait infinitely for termination of the Timidity++ process. This can lock up the engine indefinitely if the child process fails to exit. 2015-11-27 12:12:08 +01:00
Christoph Oelckers
43dff3021b - fixed: The OpenAL backend ignored PlaySound's 'volume' parameter. 2015-11-25 13:00:56 +01:00
alexey.lysiuk
621116a289 Disabled loading of SDL output plugin for FMOD Ex on OS X
Long path to executable file corrupts stack inside FMOD library
This plugin is not being built for OS X, output through CoreAudio works just fine
2015-09-18 10:53:46 +03:00
Christoph Oelckers
d8ea128f38 Merge branch 'master' into scripting
Conflicts:
	src/p_effect.cpp
	src/p_effect.h
	src/p_local.h
	src/p_map.cpp
	src/thingdef/thingdef_codeptr.cpp
2015-07-16 20:37:17 +02:00
Marrub
9e1a82a830 fix menus muting themselves when the volume is changed 2015-07-10 08:45:15 +00:00
Christoph Oelckers
1effaa4c8e Merge branch 'master' into scripting 2015-04-29 10:53:37 +02:00