* added separate targets with static and dynamic loading of dependencies
* specified continuous integration runners explicitly
* replaced 32-bit Windows target with 64-bit debug configuration
- 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.
Recently I've got the report from @drfrag666 that at LZDoom some banks
do cause the dead freeze and that is probably because of the merge
problems. However, after my research, I found the bug at me: in a very
special case, a zero delay value may appear that will cause the stuck.
- Fixed a bug of DMX frequency, accidentally ported from DMX
- Removed the useless adlmidi_sequencer.cpp file
- Synchronize all files of chipset with OPL3-BE
Fixed an incorrect timer processing when using a real-time interface.
This bug does directly affect the case of ZMusic which does use of RealTime API of both libraries.
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?
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.
## 1.5.0 2020-09-28
* Drum note length expanding is now supported in real-time mode (Thanks to [Jean Pierre Cimalando](https://github.com/jpcima) for a work!)
* Added support for OPNA chip with Neko Project II Kai YM2602 emulator usage (Thanks to [Jean Pierre Cimalando](https://github.com/jpcima) for a work!)
* Added VGM file dumper which allows to output OPN2 commands into VGM file. (A new MIDI to VGM tool is now created with basing on libOPNMIDI)
* Fixed an incorrect work of CC-121 (See https://github.com/Wohlstand/libADLMIDI/issues/227 for details)
* Internality has been refactored and improved
## 1.5.0 2020-09-28
* Drum note length expanding is now supported in real-time mode (Thanks to [Jean Pierre Cimalando](https://github.com/jpcima) for a work!)
* Channels manager has been improved (Thanks to [Jean Pierre Cimalando](https://github.com/jpcima) for a work!)
* Nuked OPL3 1.8 emulator got some optimizations ported from 1.7 where they are was applied previously (Thanks to [Jean Pierre Cimalando](https://github.com/jpcima) for a work!)
* Reworked rhythm-mode percussions system, WOPL banks with rhythm-mode percussions
* Added Public Domain Opal OPL3 emulator made by Reality (a team who originally made the Reality Adlib Tracker) (Thanks to [Jean Pierre Cimalando](https://github.com/jpcima) for a work!)
* Added LGPL licensed JavaOPL3 emulator made by Robson Cozendey in Java and later rewritten into C++ for GZDoom (Thanks to [Jean Pierre Cimalando](https://github.com/jpcima) for a work!)
* Fully rewritten an embedded bank database format, embedded banks now supports a wider set (more than 127:127 instruments in one bank)
* Improved accuracy of the DMX volume model, include the buggy AM interpretation
* Improved accuracy of Apogee volume model, include the bug of AM instruments
* Improved accuracy of the Win9X volume model
* Removed C++ extras. C++-bounded instruments tester is useless since a real-time MIDI API can completely replace it
* Added AIL volume model
* Added Generic FM variant of Win9X volume model
* Fixed an incorrect work of CC-121 (See https://github.com/Wohlstand/libADLMIDI/issues/227 for details)
* Added HMI volume model (Thanks to [Alexey Khokholov](https://github.com/nukeykt) for help with research!)
* Added frequency models, assigned to every volume model: AIL, HMI, DMX, Apogee, 9X, and the Generic formula
thirdparty/dumb/src/helpers/resampler.c:927:43: error: invalid operands to binary expression
thirdparty/dumb/src/helpers/resampler.c:1132:13: error: called object type 'const float *' is not a function or function pointer
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