Commit graph

58 commits

Author SHA1 Message Date
Braden Obrzut
95e6bfcd8c Better support for vendoring
- Allow ZLIB::ZLIB target to be provided by a unified build
- Added ZMUSIC_INSTALL variable to allow disabling of install rules (mostly due to how install(EXPORT) works)
- Static libraries don't need dllimport/dllexport on Windows
- Fixed: INTERFACE include directory was missing from zmusic/zmusiclite targets when using with add_subdirectory
- use_fast_math CMake function updated to allow source files to be passed (for GZDoom/Raze)
2021-05-31 22:22:57 +02:00
Cacodemon345
514ef6b528 Add handling for KeyPress events and avoid calling snd_seq_sync_output_queue twice 2021-05-25 13:57:46 +03:00
Cacodemon345
fee3bc352e Improve ALSA MIDI backend
1. No longer excludes builtin MIDI passthrough ports.
2. "GZDoom" references changed to "ZMusic Program".
3. No longer bugs out when MIDI playback is paused.
2021-05-25 13:57:46 +03:00
alexey.lysiuk
2b291705f2 - support dynamic loading of FluidSynth 2.2 2021-05-19 09:13:53 +03:00
alexey.lysiuk
0ee7aa9a5b - support arbitrary number of FluidSynth dynamic library names 2021-05-19 09:13:32 +03:00
alexey.lysiuk
69692696ec - load FluidSynth dynamic library once
https://forum.zdoom.org/viewtopic.php?t=70710
2021-05-19 09:12:59 +03:00
alexey.lysiuk
74ff273a3d - fixed file header in MIDI wave writer
https://forum.zdoom.org/viewtopic.php?t=72161
2021-05-05 11:20:02 +03:00
alexey.lysiuk
0c2ac8cbf3 - open MIDI wave output as binary file
https://forum.zdoom.org/viewtopic.php?t=72161
2021-05-05 11:20:02 +03:00
alexey.lysiuk
e79fdcef2c - forward callback to play device in MIDI wave writer
https://forum.zdoom.org/viewtopic.php?t=72161
2021-05-05 11:18:04 +03:00
alexey.lysiuk
0f1d954646 - avoid passing nullptr args to MIDI streamer
https://forum.zdoom.org/viewtopic.php?t=72161
2021-05-05 11:17:45 +03:00
alexey.lysiuk
e598ab7f1c - fixed file closing in standard MIDI file writer
source/zmusic/zmusic.cpp:506:2: warning: deleting pointer to incomplete type '__sFILE' may cause undefined behavior [-Wdelete-incomplete]
2021-03-19 10:04:41 +02:00
alexey.lysiuk
ba9e9da6e6 - fixed incorrect buffer size in wave writer device
See #23
2021-03-19 09:47:22 +02:00
Christoph Oelckers
6bcbc7aeb5 - multiply master volume for module player by 4.
The default here is far too quiet compared to the other players and needs compensation.
2021-03-14 08:34:56 +01:00
Christoph Oelckers
4c223a7de7 - fixed bad return for zmusic_wildmidi_config change. 2021-03-13 23:53:32 +01:00
Christoph Oelckers
ecad4aaf06 - added ZMusic_GetDeviceType function to return the currently active MIDI synth. 2021-03-13 23:53:07 +01:00
Braden Obrzut
b3c4b55dab Overhaul CMakeLists to conform with modern CMake
- Prefer target properties instead of setting variables whenever possible.
  A zmusic-obj target now exists to represent the commonality between zmusic
  and zmusiclite.
- Factored out as much as possible from global settings to per target settings
  which will make it easier to support using ZMusic as a submodule. Moved
  helper functions into a ZUtility.cmake module.
- We now generate and install ZMusicConfig.cmake so find_package(ZMusic)
  will work either automatically or given ZMusic_DIR is set.
- CPack is enabled although some refinement is still needed.
- Requires CMake >= 3.13 which is newer than I would normally like, but given
  how no one like to refactor these things it may be better to deal with the
  short term pain of going a little aggressive on the requirement in order to
  avoid having to make things ugly. Especially given that these scripts have
  a tendency to be copy/pasted into sister projects. CMake itself has very few
  dependencies so users of old Linux distros should be able to easily compile
  a supported version of CMake.
- On Windows CMake >= 3.15 is required for redistributable results.
- Cleaned out bits that were copied from GZDoom but not relevant to ZMusic.
2021-02-16 01:38:10 -05:00
Dennis Meuwissen
9e950c164b Add detection of Opus comment tags in Ogg files. 2020-11-04 11:23:51 +01:00
Vitaly Novichkov
8c9f402c31 ADLMIDI: Set the different gain per volume model
Different volume models were means louder or quiter sounding of the rest of notes in the song. And to avoid the mess between volume models, let's use different gain factor for each volume model?
2020-10-04 08:03:44 +02:00
Wohlstand
2f5332a461 ADL & OPN: Added SysEx calls
They are supported by those engines and needed for XG and GS specific controls: GS custom drums are working and supported!
2020-10-04 08:03:44 +02:00
Wohlstand
61f54f9487 ADLMIDI: Don't even try to load custom bank if disabled 2020-10-04 08:03:44 +02:00
Wohlstand
14c771f609 OPNMIDI: Fixed an inability to load a custom bank 2020-10-04 08:03:44 +02:00
Wohlstand
6b2e4b9153 Use the "Auto" volume model by default at libADLMIDI
After a small set of tests, it's fine to use the "AUTO" volume model by default.
Every embedded bank and every WOPL file has a setting of a volume model that matches to the behavior of the original OPL2/3 driver of each volume model.
2020-10-04 08:03:44 +02:00
Wohlstand
03afaef324 Update default bank and some settings of libADLMIDI 2020-10-04 08:03:44 +02:00
Cacodemon345
bff02053be Cleanup and add guards against malformed MIDS files 2020-09-14 15:38:26 +06:00
Cacodemon345
5bfa76c948 Add MIDS music format playback support 2020-09-14 00:58:12 +06:00
alexey.lysiuk
d821b0ef92 - fixed event processing in XMI reader
Event pointer was moved forward twice leaving arbitrary garbage data in the stream

https://forum.zdoom.org/viewtopic.php?t=69631
2020-08-22 13:01:56 +03:00
alexey.lysiuk
c1bf2f82a9 - fixed undefined CMAKE_INSTALL_... variables
https://forum.zdoom.org/viewtopic.php?t=68860&start=45#p1154952
2020-06-09 12:23:30 +03:00
alexey.lysiuk
823d9f5d7f - removed hardcoded include and lib directories from install target
This resolves #7
2020-05-30 11:29:38 +03:00
Cacodemon345
425ac9048d
Fix compilation on NetBSD (#8) 2020-05-30 11:26:23 +03:00
alexey.lysiuk
fbb3a50e9a - fixed wrong point values in loop tags parser
https://forum.zdoom.org/viewtopic.php?t=67812
2020-03-13 13:26:29 +02:00
alexey.lysiuk
4719ad44d8 - added ABI version to soname
This fixes #4
2020-03-02 17:27:33 +01:00
alexey.lysiuk
b9d22fb358 - do not expose module_progdir variable
If the same global variable is used by executable that linked to ZMusic dynamic library, both definitions may clash
For example, Linux builds of GZDoom and Raze could crash on exit because of double free, std::string destructor was called twice on the same module_progdir variable
2020-02-23 12:25:52 +02:00
alexey.lysiuk
b071c53aa5 - fixed switching of subsong for already playing GME song
https://forum.zdoom.org/viewtopic.php?t=67564
2020-02-22 13:12:11 +02:00
Christoph Oelckers
9097591879 - fix for loop tag parser. 2020-02-15 09:59:54 +01:00
Christoph Oelckers
92563245ce - added more loop tag labels as used by EDuke32's sound engine. 2020-02-11 20:02:59 +01:00
alexey.lysiuk
79effe2353 - fixed print function with va_list argument 2020-02-09 15:18:56 +02:00
alexey.lysiuk
edd802e655 - added ability to build static libraries
Dynamic libraries are still built by default
2020-02-09 12:30:29 +02:00
Christoph Oelckers
55921d0d34 - the last bit of needed exports for GZDoom.
The ADL banks must be accessible to the menu for properly setting up this player.
2020-02-08 14:23:29 +01:00
Christoph Oelckers
ee291e37d0 - CD_Enable is also needed to implement ZDoom's CD player. 2020-02-08 13:55:30 +01:00
Christoph Oelckers
00bc98db2d - exported the CD utility functions used by ZDoom's CCMD interface.
Do not use unless handling some legacy CD Audio support!
2020-02-08 13:37:33 +01:00
Christoph Oelckers
5dca3403a1 - use C++11 features to delete unwanted methods. 2020-02-08 10:42:37 +01:00
Christoph Oelckers
645a8506e2 - fixed: StreamSong did not flag itself as stopped when non-looping playback ended. 2020-02-08 10:25:44 +01:00
Christoph Oelckers
7f63ad8707 - fixed uninitialized variables in decoders. 2020-02-08 10:25:08 +01:00
Christoph Oelckers
dc214dbdd6 - backported OPL init fix. 2020-02-08 10:07:52 +01:00
Christoph Oelckers
aa004f78a9 - removed garbage character. 2020-01-11 15:34:33 +01:00
Christoph Oelckers
5c8607c846 - removed the last use of the Alsa message function. 2020-01-11 15:17:00 +01:00
Christoph Oelckers
17d7942d02 - made the global interface c compatible. Added an empty C source so that incompatibilities immediately trigger compile errors.
- simplified the message printing interface to a single function.
2020-01-11 12:47:07 +01:00
Christoph Oelckers
463cd4e0c5 - updated the Alsa MIDI device.
Not tested yet.
2020-01-11 10:31:13 +01:00
alexey.lysiuk
e02e7fb1ca - enabled rpath explicitly on macOS 2020-01-07 13:14:56 +02:00
Christoph Oelckers
778d0c8faa - added a configuration record that can be used by the client to set up the needed data structures, allowing to deal with internal changes without having to recompile against a more recent version.
Also added the missing defaults for the Dumb config and renamed a few things.
2020-01-04 19:03:42 +01:00