Commit graph

794 commits

Author SHA1 Message Date
Christoph Oelckers
f6eedb737b - same treatment for the OPL Midi player.
# Conflicts:
#	src/sound/mididevices/music_opl_mididevice.cpp
2020-01-05 02:17:53 +01:00
Christoph Oelckers
9585ca5984 - missed an 'else'. 2020-01-05 02:16:33 +01:00
Christoph Oelckers
4aca10e062 - cleared FluidSynthMIDIDevice of most ZDoom dependencies.
# Conflicts:
#	src/sound/mididevices/music_fluidsynth_mididevice.cpp

# Conflicts:
#	src/sound/mididevices/music_fluidsynth_mididevice.cpp
2020-01-05 02:16:30 +01:00
Christoph Oelckers
726f65e91b - more work on music code
- renamed the FluidSetting functions to ChangeSetting so that they can be used as a generic means to change music player options without overloading the virtual function table for each minor thing.
- pass Printf as a parameter to the MIDI renderer to uncouple it from the main GZDoom code.
- throw exceptions when setting up the renderer fails so that this can be handled consistently for all construction errors here.
- delete FluidSynth handles before the constructor aborts.
2020-01-05 02:14:14 +01:00
drfrag
8b6af8726e Revert "- added dynamic loading of FluidSynth 2.x"
This reverts commit 399bc4cffa9401b6ea4b88ff6d2206e80f835efc.
2020-01-05 02:13:44 +01:00
Christoph Oelckers
9437bcda64 - removed most dependencies on ZDoom code in ADL Midi device. 2020-01-05 02:11:52 +01:00
Christoph Oelckers
f2840d4942 - made the OPL synth backend a separate library.
# Conflicts:
#	src/CMakeLists.txt
#	src/sound/mididevices/music_opl_mididevice.cpp

# Conflicts:
#	libraries/oplsynth/OPL3.cpp
#	libraries/oplsynth/dosbox/opl.cpp
2020-01-05 02:11:51 +01:00
Christoph Oelckers
a63d90034b - cleaned up the dependencies of the OPL interface layer.
This also removes the OPL dumper because I wasn't able to get any non-broken output from it and have no desire to fix such a niche feature.

# Conflicts:
#	src/sound/mididevices/music_opldumper_mididevice.cpp
2020-01-05 02:11:49 +01:00
Christoph Oelckers
01624eddf2 - removed all ZDoom dependencies from the OPL backend code.
# Conflicts:
#	src/sound/oplsynth/opl_mus_player.cpp
2020-01-05 02:11:03 +01:00
Christoph Oelckers
d212c84392 - removed the global current_opl_core variable and pass the needed info as function parameters
because using global variables for this is really bad style!
This also removes the unused OPLMUSDumper class.
2020-01-05 02:02:01 +01:00
Christoph Oelckers
cf105c8720 - gave the Timidity error functions better names and hooked up the WildMidi version. 2020-01-05 01:53:54 +01:00
Christoph Oelckers
166e390ad9 - changed MIDI sources so that they do not have to include i_musicinterns.h anymore.
They were already clean of unwanted external references, but including this file made it hard to keep it that way.
This also moves a few useful definitions around to less 'dirty' headers.

# Conflicts:
#	src/rendering/swrenderer/textures/warptexture.cpp

# Conflicts:
#	src/doomtype.h
#	src/sound/midisources/midisource.cpp
#	src/sound/midisources/midisource_smf.cpp
#	src/sound/midisources/midisource_xmi.cpp
2020-01-05 01:53:45 +01:00
Christoph Oelckers
3b5e8f8011 - made WildMidi a library.
# Conflicts:
#	src/CMakeLists.txt
#	src/sound/musicformats/music_xa.cpp
2020-01-05 01:40:41 +01:00
Christoph Oelckers
1816c17ffd - fixed WildMidi. 2020-01-05 01:40:38 +01:00
Christoph Oelckers
f76f3d0e0a - refactoring of WildMidi to have proper instrument management
Not tested yet, it compiles but may not work as-is.

# Conflicts:
#	src/sound/wildmidi/file_io.cpp
2020-01-05 01:40:34 +01:00
Christoph Oelckers
00048ddf7e - started cleanup work on WildMidi code.
# Conflicts:
#	src/sound/mididevices/music_wildmidi_mididevice.cpp

# Conflicts:
#	src/sound/mididevices/music_wildmidi_mididevice.cpp
2020-01-05 01:38:19 +01:00
Christoph Oelckers
2ddc9ee1f3 - made the Timidity(GUS) device a separate library.
# Conflicts:
#	src/CMakeLists.txt
2020-01-05 01:22:14 +01:00
Christoph Oelckers
f59aa69d95 - cleaned up the includes in timidity.cpp.
# Conflicts:
#	src/sound/timidity/timidity.cpp
2020-01-05 01:22:12 +01:00
Christoph Oelckers
1b1fabd5c2 - cleanup of the TimidityMIDIDevice(GUS) backend code to eliminate the storage in global variables and to remove the dependencies on core ZDoom code.
The organization here is now the same as for the Timidity++ device, i.e. it is the device owning the instruments to give better control over their lifecycle.

# Conflicts:
#	src/sound/timidity/instrum_font.cpp
#	src/sound/timidity/instrum_sf2.cpp
#	src/sound/timidity/mix.cpp
#	src/sound/timidity/playmidi.cpp
#	src/sound/timidity/resample.cpp
2020-01-05 01:22:10 +01:00
Christoph Oelckers
8542d73994 - removed some ZDoomd dependencies from Timidity(GUS) backend
* use std::string instead of FString
* replaced the single use of clamp with std::min/std::max.
* copied MAKE_ID macro into the source.
* use snprintf instead of mysnprintf
* use std::runtime_error instead of I_Error to abort on failed memory allocations.

# Conflicts:
#	src/sound/timidity/common.cpp

# Conflicts:
#	src/sound/timidity/common.cpp
#	src/sound/timidity/instrum.cpp
#	src/sound/timidity/instrum_dls.cpp
2020-01-05 01:22:06 +01:00
Christoph Oelckers
4fccadff7e - made the Timidity++ backend a library, now that it has no dependencies on GZDoom anymore.
# Conflicts:
#	src/CMakeLists.txt

# Conflicts:
#	src/CMakeLists.txt
2020-01-05 01:21:32 +01:00
Christoph Oelckers
5a3b544ba6 - handled the final piece where Timidity++ had a direct dependency on GZDoom - the error logging function.
This is npw a function pointer so that a simple stdout printout can be used as default, but allows to override it.
Also added the missing timidity_file.h header.

# Conflicts:
#	src/sound/timiditypp/common.cpp
2020-01-04 23:41:22 +01:00
Christoph Oelckers
ebdab4fd23 - moved the CVars out of the Timidity++ backend. 2020-01-04 23:39:51 +01:00
Christoph Oelckers
2dd6c14865 - implemented an abstract sound font reader interface for Timidity++.
The only dependency left on the main GZDoom code are the CVars, which will be dealt with next.

# Conflicts:
#	src/sound/mididevices/music_timiditypp_mididevice.cpp
2020-01-04 23:39:48 +01:00
Christoph Oelckers
9d5f4969e7 - thinned out the FSoundFontReader interface a bit more by moving the file open code into the FSoundFontReader class itself. 2020-01-04 23:39:45 +01:00
Christoph Oelckers
e968ef9ded - moved the instrument set maintenance out of the Timidity++ library into the player class.
This removes the dependency on the sound font manager from the low level library, reducing the direct dependencies to FileReader and SoundFontReader.
2020-01-04 23:39:43 +01:00
Christoph Oelckers
64e0b151fb - removed a few dependencies of the Timidity++ code from the main GZDoom code base.
The big issues, i.e. FileReader and SoundFontReader still need to be handled to make this a standalone library.

# Conflicts:
#	src/sound/timiditypp/configfile.cpp
2020-01-04 23:39:39 +01:00
Christoph Oelckers
4d2d143422 - gave libopen the same treatment and made it its own subproject
# Conflicts:
#	src/CMakeLists.txt
#	src/sound/mididevices/music_opnmidi_mididevice.cpp

# Conflicts:
#	src/sound/mididevices/music_opnmidi_mididevice.cpp
2020-01-04 22:59:26 +01:00
Christoph Oelckers
a4f05f5741 - made libadl its own library subproject.
This is to improve compile times because the MSVC compiler tends to become slow with large lists of source files in a single project.
This new project is still our stripped down copy of libadl, not the original, because that project contains a large amount of baggage we do not need.

# Conflicts:
#	src/CMakeLists.txt

# Conflicts:
#	src/sound/mididevices/music_adlmidi_mididevice.cpp
2020-01-04 22:56:56 +01:00
Christoph Oelckers
c05e3ebf31 Made several classes trivially copyable,
Many had leftover non-default constructors/ assignment operators, and some were initialized, even though the initialized data was never used.

In case of FCycler this even caused a default setting to be overwritten when used inside FDynamicLight.

# Conflicts:
#	src/g_shared/a_dynlight.cpp
#	src/sound/s_sndseq.cpp
2020-01-04 21:32:10 +01:00
Christoph Oelckers
f09e887a69 - removed redundant include. 2020-01-04 21:32:07 +01:00
Christoph Oelckers
1556e6620c - move sound files to sound folder.
# Conflicts:
#	src/CMakeLists.txt
2020-01-04 21:32:04 +01:00
Christoph Oelckers
81d54959af - sorted sound backend code into subdirectories.
# Conflicts:
#	src/CMakeLists.txt
2020-01-04 21:32:02 +01:00
Christoph Oelckers
d9168aeeff - deleted unused mus2midi.cpp file.
# Conflicts:
#	src/sound/i_music.cpp
2020-01-04 21:31:59 +01:00
alexey.lysiuk
7132b1a67c - fixed SPC music looping after update to GME 0.6.2
Why was the default player setup changed at all?

https://forum.zdoom.org/viewtopic.php?t=65863
2019-10-18 11:19:27 +02:00
alexey.lysiuk
d5451fd281 - added dynamic loading of FluidSynth 2.x
# Conflicts:
#	src/sound/mididevices/music_fluidsynth_mididevice.cpp
2019-10-14 12:01:03 +02:00
Christoph Oelckers
fd072db274 - adapted the PSX XA decoder from EDuke32 as a music format in GZDoom.
Libsndfile cannot decode this format but tries to play these files as regular WAVs and turns them into noise (Both are in a RIFF container.)

# Conflicts:
#	src/sound/musicformats/music_xa.cpp
2019-09-28 14:20:29 +02:00
Christoph Oelckers
09d26a9e64 - moved a few CCMDs from i_sound.cpp to s_sound.cpp. 2019-09-28 14:20:26 +02:00
Christoph Oelckers
bd3e8c0a99 - split off all music code from s_sound.cpp
# Conflicts:
#	src/CMakeLists.txt
#	src/fragglescript/t_func.cpp
#	src/fragglescript/t_load.cpp
#	src/g_level.cpp
#	src/g_levellocals.h
#	src/g_shared/a_dynlight.cpp
#	src/intermission/intermission.cpp
#	src/p_saveg.cpp
#	src/posix/cocoa/i_main.mm
#	src/s_sound.cpp
#	src/win32/st_start.cpp

# Conflicts:
#	src/win32/st_start.cpp
2019-09-28 14:20:21 +02:00
Jan Engelhardt
02ca2b7c4a Make the build work with fluidsynth 2.x. 2019-09-01 00:09:15 +02:00
Vitaly Novichkov
ff78550895 GME update with bug-fixes
- True fix for infinite loops [please verify!]
- True fix for KSS silence
- Fix for HES distorted and unstable/random tempo
2019-08-26 00:51:45 +02:00
Christoph Oelckers
20e574058e - removed the internal WildMidi player object cleanup code.
This was solely meant for the original WildMidi player but got seriously in the way of how this code gets used by GZDoom. In GZDoom the player object is owned by the MIDI devive which should be the only instance which is allowed to destroy it.
2019-08-19 00:24:54 +02:00
Major Cooke
7f5a2d3a11 Added A_SoundPitch and an optional pitch parameter to A_PlaySound and S_Sound.
- Note: Because sound channels are not in zscript, there's no way to modify a sound made by S_Sound.

# Conflicts:
#	src/s_sound.cpp
#	wadsrc/static/zscript/base.zs
2019-07-25 00:06:12 +02:00
Christoph Oelckers
9c25d75f65 - removed a few obsolete definitions from basictypes.h
# Conflicts:
#	src/win32/i_specialpaths.cpp
2019-07-17 17:54:30 +02:00
alexey.lysiuk
c4780495e1 - fixed linking without DYN_FLUIDSYNTH defined
Undefined symbols for architecture x86_64:
  "CreateFluidSynthMIDIDevice(char const*, int)", referenced from:
      MIDIStreamer::CreateMIDIDevice(EMidiDevice, int) in music_midistream.o
2019-07-09 22:58:11 +02:00
Christoph Oelckers
d018b430f7 - made the class definitions of the MIDI devices private to the implementations. 2019-07-09 22:58:08 +02:00
Edoardo Prezioso
768dc56ac0 - Fixed a buffer overflow with Timidity++ when playing Sigil e5m5 music.
See https://forum.zdoom.org/viewtopic.php?f=2&t=64910 .
2019-06-02 22:01:01 +02:00
Christoph Oelckers
8d157f3ced - switched the Windows backend to use the Windows Unicode API.
With localization for non-Latin languages on the support list the multibyte API doesn't cut it anymore. It neither can handle system text output outside the local code page nor can an ANSI window receive text input outside its own code page.
Similar problems exist for file names. With the multibyte API it is impossible to handle any file containing characters outside the active local code page.

So as of now, everything that may pass along some Unicode text will use the Unicode API with some text conversion functions. The only places where calls to the multibyte API were left are those where known string literals are passed or where the information is not used for anything but comparing it to other return values from the same API.

# Conflicts:
#	src/rendering/hwrenderer/postprocessing/hw_postprocess.h
#	src/win32/base_sysfb.cpp
#	src/win32/i_main.cpp
#	src/win32/win32basevideo.cpp
#	src/win32/win32glvideo.cpp

# Conflicts:
#	src/version.h
#	src/win32/i_main.cpp
#	src/win32/i_system.cpp
#	src/win32/optwin32.h
#	src/win32/win32gliface.cpp
#	wadsrc/static/language.enu
2019-05-14 16:17:05 +02:00
Christoph Oelckers
9ef338282d - fixed allocation mismatch in WildMidi. 2019-05-02 19:52:06 +02:00
alexey.lysiuk
0d968d0943 - replaced all usages of insecure vsprintf() function 2019-04-28 22:58:48 +02:00