Commit graph

610 commits

Author SHA1 Message Date
Christoph Oelckers
af1de8ddc9 - removed volume testing output.
- final tweak to volume adjustment: Do this upon extraction for better results.

If this is done via the synth's parameters it will affect channel balance.
The given factor of 5 is necessary to roughly match the output of FluidSynth.
2018-02-21 20:12:37 +01:00
Christoph Oelckers
59352af486 - Volume tweaking. 2018-02-21 19:05:14 +01:00
Christoph Oelckers
e6bae25423 - Timidity++ is now fully integrated into the softsynth interface.
The only thing left to do is tweaking the volume of the output to match the one from the EXE.
2018-02-21 17:35:44 +01:00
Christoph Oelckers
445e9451cb - Added the long event handler for Timidity++.
This will be hard to test because there's basically no material out there using the features this implements.
2018-02-21 02:02:29 +01:00
Christoph Oelckers
4813eeeb85 - Timidity++ now plays ZDoom's event stream, although still through the Windows output module.
This also means that readmidi.cpp is no longer needed.
2018-02-21 01:29:39 +01:00
Christoph Oelckers
57967a1033 - safety commit. 2018-02-20 23:36:59 +01:00
Christoph Oelckers
cbcfea99cb - use the intended interface to pass some data to the player. 2018-02-20 21:52:45 +01:00
Christoph Oelckers
a8283ffdd6 - something can be heard.
This doesn't pipe the audio through OpenAL yet but the fundamentals for further progress are done.
2018-02-20 20:50:01 +01:00
Christoph Oelckers
5ce3b00b90 - commented out the noisy debug messages in Timidity++ so that they do not waste execution time and memory for nothing - there are almost 300 of them. 2018-02-20 19:45:37 +01:00
Christoph Oelckers
d72b87f469 - skeleton of new player class for Timidity++ - not tested yet. 2018-02-20 01:23:56 +01:00
Christoph Oelckers
803369fb8d - make CMake happy 2018-02-19 23:33:42 +01:00
Christoph Oelckers
06a1730b8a - hooking in the PathExpander. 2018-02-19 22:48:13 +01:00
Christoph Oelckers
576932c47f - Timidity++ sources added. This compiles but isn't hooked into the engine yet.
This source has been heavily edited to remove the deep integration with the provided UI modules and to eliminate use of global variables and puts everything into a small number of C++ classes.
2018-02-19 22:14:22 +01:00
alexey.lysiuk
05538f2de8 Fixed compilation warnings reported by MSVC
src\sound\musicformats\music_libsndfile.cpp(119): warning C4267: 'argument': conversion from 'size_t' to 'long', possible loss of data
src\sound\musicformats\music_libsndfile.cpp(139): warning C4267: 'argument': conversion from 'size_t' to 'long', possible loss of data
src\sound\musicformats\music_libsndfile.cpp(145): warning C4267: 'argument': conversion from 'size_t' to 'long', possible loss of data
src\sound\musicformats\music_libsndfile.cpp(167): warning C4800: 'int': forcing value to bool 'true' or 'false' (performance warning)
src\sound\musicformats\music_libsndfile.cpp(178): warning C4267: 'argument': conversion from 'size_t' to 'long', possible loss of data
src\sound\musicformats\music_libsndfile.cpp(240): warning C4267: 'argument': conversion from 'size_t' to 'long', possible loss of data
2018-02-19 12:28:24 +02:00
Chris Robinson
e566cb9184 Properly parse FLAC and Ogg Vorbis files for their comments 2018-02-12 17:33:20 +01:00
Christoph Oelckers
93686638b0 - let fluid_reverb and fluid_chorus default to 'off'. 2018-01-29 18:54:06 +01:00
Christoph Oelckers
2720e36a2c - marked a few more CCMDs unsafe. 2018-01-20 09:11:28 +01:00
Christoph Oelckers
13c4e58c3d - simplified IgnoreMIDIVolume.
The XP related check had already been deactivated but not removed.
2018-01-14 10:48:26 +01:00
Christoph Oelckers
7cbcbe66c0 - sanitization of temporary file stuff for Timidity++.
* do not use the global temp directory. Instead create one in the AppData folder.
* removed lots of unneeded code from tmpfileplus.
* use C++ strings in there.
2017-12-02 17:33:43 +01:00
Christoph Oelckers
8d26760671 - use FileWriter for 'writemidi' CCMD. 2017-12-02 12:33:58 +01:00
Christoph Oelckers
1af42b3d50 - use FileWriter for the OPL dumper. 2017-12-02 12:31:21 +01:00
Christoph Oelckers
5e7dfa7cce - use FileWriter for the Timidity MIDI dumper 2017-12-02 12:01:19 +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
Chris Robinson
666198dec8 Don't allow Timidity++ pipes less than 20ms
This prevents Timidity++ from playing externally, so it now always goes through
the sound system. Aside from the issues relating to controlling playback, that
functionality has been busted for who knows how long anyway since Open() always
tries to create a pipe and sound stream regardless of the calculated size.
2017-09-10 07:25:29 -04:00
Chris Robinson
49df5a7f16 Add a cvar for the timidity++ config file 2017-09-10 07:25:29 -04:00
Chris Robinson
8f8c2ef2ef Build Timidity++ args separately on non-Windows
Rather than building a command line that's going to be manually split into
individual arguments passed to execvp, build the individual arguments directly.
2017-09-10 07:25:29 -04:00
Chris Robinson
5b3fbfde6d Read all data from the Timidity++ pipe
For non-Windows systems, read() may be non-blocking and can return less than
the requested amount if the timidity process hasn't written enough audio yet.
2017-09-10 07:25:29 -04:00
David Carlier
8d8c353465 Attempty to free memory leaks. 2017-08-16 16:31:23 -04:00
alexey.lysiuk
eb52088487 Fixed compilation warnings reported by Clang
src/gl/scene/gl_sprite.cpp:685:34: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/polyrenderer/scene/poly_sprite.cpp:297:34: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/swrenderer/scene/r_opaque_pass.cpp:975:35: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/sound/mididevices/music_timiditypp_mididevice.cpp:548:30: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
2017-08-13 16:42:08 +03:00
Kevin Caccamo
7ff0040f30 Add a null pointer at the end of TimidityArgs
This actually got the execvp call working consistently for me; now I can listen to MIDI music in GZDoom again.
2017-07-31 11:05:28 -04:00
Kevin Caccamo
a4370a3529 Null-terminate strings 2017-07-31 11:05:28 -04:00
Kevin Caccamo
ff35620a09 Fix freeze when timidity_exe is not set to timidity's absolute path 2017-07-31 11:05:28 -04:00
Kevin Caccamo
18e76c978c Fix code style, and make some minor changes
Assume timidity is in the user's PATH if not the specified location
Also, get the error message for the execvp failure if it does fail
2017-07-31 11:05:28 -04:00
Kevin Caccamo
233fce7ef6 Initial attempt to make timidity work on Linux again
Add code to find the timidity executable, and split the command line into separate arguments by spaces.
For some reason, this doesn't work, although reverting 64e96c5f makes timidity work again.
2017-07-31 11:05:28 -04:00
David Carlier
64e96c5f46 OpenBSD support 2017-07-25 07:56:19 -04:00
alexey.lysiuk
afe1199b69 Fixed sound looping when stream length is a multiply of buffer size
https://forum.zdoom.org/viewtopic.php?t=57164
2017-07-09 13:28:16 +03:00
Christoph Oelckers
842e8b68b4 - blacklist old FMod related sound CVARs because they tend to be in the UnknownCVARs section but aren't useful any longer. 2017-06-12 00:00:55 +02:00
alexey.lysiuk
e56cda1350 Fixed crash on change particular sound options
Happened only when there is a current song but it’s not played, for example in title screen
https://forum.zdoom.org/viewtopic.php?t=56631
2017-05-28 17:18:35 +03:00
Dugan Chen
bc0f9023f6 Add mem_fn header to oalsound.cpp 2017-05-22 21:54:58 +02:00
svdijk
bdfc42182f OPLsynth: Default to center panning. 2017-05-22 09:15:02 +02:00
svdijk
6dd570c538 Menu: Fix cycling the "midi devices" menu option. 2017-05-14 12:12:12 +03:00
alexey.lysiuk
f0d40d6a8a Added check for patch set existence before loading in FluidSynth
This helps to avoid flooding of output with the following messages on every MIDI song change:
fluidsynth: error: Unable to open file "/usr/share/sounds/sf2/FluidR3_GS.sf2"
fluidsynth: error: Couldn't load soundfont file
fluidsynth: error: Failed to load SoundFont "/usr/share/sounds/sf2/FluidR3_GS.sf2"
fluidsynth: error: Unable to open file "/usr/share/sounds/sf2/FluidR3_GM.sf2"
fluidsynth: error: Couldn't load soundfont file
fluidsynth: error: Failed to load SoundFont "/usr/share/sounds/sf2/FluidR3_GM.sf2"
2017-05-13 17:56:26 +03:00
alexey.lysiuk
3ab4a2238e Removed some remains of sound system MIDI device 2017-05-13 16:45:02 +03:00
alexey.lysiuk
a01c6b1d65 Fixed build of non-Windows targets
src/sound/mididevices/music_fluidsynth_mididevice.cpp:355:13: error: use of undeclared identifier 'BaseFileSearch'
2017-05-13 14:29:29 +03:00
Christoph Oelckers
ba37f093e0 - use FluidSynth as default MIDI device and allow loading a 'gzdoom.sf2' sound font if none is specified. The search rules for this file will be the same as for gzdoom.pk3. 2017-05-13 12:33:14 +02:00
Chris Robinson
e1fc33c38f Don't downmix sounds when AL_SOFT_source_spatialize is available 2017-05-12 21:38:45 +02:00
Christoph Oelckers
c6a516089e - fixed: OPLio::WriteTremolo wrote the wrong value for operator #0. 2017-05-08 22:46:35 +02:00