This is a brief overview of user-visible changes in AdPlug.

Changes for version 2.4:
------------------------
- Bug fixes:
  - Many fixes, cleanup, and refactoring across all players based on
    fuzzing tests. Huge thanks to Alexander Miller for these. There
    are too many to list here - please read the commit log.
  - Fixes to SurroundOPL getchip(), fixing missing note problems
  - Many code typo fixes (thanks to luz paz for these).
  - Make SOP player endian aware and many further fixes across players (thanks to Stian Sebastian Skjelstad)
  - Fix RAD2 player crashes with files referencing unused instruments
  - Added stress tests and many build fixes across platforms (thanks to Stas'M)
- New formats:
  - MUS,ADL: Add support for Coktel Vision game music files to Visual Composer player (thanks to Stas'M)
  - MID: Detect MIDI Type 1 multi-track files (thanks to Stian Sebastian Skjelstad)
  - PIS: Beni Tracker (thanks to Dmitry Smagin)
  - MTR: Master Tracker Loader (thanks to Dmitry Smagin)
  - A2M: Add new player for A2M and A2T (versions 1-14) (thanks to Dmitry Smagin)
  - D00: Add support for reheadered D00 songs (thanks to Misty De Méo)
  - PLX: PALLADIX Sound System
  - LD0: Add support for old LOUDNESS files that don't have MIDI instrument data
- Updated NukedOPL to master 730f8c238a152cb3314e46919789a666c9d81d82
- Updated ADL player to ScummVM version from Dec 7, 2020

Changes for version 2.3.3:
--------------------------
- New RAD player replacing the old one
- Bug fixes: (huge thanks to Alexander Miller for these)
  - CVE-2019-14690 - buffer overflow in .bmf
  - CVE-2019-14691 - buffer overflow in .dtm
  - CVE-2019-14692 - buffer overflow in .mkj
  - CVE-2019-14732 - buffer overflow in .a2m
  - CVE-2019-14733 - buffer overflow in .rad
  - CVE-2019-14734 - buffer overflow in .mtk
  - CVE-2019-15151 - double free and OOB reads in .u6m
  - OOB reads in .xad
  - OOB reads in .rix

Changes for version 2.3.2:
--------------------------
- Bug fixes:
  - FMOPL: Fix global variable pointer double-free (CVE-2018-17825)
  - HERAD: Fix compilation on GCC 4.2.1
  - ADL: Calling rewind() before update() causes access violation
  - Move OPL reset/init code to rewind() for some players

Changes for version 2.3.1:
--------------------------
- Fixed unconditional inclusion of "sys/io.h" on Linux
- Autotools improvement
  - Non-recursive Automake, improved parallelizability
  - Compatibility fixes for FreeBSD's pmake and OpenBSD's make
  - Out-of-source building

Changes for version 2.3:
-------------------------
- Bug fixes:
  - CMF: Fix uninitialised variable use (thanks binarymaster)
  - CMF: Handle invalid offsets without crashing
  - ROL: Prevent access beyond end of vector
  - MSC: Fix use of uninitialised variable
  - HSC: Handle out of range patterns more gracefully
  - MID: Fix for issue #2 - out of range array read
  - LDS: Use the tempo stored inside the Loudness-File instead of simply returning 70Hz
  - RIX: Fix several replay bugs (thanks to Palxex)
  - RIX: Big-endian fix by Wei Mingzhi
  - XAD: Tempo fix
  - Various other out of bounds array fixes, timing fixes, etc.
- New formats:
  - BMF: Easy AdLib 1.0
  - CMF: SoundFX Macs Opera
  - GOT: God of Thunder
  - HSQ/SQX/SDB/AGD/HA2: Herbulot AdLib System (HERAD)
  - MUS/IMS/MDI: AdLib Visual Composer ROL derivatives
  - SOP: sopepos' Note Player
  - VGM: Video Game Music
- Allow compilation on platforms that don't support real OPL hardware access
- Add support for compiling on Appveyor and publishing a NuGet package
- Add Visual Studio 2015 projects
- Add support for Travis CI builds
- Add new CRC16 and CRC32 tests
- Addition of WoodyOPL from DOSBox SVN (thanks to NY00123)
- Addition of NukedOPL (thanks to loki666 and nukeykt)
- Move from SourceForge to GitHub
- DRO player refactored (thanks to Laurence Myers and William Yates)
- Add (mono) OPL3 support to the surround/harmonic-effect OPL
- Fix occasional random noise in right channel when using surround OPL and Satoh synth
- Add display for ROL comment and instrument names
- Improve support for different Westwood ADL format versions
- Improve CMF transpose support (per-channel now)
- Autotools build environment updated

Changes for version 2.2.1:
--------------------------
- Bug fixes:
  - CMF: Fix crash on v1.0 files
  - DRO: Correct playback of early v0.1 files

Changes for version 2.2:
------------------------
- New format support:
  - JBM: JBM Adlib Music Format
  - CMF: New player (more accurate) for Creative Music Format
  - DRO: DOSBox Raw OPL v2.0 support
- Fixed current subsong rewind in D00 player.
- Added test case for ADL file format.
- Fixed replay bug in DRO player (thanks to Adam Nielsen).
- New surround/harmonic synth effect (sounds really nice!)

Changes for version 2.1:
------------------------
- New format support:
  - ADL: Westwood ADL File Format
- Added OPL3 support:
  - A2M: AdLib Tracker 2 versions 5-8
- All players are endian-clean now.
- Lots of security fixes (thanks to Luigi Auriemma).
- Fixed volume handling in AMD player.
- Fixed a buffer overflow in ROL player (thanks to HIGUCHI Daisuke).
- Fixed vibrato & volume slides in D00 player (thanks to Dennis
  Lindroos).
- Removed superfluous exit() call in RIX player (thanks to Martin
  Michlmayr).
- Enhanced generic Protracker player features:
  - Supports up to 32 channels
  - OPL3 output support
  - New behavior flags and commands

Changes for version 2.0:
------------------------
- New format support:
  - MSC: AdLib MSCplay
  - RIX: Softstar RIX OPL Music Format
- Added OPL3 support:
  - RAW: RdosPlay RAW
- Dual OPL2 and OPL3 support (OPL3 only in non-free version).
- This version is not binary-compatible with older versions!
  All linked applications need to be recompiled.
- License change: Ken Silverman permitted to relicense his
  emulator under the LGPL. It is included in the free distribution
  now.
- Changes to IMF player:
  - Supporting Adam Nielsen's tag format now.
  - Files ending in .IMF now have a default timer refresh rate of
    560Hz. All other files have a rate of 700Hz. Please rename your
    files accordingly or use the AdPlug database.
- CMF player supports rhythm mode now.
- S3M player handles repeating commands correctly now.
- MS Visual C++ and OpenWatcom build systems not actively supported
  anymore. They are still available in the contrib directory though.

Changes for version 1.5:
------------------------
- New format support:
  - XSM: eXtra Simple Music
  - DRO: DOSBox Raw OPL
  - LDS: LOUDNESS Sound System
- Added support for .adlib files to IMF player.
- Reverted fmopl OPL2 emulator to old LGPL'd version, so
  AdPlug is now completely free (LGPL) again. Please read the
  README file for details.
- Added Ken Silverman's YM3812 emulator again. The portability
  issues have been fixed.
- Added a test-suite.

Changes for version 1.4:
------------------------
- Documentation changed into Texinfo format.
- New, modularized file loading framework.
- Now using 'libbinio' for platform-independent binary I/O.
- Added database framework for storing music file information.
- Uses newest fmopl OPL2 emulator version 0.60 from MAME 0.66.

Changes for version 1.3:
------------------------
- Completely new build system for DOS and Windows.
- Centralized debug management.
- Added a whole bunch of new developer documentation.
- Developer documentation is now using troff formatting language.
- Much more flexible Protracker player.
- New or corrected IMF timer rates for the following games:
  - Duke Nukem 2
- New format support:
  - SNG: Adlib Tracker 1.0
  - CFF: BoomTracker 4.0
  - DTM: Defy Adlib Tracker
  - DMO: Twin TrackPlayer

Changes for version 1.2:
------------------------
- Added a whole bunch of new players:
  - SAT, ROL, SNG, XAD, XMS, MAD
- SA2 player now handles version 7 files.
- GCC 3.x compatibility.
- Compiles on FreeBSD (and maybe many more flavors).
- Now using GNU autotools for UNIX builds.
- New OPL disk writer that creates RdosPlay RAW files.
- Reordered source directory structure (removed players directory).

Changes for version 1.1:
------------------------
- Added MKJ, DFM and BAM players.
- Removed Ken Silverman's YM3812 emulator due to portability issues.
- Fixed memory leak in SNG player.
- Made AdPlug a real library.
- Added lots of documentation.
