Commit graph

28 commits

Author SHA1 Message Date
Christoph Oelckers
ba0f5a3f94 - most WORD and SWORD are gone. 2017-03-08 18:55:55 +01:00
Christoph Oelckers
9e0301c1a1 - prevent message spam with no MIDI devices. 2016-05-18 13:11:01 +02:00
Randy Heit
55142078d8 Normalize line endings 2016-03-01 09:47:10 -06:00
Randy Heit
545e2f7c69 Slap WildMidi onto snd_listmididevices's output for Windows 2015-12-29 17:55:20 -06: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
Christoph Oelckers
a03b947729 - WildMidi generally working, some cleanup left to do... 2015-11-28 20:58:14 +01:00
Chris Robinson
ca22f2dd3f Fix a PrintMidiDevice call 2014-09-11 14:16:56 -07:00
Chris Robinson
1a40c95f84 Rename some FMOD references to be generic sound system
Since they relates to other sound backends as well, there's no need to single
out FMOD in these places.
2014-06-26 16:58:18 -07:00
Christoph Oelckers
f84368677a - updated OpenAL branch.
SVN r3269 (openal)
2011-07-08 22:00:23 +00:00
Randy Heit
1579fd1c1c - Fixed: Selecting TiMidity++ as a MIDI device without a working timidity.exe, then switching to a different MIDI device would leave music silent until a new song was started.
(The discrepancy between mus_playing.handle and currSong is one which should probably be handled properly at some point.)

SVN r3212 (trunk)
2011-05-20 00:26:22 +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
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
Christoph Oelckers
5464676603 - cleaned up i_music.cpp.
SVN r2866 (trunk)
2010-09-29 19:29:14 +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
Christoph Oelckers
5e824ba0e0 - sync OpenAL branch with trunk.
SVN r2780 (openal)
2010-09-15 12:31:18 +00:00
Christoph Oelckers
579502ab74 - merged menu branch back into trunk.
SVN r2768 (trunk)
2010-09-14 17:28:18 +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
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
Christoph Oelckers
5603c70574 [OpenAL branch]
- apply Chris's latest patch.




SVN r2534 (openal)
2010-08-13 07:07:26 +00:00
Randy Heit
b340f9c762 - Removed some GCC warnings.
- Fixed: MinGW doesn't have _get_pgmptr(), so it couldn't compile i_main.cpp.
- Fixed: MOD_WAVETABLE and MOD_SWSYNTH are not defined by w32api, so MinGW
  failed compiling the new MIDI code.
- Fixed: LocalSndInfo and LocalSndSeq in S_Start() need to be const char
  pointers, since "" is a constant.
- Fixed: parsecontext.h was missing a newline at the end of the file.


SVN r904 (trunk)
2008-04-12 05:33:20 +00:00
Randy Heit
10c0d67b78 - Changed the MIDIStreamer to send the all notes off controller to each
channel when restarting the song, rather than emitting a single note off
  event which only has a 1 in 127 chance of being for a note that's playing
  on that channel. Then I decided it would probably be a good idea to reset
  all the controllers as well.
- Increasing the size of the internal Timidity stream buffer from 1/14 sec
  (copied from the OPL player) improved its sound dramatically, so apparently
  Timidity has issues with short stream buffers. It's now at 1/2 sec in
  length. However, there seems to be something weird going on with
  corazonazul_ff6boss.mid near the beginning where it stops and immediately
  restarts a guitar on the exact same note.
- Added a new sound debugging cvar: snd_drawoutput, which can show various
  oscilloscopes and spectrums.
- Internal TiMidity now plays music.
- Changed the progdir global variable into an FString.

SVN r900 (trunk)
2008-04-11 04:59:23 +00:00
Randy Heit
68e4b3d946 - Reimplemented snd_midiprecache, now for MIDI as well as MUS, and
defaulting to false.


SVN r895 (trunk)
2008-04-09 03:55:04 +00:00
Randy Heit
cd70087ed5 - Moved sound sample rate, buffer size, and buffer count to the
advanced sound options menu. Removed opl_enable from the menu.
- Added OPL synth as MIDI device -3. Since this is based on the MUS player
  code, it only supports those events and controllers supported by MUS.
  Some of Duke's MIDIs sound awful, but I think that may be more because
  it's using different instruments... There's a thread in the MIDI streamer
  class that could be taken out for Linux, since it doesn't need to deal
  with the Windows Multimedia API, but for now, this is still Windows-only.


SVN r864 (trunk)
2008-03-29 05:01:38 +00:00
Christoph Oelckers
670edb2356 - Added Jim' Linux fix.
- Added MartinHowe's fix for mugshot display in status bars.


SVN r856 (trunk)
2008-03-26 08:50:54 +00:00
Randy Heit
8d0c48bf81 - The garbage collector is now run one last time just before exiting the game.
- Removed movie volume from the sound menu and renamed some of the other
  options to give the MIDI device name more room to display itself.
- Moved the midi device selection into the main sound menu.
- Added FMOD as MIDI device -1, to replace the MIDI mapper. This is still the
  default device. By default, it uses exactly the same DLS instruments as the
  Microsoft GS Wavetable Synth. If you have another set DLS level 1 patch set
  you want to use, set the snd_midipatchfile cvar to specify where it should
  load the instruments from.
- Changed the ProduceMIDI function to store its output into a TArray<BYTE>.
  An overloaded version wraps around it to continue to supply file-writing
  support for external Timidity++ usage.
- Added an FMOD credits banner to comply with their non-commercial license.
- Reimplemented the snd_buffersize cvar for the FMOD Ex sound system. Rather
  than a time in ms, this is now the length in samples of the DSP buffer.
  Also added the snd_buffercount cvar to offer complete control over the
  call to FMOD::System::setDSPBufferSize(). Note that with any snd_samplerate
  below about 44kHz, you will need to set snd_buffersize to avoid long
  latencies.
- Reimplemented the snd_output cvar for the FMOD Ex sound system.
- Changed snd_samplerate default to 0. This now means to use the default
  sample rate.
- Made snd_output, snd_output_format, snd_speakermode, snd_resampler, and
  snd_hrtf available through the menu.
- Split the HRTF effect selection into its own cvar: snd_hrtf.
- Removed 96000 Hz option from the menu. It's still available through the
  cvar, if desired.
- Fixed: If Windows sound init failed, retry with DirectSound. (Apparently,
  WASAPI doesn't work with more than two speakers and PCM-Float output at the
  same time.)
- Fixed: Area sounds only played from the front speakers once you got within
  the 2D panning area.


SVN r854 (trunk)
2008-03-26 04:27:07 +00:00
Randy Heit
2b721975dd VERY IMPORTANT NOTE FOR ANYBODY BUILDING FROM THE TRUNK: This commit adds support
for FMOD Ex while at the same time removing support for FMOD 3. Be sure to update
your SDKs. GCC users, be sure to do a "make cleandep && make clean" before
building, or you will likely get inexplicable errors.

- Fixed: If you wanted to make cleandep with MinGW, you had to specifically
  specify Makefile.mingw as the makefile to use.
- Added a normalizer to the OPL synth. It helped bring up the volume a little,
  but not nearly as much as I would have liked.
- Removed MIDI Mapper references. It doesn't work with the stream API, and
  it doesn't really exist on NT kernels, either.
- Reworked music volume: Except for MIDI, all music volume is controlled
  through GSnd and not at the individual song level.
- Removed the mididevice global variable.
- Removed snd_midivolume. Now that all music uses a linear volume scale,
  there's no need for two separate music volume controls.
- Increased snd_samplerate default up to 48000.
- Added snd_format, defaulting to "PCM-16".
- Added snd_speakermode, defaulting to "Auto".
- Replaced snd_fpu with snd_resampler, defaulting to "Linear".
- Bumped the snd_channels default up from a pitiful 12 to 32.
- Changed snd_3d default to true. The new cvar snd_hw3d determines if
  hardware 3D support is used and default to false.
- Removed the libFLAC source, since FMOD Ex has native FLAC support.
- Removed the altsound code, since it was terribly gimped in comparison to
  the FMOD code. It's original purpose was to have been as a springboard for
  writing a non-FMOD sound system for Unix-y systems, but that never
  happened.
- Finished preliminary FMOD Ex support.


SVN r789 (trunk)
2008-03-09 03:13:49 +00:00
Randy Heit
68f726e422 - The full master volume SysEx is now always sent to the MIDI device, even if
it seems to have a working volume control.
- Renamed music_midi_stream.cpp to music_midi_base.cpp.
- Moved the WinMM MIDI code into a new container class.


SVN r787 (trunk)
2008-03-07 00:43:05 +00:00
Renamed from src/sound/music_midi_stream.cpp (Browse further)