Christoph Oelckers
cdf2a17c5a
- moved the sound decoding code to the zmusic project.
...
Since this gets used by both the sound backend and the music code it needs to be in a place accessible to both.
2019-09-29 12:48:12 +02:00
Christoph Oelckers
b883d27a1f
- XA, too.
2019-09-29 01:44:59 +02:00
Christoph Oelckers
dbabc3c0f6
- ... and the raw OPL format.
2019-09-29 01:31:42 +02:00
Christoph Oelckers
dbb4539f4f
- gave music_gme.cpp the treatment.
2019-09-29 01:00:15 +02:00
Christoph Oelckers
5eed3dab59
- dependency cleanup in music_dumb.cpp.
2019-09-29 00:41:13 +02:00
Christoph Oelckers
d94b63b486
- uncoupled the stream sources from the low level implementation. The entire setup had the stream sources depend on the SoundStream class, severely limiting reusability. This was changed that there is one SoundStream class that uses the StreamSources as mere data source that has no knowledge and no connection to the underlying system, similar to how the MIDI system works. With this there are only 3 top level music classes left - MIDIStreamer, StreamSong and CDSong.
...
Also made the decode_vorbis function in DUMB a function pointer so that the library does not depend on high level code and can just ignore the vorbis case if no supported.
2019-09-28 21:04:41 +02:00
Christoph Oelckers
cfe89ef6e6
- created a new zmusic library which will eventually contain all the music playback code.
...
Currently all it contains are the MIDI sources and the MIDI devices, the rest needs to be reworked first.
2019-09-28 18:32:25 +02:00
Christoph Oelckers
fc6eba0c26
- more dependency removal, this time from the MIDI devices.
2019-09-28 16:50:00 +02:00
Christoph Oelckers
820cbcc689
- removed all dependencies on ZDoom code from the MIDI sources (including TArray and FileReader.)
2019-09-28 13:59:46 +02:00
Christoph Oelckers
123ed9d01d
- moved the stream handling out of the MIDI device into the MIDIStreamer class.
...
This isn't the final location but this means that the device is merely a data provider, with the sole exception of the Win32 MIDI device whose unwieldy usage requirements unfortunately dictate much of the needed interface here.
2019-09-28 10:00:22 +02:00
Christoph Oelckers
67169b80e5
- split out the MIDIDevice implementation into its own source file.
2019-09-28 07:47:50 +02:00
Christoph Oelckers
61bc25d781
- WildMidi also done.
2019-09-28 00:10:39 +02:00
Christoph Oelckers
890db1fbf9
- Timidity++ done.
2019-09-27 22:19:00 +02:00
Christoph Oelckers
ed7b73d8cb
- work on GUS MIDI device plus some cleanup
...
This is not tested yet!
2019-09-27 02:31:27 +02:00
Christoph Oelckers
b3b870d67e
- Gave OPN device the same treatment
...
Also made some improvements to the interface.
2019-09-27 01:51:05 +02:00
Christoph Oelckers
621945905f
- same treatment for the OPL Midi player.
2019-09-27 01:01:52 +02:00
Christoph Oelckers
647abf040b
- cleared FluidSynthMIDIDevice of most ZDoom dependencies.
2019-09-27 00:16:32 +02:00
Christoph Oelckers
8d2c67fe95
- 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.
2019-09-26 22:30:07 +02:00
Christoph Oelckers
9b0529b8a3
- removed most dependencies on ZDoom code in ADL Midi device.
2019-09-26 21:29:06 +02:00
Christoph Oelckers
b085ac3efb
- 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.
2019-09-26 19:33:28 +02:00
Christoph Oelckers
2aa03e8e8a
- 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.
2019-09-26 17:40:39 +02:00
Christoph Oelckers
b8824b572f
- 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.)
2019-09-25 21:11:00 +02:00
Christoph Oelckers
4ba8da290c
- made WildMidi a library.
2019-09-25 19:38:48 +02:00
Vitaly Novichkov
1a070d12a1
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-25 15:38:39 +03:00
Christoph Oelckers
1b1069dc78
- made the class definitions of the MIDI devices private to the implementations.
2019-06-27 09:56:08 +02:00
nashmuhandes
407983749a
Added a master volume setting.
2019-02-27 14:17:45 -05:00
Christoph Oelckers
e091369a38
- removed FCriticalSection and replaced all of its uses with std::mutex.
...
There's really no need for a non-standard solution here anymore with C++11.
This also fixes an unreleased lock in the WildMidi code.
2019-02-22 20:24:24 +01:00
Christoph Oelckers
f6a91e1722
- moved the I_Error prototypes to doomerrors.h to avoid having to include the low level system header for this.
2019-01-31 19:38:04 +01:00
Christoph Oelckers
1a3df8dfba
- moved all shutdown handling for sound related resources to I_ShutdownSound instead of registering separate atterm handlers.
2018-12-19 09:39:06 +01:00
Christoph Oelckers
c5153ca095
- fixed: Do not pass Sysex messages to Windows's GS Wavetable synth.
...
This will totally refuse to play a MIDI if that happens.
Duke Nukem's Alienz.mid, which did not play before works after this change.
2018-11-01 10:22:21 +01:00
alexey.lysiuk
f17f8c9359
- added end line to various messages
...
so they don't screw up further output anymore
2018-05-11 18:03:57 +03: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
Vitaly Novichkov
6308fb311b
Added support for libOPNMIDI Playing device
2018-03-24 17:58:47 +03:00
Rachael Alexanderson
0893f0c01e
Merge remote-tracking branch 'origin/master' into adlMIDI
2018-03-22 14:28:54 -04:00
alexey.lysiuk
d58169f1b0
Fixed crash with very short music loop
...
https://forum.zdoom.org/viewtopic.php?t=59883
2018-03-21 12:28:12 +02:00
alexey.lysiuk
f242f0631b
Fixed crash in when MP3 length guesstimation failed
...
https://forum.zdoom.org/viewtopic.php?t=59881
2018-03-20 18:01:35 +02:00
Christoph Oelckers
b939836846
- renamed FileRdr back to FileReader.
2018-03-11 19:29:37 +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
alexey.lysiuk
7f17121df8
Fixed crash in MIDI to wave writer
2018-03-08 11:38:02 +02:00
Christoph Oelckers
2d2d44baad
- integrated ADL as a proper device in the MIDI device list.
...
- resorted the MIDI device menu option by device types (i.e. all SW synths first, FM synths second)
- allow setting the ADL bank.
2018-03-07 21:20:25 +01:00
Christoph Oelckers
fd801b8b94
Merge branch 'adlMIDI'
...
# Conflicts:
# src/sound/musicformats/music_midistream.cpp
2018-03-07 20:31:32 +01:00
Christoph Oelckers
9b61ee9618
- fixed: The MIDI wave writer set the sample rate to save at too late.
...
This was done after the players had already been created. To ensure that everything gets set properly it is necessary to pass the desired sample rate to the device's constructor and let it make sure that a proper sample rate gets set.
2018-03-06 22:41:27 +01:00
Christoph Oelckers
e1bb14803e
- print an error message if the requested MIDI device cannot be started.
...
This will only be done the first time a given setup fails. Repeated messages will be muted.
2018-03-03 08:52:25 +01:00
Christoph Oelckers
4c0f68bcd4
Merge branch 'master' into timidity++
...
# Conflicts:
# src/sound/musicformats/music_midistream.cpp
2018-03-02 00:08:12 +01:00
Christoph Oelckers
4ccbc4ea9e
- Send a GM reset SYSEX event when music playback is started.
2018-02-28 09:46:28 +01:00
Christoph Oelckers
eb124f6160
- made the sound font loading a bit more error resistant.
...
- implemented a fallback both for sound font lookup and for MIDI device selection so that if some non-working combination is set up, the player will fall back to something that works.
2018-02-26 16:36:30 +01:00
alexey.lysiuk
4fdf488960
Fixed MSVC compilation warning
...
VC\include\type_traits(1468): warning C4800: 'int': forcing value to bool 'true' or 'false' (performance warning)
src\sound\musicformats\music_midistream.cpp(832): note: see reference to function template instantiation 'std::function<bool (int)>::function<MIDIStreamer::SetMIDISource::<lambda_...>,int,void>(_Fx)' being compiled
2018-02-26 13:22:36 +02:00
Christoph Oelckers
27f9330c81
- reimplemented thr OPL dumoer for MIDI.
2018-02-24 18:55:42 +01:00
Christoph Oelckers
2202a52840
- made the MIDI to WAVE dumper functional again, including the option of choosing the MIDI synth and sound font with which it should be rendered.
2018-02-24 18:19:27 +01:00
Christoph Oelckers
7a851fd3f1
libADL MIDI test. It sounds awful so obviously there's still something wrong here. Definitely not usable yet.
2018-02-23 21:56:34 +01:00