Commit graph

211 commits

Author SHA1 Message Date
Christoph Oelckers
7068c1df48 - added a ResetEvent call in case that Timidity++ did not react to signalling the KillerEvent.
SVN r2942 (trunk)
2010-10-14 14:40:26 +00:00
Braden Obrzut
394a37421a - NULL pointer checks in music_pseudo_mididevice.cpp to prevent crashes on startup if fmod fails to play a midi.
SVN r2927 (trunk)
2010-10-09 04:37:31 +00:00
Christoph Oelckers
0490c35347 - added Edward-san's improvements for changemus command.
SVN r2902 (trunk)
2010-10-05 22:35:59 +00:00
Christoph Oelckers
5ff3b3f329 - added Gez's VOC loader.
SVN r2901 (trunk)
2010-10-05 22:31:22 +00:00
Braden Obrzut
f26e65e550 - Fixed Linux compilation errors. (I'm not too sure what I was supposed to do with PrepTimidity() though.)
SVN r2882 (trunk)
2010-10-02 16:49:44 +00:00
Christoph Oelckers
d3ca1fddcc - added new action special Ceiling_LowerAndCrushDist. It's similar to Ceiling_LowerAndCrush but allows to explicitly set the distance from the floor where the ceiling stops moving. This is used to remove the special behavior for Strife from the code that unlike the other games moved the ceiling to the floor, not to 8 units above it.
SVN r2881 (trunk)
2010-10-02 16:26:10 +00:00
Christoph Oelckers
6d78ff3469 - Backported GZDoom revisions 1018-1019: Fixed spelling of "pseudo" because it bugged me too much. ;)
SVN r2880 (trunk)
2010-10-02 13:49:33 +00:00
Randy Heit
b2b84ad11f - Fixed snd_mididevice so that changing it immediately restarts the song for all devices, not
just Windows system devices.
- Remove SMF generation from i_music.cpp, since the psuedo-MIDI devices do this now.

SVN r2875 (trunk)
2010-10-02 04:12:21 +00:00
Randy Heit
90dd40c58f - Reimplemented TiMidity++ playback so that it also can handle XMI subsongs.
SVN r2874 (trunk)
2010-10-02 03:36:19 +00:00
Randy Heit
fa429ad844 - Fix incorrect parameters to PrintMidiDevice().
- Add music_psuedo_mididevice.cpp to CMakeLists.txt.

SVN r2873 (trunk)
2010-10-02 02:23:42 +00:00
Randy Heit
b6941be55f - Reimplemented FMOD MIDI playback as a psuedo-MIDI device so that it can take advantage of XMI subsongs.
SVN r2872 (trunk)
2010-10-02 02:19:50 +00:00
Christoph Oelckers
5464676603 - cleaned up i_music.cpp.
SVN r2866 (trunk)
2010-09-29 19:29:14 +00:00
Randy Heit
bc08502132 - Pass SMF files through the MIDI conversion process too, to give TiMidity++ and FMOD some
degree of support for songs that use loop controllers to loop the song back to a point after
  the very beginning of the song.
- Enable loops during SMF generation. Infinite loops will be clamped to some finite amount. (This is currently 30, so a 3 minute song will still restart from the very beginning after 90 minutes)
- Fixed: The SMF, HMI, and XMI readers all generated invalid MEVT_NOP events.
- Fixed: SMF generation died on songs that set their tempo during the initial beat.


SVN r2864 (trunk)
2010-09-29 03:35:53 +00:00
Christoph Oelckers
e2c105b447 - fixed: XMI music files were not converted for playback with FMod or Timidity++.
- Was there any reason why the MIDI_GUS device was so well hidden from the user? It sure does not sound broken. Added it to MIDI menu and $mididevice.


SVN r2862 (trunk)
2010-09-29 00:35:47 +00:00
Randy Heit
5a3b3631c3 - Added XMIDI support (including subsongs).
- Moved unaligned accessors into m_swap.h.

SVN r2859 (trunk)
2010-09-28 03:58:41 +00:00
Christoph Oelckers
2d5755a80e - fix GCC warning.
SVN r2858 (trunk)
2010-09-27 22:42:35 +00:00
Randy Heit
4397ef3323 - Added HMP file support.
SVN r2849 (trunk)
2010-09-24 02:46:48 +00:00
Randy Heit
46eebe29a4 - Update the HMI player to use the division information stored in the song and check the full file signature.
SVN r2848 (trunk)
2010-09-23 22:37:25 +00:00
Randy Heit
5871712fd4 - Fixed incorrect definition of FLUID_FAILED when building with DYN_FLUIDSYNTH enabled.
SVN r2818 (trunk)
2010-09-18 02:12:49 +00:00
Christoph Oelckers
579502ab74 - merged menu branch back into trunk.
SVN r2768 (trunk)
2010-09-14 17:28:18 +00:00
Braden Obrzut
3dbf807345 - Applied Chris's patch to fix hmi compilation error on Linux.
SVN r2689 (trunk)
2010-09-04 18:21:51 +00:00
Randy Heit
84b9de8c14 - Make sure Tempo is initialized before creating SMFs.
SVN r2684 (trunk)
2010-09-04 02:57:36 +00:00
Randy Heit
070ec75785 - Cleaned up the ugly MIDI song creating code a little.
- Added a generic Standard MIDI File creator that works with any of the sequencers. mus2midi.cpp
  is no longer used but is kept around as a reference.

SVN r2677 (trunk)
2010-09-03 05:08:05 +00:00
Randy Heit
81e21b0688 - Renamed music_midi_midiout.cpp to music_smf_midiout.cpp.
- Moved MIDI precaching logic into MIDIStreamer so that SMF and HMI files can both use the
  same implementation.
- Added a player for HMI midi files.

SVN r2675 (trunk)
2010-09-02 23:17:58 +00:00
Christoph Oelckers
1dd3ecd6e2 - fixed: -nosfx deactivated the entire sound system which also made music inoperable. Changed it so that all it does is block sound effects from being started.
SVN r2621 (trunk)
2010-08-28 13:36:41 +00:00
Christoph Oelckers
eed5812799 - added 'fluidsynth' option for $mididevice command.
SVN r2598 (trunk)
2010-08-26 16:46:01 +00:00
Randy Heit
c058c644a4 - MinGW did not like this assignment in the FluidSynth loader.
SVN r2573 (trunk)
2010-08-24 02:35:10 +00:00
Randy Heit
6f82db47b8 - Merge the shared code for the softsynths into a common base class.
SVN r2560 (trunk)
2010-08-20 04:21:53 +00:00
Randy Heit
eafb0ab7cf - Expose more FluidSynth settings through these cvars:
* fluid_samplerate
  * fluid_threads
  * fluid_reverb_roomsize
  * fluid_reverb_damping
  * fluid_reverb_width
  * fluid_reverb_level
  * fluid_chorus_voices
  * fluid_chorus_level
  * fluid_chorus_speed
  * fluid_chorus_depth
  * fluid_chorus_type

SVN r2559 (trunk)
2010-08-19 23:11:16 +00:00
Randy Heit
a68e9c8fa6 - Added a dlopen() version of on-demand FluidSynth loading and exposed it
to CMake through the DYN_FLUIDSYNTH option.



SVN r2558 (trunk)
2010-08-19 20:46:19 +00:00
Randy Heit
f389cd8b0f - Add on-demand loading for fluidsynth.dll. This also lets you build with FluidSynth support
without actually having the FluidSynth development files installed.

SVN r2557 (trunk)
2010-08-19 16:49:43 +00:00
Randy Heit
2136ef2aba - Also check for CT2MGM.SF2 if CT4MGM.SF2 is not found.
SVN r2556 (trunk)
2010-08-19 15:51:07 +00:00
Randy Heit
2c397b1aac - Add a default search for Creative's CT4MGM.SF2 on Windows if fluid_patchset is unspecified.
- Use fluid_patchset to specify the SoundFont(s) for FluidSynth instead of doubling up with
  snd_midipatchset, which is already used by FMOD.

SVN r2555 (trunk)
2010-08-19 15:46:49 +00:00
Randy Heit
576e597d2b - Increase the fluid_voices default to 128. It apparently has a poor voice cutting algorithm
which is painfully apparent on hexen.wad MAP01's music, which hits around 90 voices.
- Patch from Chris:
  * Add FluidSynth to the menu.
  * Enable FluidSynth for MIDI as well as MUS.
  * Fix CmakeLists.txt.


SVN r2554 (trunk)
2010-08-19 15:31:44 +00:00
Randy Heit
d53ef3f38a - Oops. These changes didn't belong in the repository.
SVN r2547 (trunk)
2010-08-15 20:05:35 +00:00
Randy Heit
ea4ac390d9 - Forgot to include this music_fluidsynth_mididevice.cpp.
SVN r2546 (trunk)
2010-08-15 19:55:40 +00:00
Randy Heit
1fa4bbf69c - Added FluidSynth support as snd_mididevice -5. Only tested with Linux. I will have
to try compiling it myself on Windows to see if it's really that slow or if
  Ubuntu just ships an unoptimized version, because performance is pretty pathetic
  when compared to the other options. (I understand that it's a complete SoundFont2
  renderer, so it is understandably slower than something like TiMidity++, but still.
  Does it really need to be around 10x slower? I played with the chorus, reverb, and
  interpolation settings, and none of them seemed to make much difference in
  performance.)



SVN r2545 (trunk)
2010-08-15 19:54:59 +00:00
Randy Heit
3416a7fc47 - Fix compilation with MinGW + w32api and clean up warnings.
SVN r2505 (trunk)
2010-08-11 03:56:31 +00:00
Randy Heit
c29639426f - Sounds that define a loop no longer play looped by default. They must be started with
CHAN_LOOP so that the higher level sound code knows they loop and can handle them accordingly.
- Added support for a LOOP_BIDI tag. Set it to "1", "On", "True", or "Yes" to use a
  bidirectional loop. This only works with sounds and not music, because music is streamed
  so does not support them.
- Extended custom loop support to work with samples as well as music.

SVN r2434 (trunk)
2010-07-15 23:07:41 +00:00
Randy Heit
99a2014ead - Added support for custom loop points for songs. This does not work with MP3 because of the
way MP3 obfuscates custom tags. Vorbis and FLAC are fine. (I could make it work with MP3,
  but you should be using Vorbis instead.) They are:
  * LOOP_START: Start time for the loop. If omitted, the song repeats from the beginning.
  * LOOP_END: End time for the loop. If omitted, the song loops at the end. (If you need to specify this, why aren't you using a shorter song.)
  You only need to specify one of these tags to set the custom loop. Naturally, you can set
  them both, as well. The format for each tag is the same:
  * If it contains a colon (:), it specifies by time. This may be of the form 00:00:00.00
    (HH:MM:SS.ss) to specify by play. Various parts may be left off. e.g. To start the loop
    at 20 seconds in, you can use ":20", 0:20", "00:00:20", ":20.0", etc. Values after the
    decimal are fractions of a second and accurate to one millisecond.
  * If you don't include a colon but just have a raw number, then it's the number of PCM
    samples at which to loop.
  * Any characters other than digits (0-9), colons (:), or a single decimal point for the
    seconds portion will result in the tag being ignored.

SVN r2424 (trunk)
2010-07-10 02:59:34 +00:00
Randy Heit
503b934938 - Added better error messages for MIDI playback failure than just "MIDI playback failure".
SVN r2383 (trunk)
2010-06-20 04:41:23 +00:00
Randy Heit
08b931006f - Reverted accidental change to fmodsound.cpp from revision 2273.
SVN r2282 (trunk)
2010-04-17 01:55:33 +00:00
Randy Heit
2772786a7e - Added MUS header scan to mus2midi.
- Fixed buffer overflow when reading a MUS song from a compressed file.

SVN r2274 (trunk)
2010-04-07 02:02:53 +00:00
Randy Heit
114412d5a2 - Search for the MUS header within the first 32 bytes of the song so that the music in
diescum.wad works.

SVN r2273 (trunk)
2010-04-06 03:12:32 +00:00
Randy Heit
7bd741a644 - Fixed compiling with FMOD Ex 4.30.00. I get no 3D sound effects, and it's crashing on me, too.
Am I doing something wrong?

SVN r2271 (trunk)
2010-04-04 17:48:26 +00:00
Christoph Oelckers
a6a303f438 - fix division by 0.
SVN r2243 (trunk)
2010-03-25 23:29:41 +00:00
Randy Heit
6c63ce51e4 - Fixed: The listener used a different coordinate system than sounds, which meant that sounds
were never made head-relative, so stereo effects would disappear if they were played by
  the listener.

SVN r2231 (trunk)
2010-03-18 21:54:24 +00:00
Randy Heit
740d52cf5b - Added support for Blood's SFX loop start markers.
SVN r2221 (trunk)
2010-03-18 04:26:22 +00:00
Randy Heit
758327f4b3 - Fixed: snd_musicvolume needs to check GSnd for NULL, since somebody might have set an
atexit for it, which gets executed after the sound system shuts down.
- Fixed: FPlayList::Backup() failed to wrap around below entry 0 because Position is
  unsigned now.

SVN r2188 (trunk)
2010-03-05 03:11:10 +00:00
Randy Heit
5125e11d25 - Do not call midiOutSetVolume() when playing with the "Microsoft GS Wavetable Synth" on
Vista and above, because it doesn't do what you expect.

SVN r2136 (trunk)
2010-01-26 05:11:04 +00:00