Changelog of MixerX-exclusive changes ------- It is an additional changelog file. It extends the CHANGES.txt that lists changes done at the mainstream SDL2_mixer library. 2.6.0: [dev] * Added new calls: Mix_ADLMIDI_getAutoArpeggio(), Mix_ADLMIDI_setAutoArpeggio(), Mix_OPNMIDI_getAutoArpeggio(), Mix_OPNMIDI_setAutoArpeggio(), Mix_QuerySpec() * Fixed memory damages and crashes while playing XMI files * Added support for the experimental libEDMIDI synthesizer * GPL and LGPL-licensed libraries will be disabled by default (They can be re-enabled using `-DMIXERX_ENABLE_LGPL=ON` and `-DMIXERX_ENABLE_GPL=ON` CMake options). * Added the FFMPEG support to play some audio formats supported by it, for example, AAC, WMA, ALAC, and OPUS inside WebM container, etc. (Use `-DUSE_FFMPEG=ON` to enable it) * Fixed te detection of EA MUS files * The default bank for the libOPNMIDI has been updated. * Added an ability to switch tracks on the fly while playing multi-track music files (such as NSF/HES/GBM/etc. chiptunes and XMI MIDI files) * Fixed the confusion of the selected banks and the chips number at ADLMIDI and OPNMIDI. * Fixed several issues * Stabilized work of the Alternative Native MIDI on Windows. * Added the PXTONE library to support playback of .pttune and .ptcop files * Fixed detection of FLAC files that starts with an ID3 tag. 2.5.0: (2021-09-21) * Added std-vorbis library as an alternative for OGG Vorbis streams * Added minimp3 codec library for MP3 * Added an ability to mute individual channels/tracks of MIDI/Tracker/Chiptune musics, added Mix_GetMusicTracks() and Mix_SetMusicTrackMute() calls * Added the support for effects on music streams * Added an ability to play multiple parallel music streams, including the multi-track and cross-fade ability. * Added new calls: Mix_HookMusicStreamFinishedAny(), Mix_HookMusicStreamFinished(), Mix_RegisterMusicEffect(), Mix_UnregisterMusicEffect(), Mix_UnregisterAllMusicEffects(), Mix_SetMusicEffectPanning(), Mix_SetMusicEffectPosition(), Mix_SetMusicEffectDistance(), Mix_SetMusicEffectReverseStereo(), Mix_PlayMusicStream(), Mix_FadeInMusicStream(), Mix_FadeInMusicStreamPos(), Mix_VolumeMusicGeneral(), Mix_GetVolumeMusicGeneral(), Mix_CrossFadeMusicStream(), Mix_CrossFadeMusicStreamPos(), Mix_PauseMusicStreamAll(), Mix_ResumeMusicStreamAll(), and Mix_ModMusicStreamJumpToOrder() * Added the Mix_SetMusicFileName() call to set the displayable filename manually. * Added the support for the FluidLite library * Resolved the linking confusion when some libraries got disabled * Fixed the improper buffer usage at libADLMIDI and libOPNMIDI modules, the WASAPI support is now better for those libraries. * Added an alternative Native MIDI backend for the Windows platform: it allows to change position, allows reporting the current time position, allows loop points like libADLMIDI and libOPNMIDI can add a volume workaround to prevent the volume changing of the entire application. * Added an ability to require specific loop counts for GME songs that support that * Fixed an incorrect MPG123 seek when sample rates of stream and file aren't match * Added an ability to change Timidity config on the fly * Renamed Mix_GetMusicTotalTime() into Mix_MusicDuration() * Added a returning of duration for Timidity (by Matthias Gatto, backported from https://bugzilla.libsdl.org/show_bug.cgi?id=4715) * Reworked config API of Timidity, added new Mix_SetTimidityCfg() and Mix_GetTimidityCfg() calls (by Ozkan Sezer) * Added music tempo change API (initially works with MIDI, GME, and XMP) * Added API to change ADLMIDI and OPNMIDI's chip count to control performance and polyphony * Added new path arguments to load custom external banks for libADLMIDI and libOPNMIDI * Fixed MP3 file detection by raw data to don't rely on filename extensions * Use DosBox emulator by default in ADLMIDI * Added support for libXMP tracker music player library * Added more OPL/OPN emulators enum fields for libADLMIDI and libOPNMIDI 2.4.0: (2019) * DOSBox OPL3 emulator will be used by default on libADLMIDI for performance * Support for both FluidSynth 1 or 2 when detected any of them * Fixed some build configurations and system-wide codecs detection * Fixed inability to play some weird AIFF files * Added `int Mix_GetVolumeMusicStream(Mix_Music *music)` call to report the current music volume. 2.3.0: (2018-11-26) * Replace volume formula for GME, libADLMIDI, and libOPNMIDI * New API: Added full-panning stereo support of libADLMIDI and libOPNMIDI * New API: Added Neko Project II Kai emulator enum for libOPNMIDI 2.2.1: (2018) * Fixed inability to retrieve meta-tags and music file spec without playing begin * Added more music functions are receiving music instances (for future multi-music API) * Fixed destroyed WAV music playing when seeking unaligned positions 2.1.1: (2018-04-27) * Stabilizing * Added some OPNMIDI specific functions 2.1.0: (2018-01-20) * SDL Mixer X has been re-created from scratch as the official SDL Mixer received major and incompatible rework. * Custom resampler is no longer needed as SDL2 since recent times use a better resampler than previous versions. * Added CMake build * Added an ability to toggle MIDI playing libraries on runtime (NativeMidi, Timidity, or FluidSynth) * Added a full seek ability with "tell" and "length" commands * Added initial support for Meta-Tags to show Title, Artist, Album and Copyright captured from music files. * Added extra arguments in music path string to support per-song settings per some codecs (for example, play different MIDI files using another MIDI playing library) * Timidity: Added an ability to set a config search path, for example, inside of application directory API. * Added OPNMIDI MIDI sequencer based on YM2612 chip emulation. The full General-MIDI instruments bank has included. * Added functions to use custom bank files for ADL/OPN-MIDI sequencers (WOPL for ADLMIDI and WOPN for OPNMIDI) * WAVE: Added support for PCM24, PCM32, Float32, Float64m, ALAW, and MULAW sample formats, * AIFF: Added support for AIFF-C, also support for PCM24, PCM32, Float32, Float64, ALAW, and MULAW formats * WAVE & AIFF: Added full seek ability support (seek, tell, length) * MP3: More accurate MP3 file detection as some weird MP3 files can't be detected by existing code. Added usage of libID3tag library to fetch ID3 tags and find the begin offset inside of MP3 files as some MP3 files are causing libMAD to play ID3 data as actual encoded sound data that causes weird playback and later crash. To avoid this, ID3 parse is required to detect the beginning offset of audio data. * Fixed: SMPEG: Fix a broken build * Fixed: OGG: Fixed support for a pre-defined count of loops when loop tags are presented. * Warning fixes * Some C90 compatibility fixes * Internally: Added MIX_UNUSED() macro to mute warnings on various compilers 1.0.3: (2016) * Implemented own resampler to don't use buggy SDL Audio's resampler * Added support of path arguments to allow dynamic configuring of GME and MIDI playing per every file * ModPlug now is part of SDL Mixer X in the same project * Link all dependent libraries (libOGG, libVorbis, libFLAC, libMAD) statically 1.0.2: (2015) * Added ADLMIDI MIDI sequencer, an independent MIDI playing library that requires no extra bank files to play MIDI. * Added ability to dynamically switch MIDI device (ADLMIDI, Timidity, Native MIDI, FluidSynth) * Added meta-tag getting functions: Mix_GetMusicTitle, Mix_GetMusicTitleTag, Mix_GetMusicArtistTag, Mix_GetMusicAlbumTag, Mix_GetMusicCopyrightTag. * Added ability to build a VB6-Compatible version to use it as a standalone audio library 1.0.1: (2015) * Added GME library to support many game music formats * Added support of loop tags for OGG Vorbis files (based on Vorbis comments "LOOPSTART" and "LOOPEND" (also supported "LOOPLENGTH" for RPG-Maker compatibility)) * Added MIX_Timidity_addToPathList(const char *path) to customize Timidity path 1.0.0: (2015) * Added support for SPC playback * Attempt to fix resampling * Using QMake instead of Autotools to build the library