Commit graph

23 commits

Author SHA1 Message Date
Christoph Oelckers
5eb9587135 - moved the various music format files into their own directory. 2017-03-10 22:26:02 +01:00
Christoph Oelckers
5374eed06d - cleaned up the interdependencies between the MIDIStreamer and the WinMIDIDevice classes.
A major part of this device's implementation details about how to handle the callback were not encapsulated by the device class at all, they were #ifdef'd into the streamer class.
This puts everything into the device class which now exposes a clean interface to the rest of the game with no special handling aside from calling two additional virtual functions that are empty for the other devices
2017-03-10 19:08:37 +01:00
Christoph Oelckers
8d6fe24945 cleanup of MIDI code dependencies
* make the critical section local to the respective platform instead of polluting everything with system specific symbols.
* moved system specific class declarations into the source file instead of having them in the global header.

This commit temporarily disables the Windows system device because it cannot be done without polluting the global header and still needs a bit of refactoring.
2017-03-10 19:08:36 +01:00
Christoph Oelckers
86d8f9ca83 - removed all dependencies on Windows-defined constants, rename the ones for non-Windows platforms and use those througout.
This should remove all dependencies on Windows definitions from the music interface, what remains is some cleanup.
2017-03-10 12:39:23 +01:00
Christoph Oelckers
d2beacfc5f - except for DWORD, all homegrown integer types are gone - a handful were left where they represent genuine Windows types. 2017-03-09 19:54:41 +01:00
Christoph Oelckers
ba0f5a3f94 - most WORD and SWORD are gone. 2017-03-08 18:55:55 +01:00
Braden Obrzut
741c9edf42 - Clear out GCC 6.2 warnings (interestingly they now check for misleading indentation which found a good case in fragglescript/t_func.cpp even though I believe it was harmless) 2016-10-17 00:19:08 -04:00
Christoph Oelckers
aeb5377821 - do not generate SYSEX events when playing MIDIs through FMod, because there has been a report that it doesn't work correctly. 2016-10-05 16:45:12 +02:00
Randy Heit
55142078d8 Normalize line endings 2016-03-01 09:47:10 -06:00
Randy Heit
710fa55288 Port recent SMF changes to XMI and HMI:
- Handle SysEx messages instead of ignoring them.
- Don't lose time for unhandled events with delays.
2016-01-20 18:37:05 -06:00
Christoph Oelckers
5e975ac9f6 - extended $mididevice to add an optional parameter, which has the following meaning for the different MIDI devices:
* OPL: specify the core to use for playing this song
* FluidSynth: specify a soundfont that should be used for playing the song.
* WildMidi: specify a config file that should be used for playing the song.
* Timidity++: specify an executable that should be used for playing the song. At least under Windows this allows using Timidity++ with different configs if the executable and each single config are placed in different directories.
* GUS: currently not operational, but should later also specify the config. This will need some work, because right now this is initialized only when the sound system is initialized.
* all other: no function.

These options should mainly be for end users who want to fine-tune how to play the music.
2015-12-31 23:03:53 +01:00
Christoph Oelckers
6bb79be85c - got rid of std::auto_ptr, courtesy of Blzut3's patch. 2015-04-25 17:50:57 +02:00
Chris Robinson
0017e1e6e8 Use a FileReader to handle music resources and audio decoding
Instead of the previous method where there'd be a filename and offset, and/or a
memory pointer, this uses a class to access resource data regardless of its
underlying form.
2014-06-25 04:25:36 -07:00
Randy Heit
170284ad57 - Added Gez's HMI/XMI division fixes, and partially the XMI tempo fix (not currently used).
SVN r3377 (trunk)
2012-02-21 20:19:25 +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
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
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
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
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