Skip to content

Releases: libxmp/libxmp

libxmp 4.7.0

25 Feb 01:31

Choose a tag to compare

Checksums (SHA256):

b6251de1859352c6988752563d60983cb8aa9fd7dfe9f81b8bc6688da47f3464  libxmp-4.7.0.tar.gz
69967a7802d2d2f938347f6f9cd95232bf45a4623cbfcc196e37cdaefadc3974  libxmp-lite-4.7.0.tar.gz

Changes in version 4.7.0 (2026-02-25):

  • Increase maximum sampling rate (XMP_MAX_SRATE) to 768000.
    This increases XMP_MAX_FRAMESIZE to 384000. The tick buffers are now
    allocated using the player-provided rate instead of XMP_MAX_FRAMESIZE:
    the frame info buffer may also be much smaller than XMP_MAX_FRAMESIZE.
    In case of existing software misusing the old XMP_MAX_FRAMESIZE, the
    minimum value for mixer_data->total_size is the old XMP_MAX_FRAMESIZE
    for now.
  • xmp_seek_time now always seeks (even if the position is the same
    as the current position) and uses the start row detected by the scan.
  • New function: xmp_seek_time_frame, which attempts to seek to the time
    requested by the caller within frame precision. This is achieved by
    using xmp_seek_time then repeatedly calling xmp_play_frame until the
    next frame contains the caller-requested time. The caller can then
    use xmp_play_frame/xmp_play_buffer to render the requested frame.
    WARNING: this is more computationally expensive than xmp_seek_time.
  • New function: xmp_set_tempo_factor_relative, to set a relative
    tempo factor without clobbering the module's tempo factor.
  • New function: xmp_get_tempo_factor, to get the base tempo factor
    set by loading a module or by xmp_set_tempo_factor.
  • New function: xmp_get_tempo_factor_relative, to get the relative
    tempo factor set by xmp_start_player/xmp_set_tempo_factor_relative.
  • New API define: XMP_FORMAT_32BIT for xmp_start_player to enable
    32-bit integer output.
  • New API define: XMP_INST_NO_DEFAULT_PAN for xmp_subinstrument::pan
  • New API defines: XMP_MARK_SKIP and XMP_MARK_END for xmp_module::xxo
  • Add support for Pack-Ice ("Ice!", "ICE!") depacking.
  • Add support for Software Visions DMF (Apocalypse Abyss MOD variant).
  • Replace kernel list helper in iff.c with custom list management
    to fix numerous otherwise unfixable KallistiOS redefinition warnings.
  • All internal module time/duration calculations are now in doubles
    (fixes off-by-one module time on final tick of some modules).
  • IFF format loading is now more permissive toward errors in the IFF
    tag structure, fixing some broken modules that would load for 64-bit
    Linux builds but not for Windows.
  • Fix sample name, restart position, note 0 loading, and pattern count
    calculation for Images Music System modules.
  • Fix XM volume effects cxx/dxx accidentally having effects memory.
  • Fix FAR volume and note edge cases (Prescience/aurora.far pos. 16).
  • Fix Real Tracker RTM maximum pattern row count, various effects
    translations, initial panning and sample panning, sample base volume,
    non-delta coded samples, and instrument flags.
  • Correct default of sample default panning values to -1 (no default
    panning) for most module formats.
  • Fix DigiBooster Pro sample default panning.
  • Fix DigiBooster Pro note 0x1f (key off) and misc. other tidying.
  • Fix Funktracker sample default panning.
  • Fix FunkTracker Fk** and DOS32 initial channel panning.
  • Fix FunkTracker notes 0x3d (partial fix) and 0x3e.
  • Fix FunkTracker injecting sample default volume into events, causing
    most notes to play at slightly wrong volumes.
  • Fix Galaxy Music System 4.0 sample default panning.
  • Fix Imago Orpheus IMF sample default panning.
  • Fix Imago Orpheus IMF note 255 (no note, not key off).
  • Fix Imago Orpheus IMF Ixx/Jxx/Kxx/Lxx memory, Axy when x and y != 0.
  • Fix Liquid Tracker LIQ sample default panning.
  • Simplify read_event_mod, read_event_st3, read_event_ft2,
    read_event_med sample default volume handling.
  • MED "hold symbols" now apply the referenced instrument's default
    volume for modules from OctaMED 3.00+ and don't apply any default
    volume for modules from prior versions.
  • Fix MED hold/decay implementation and add support for command 8.
  • Fix MED synthetic instrument waveform table speeds.
  • Fix MED module duration for modules using command 1E (pattern delay).
  • Fix MED loading of InstrExt data when s_ext_entrsz is 2.
  • MED: only load long repeat fields for MMD3 modules.
  • Anticlick decay curves are now applied after IT note cut, DCA note
    cut, IT effect S70 (etc.), and API-requested position changes.
  • XM, MOD: remove QUIRK_FINEFX from QUIRKS_FT2.
  • XM: channel fade rate is only copied from the instrument on rows
    with note + ins. + no toneporta/K00.
  • XM: zero-length samples cut the channel like invalid instruments.
  • XM: do not cut on a no-instrument key off note if the preceding
    instrument was invalid.
  • XM: previous instrument's sample default volume is now applied for
    invalid instrument numbers beside a key off note.
  • XM: previous instrument's sample default panning is now applied for
    invalid instrument numbers.
  • XM: apply default volume, panning, and instrument fade rate for
    active invalid instruments.
  • XM: invalid instrument numbers now reset the envelope positions.
  • XM: valid instrument numbers with no note no longer set xc->ins,
    which would cause notes to play with the wrong instrument envelopes
    and could cause subsequent no-note instruments or invalid
    instruments to apply the wrong instrument's volume/panning.
  • XM: rows with an instrument number and K00 no longer reset fadeout.
  • XM: apply QUIRK_FT2BUGS to Fasttracker II clone modules.
  • XM: reimplement Fasttracker II note delay effect.
  • XM: FT2 tremor now resets on all delay rows, does not reset on
    instrument number + K00 rows, and is suppressed by instrument default
    volume and Cxx in cases where it is not reset. FT2 tremor no longer
    updates on note delay events before the delayed event is processed.
  • XM: load all keyoff notes as XMP_KEY_OFF (fixes keyoff + ins rows).
  • XM: keyoff without delay always immediately initiates fadeout, even
    if there is a volume envelope. The old implementation would sometimes
    delay the start of fadeout.
  • XM: keyoff without volume envelope sets the channel volume to 0
    instead of setting fadeout to 0. This is now performed on the tick
    where keyoff takes effect only (fixes volume effects not cancelling
    the volume cut when they should have).
  • XM: fix volume column set volume effects resetting fadeout
    (fixes Comic Bakery Remix position 35).
  • XM: fix Kxx persisting between rows and pattern delay interaction.
  • XM: fix note without ins# resetting fadeout position and state.
  • XM: detect more Modplug Tracker XMs via large unused instruments.
  • XM: handle out-of-range notes more closely to FT2.
  • XM: fix setting toneporta target with an active invalid instrument.
  • XM: implement FT2-style offset effect memory (QUIRK_FT2BUGS only).
  • Sum toneporta rates when toneporta is present in both effects slots
    in an event; FT2 bug emulation for double toneporta now zeroes the
    parameter of 3xx in the player instead of using a loader hack. This
    doesn't affect Ultra Tracker toneporta.
  • XM: fix slow loads/OoMs caused by not verifying the MPT text length.
  • XMF: toneporta is identical to Ultra Tracker toneporta (slightly
    affects max.xmf pos 13+, but the notes are out-of-tune either way).
  • Fix time tracking bugs in some complex pattern loop cases.
  • Fix time tracking bugs when Bxx+Dxx jumps within the same position.
  • Dxx (S3M/IT: Cxx) followed by Byy on the same row now jumps to pos Y
    row X for S3M, IT, ModPlug XM, and Skale Tracker XM modules.
  • IT: fix importing channel initial panning for muted channels.
  • IT: fix playing instruments with samples >=120 in the key map.
  • MTM: fix pattern break hex parameter.
  • PTM: actually fix pattern break hex parameter.
  • STM: always use 0 for pattern break parameter (ST2 ignores it).
  • STM: import ST2 tempo values as both speed and BPM.
  • GDM: don't zero channel volume for muted channels.
  • Fix xmp_start_player not unmuting non-muted channels (regression
    introduced in 4.5.0).
  • Minor Impulse Tracker loader performance improvements.

libxmp 4.6.3

11 May 08:55

Choose a tag to compare

Checksums (SHA256):

b189a2ff3f3eef0008512e0fb27c2cdc27480bc1066b82590a84d02548fab96d  libxmp-4.6.3.tar.gz
fa6465d8b911363ae602c7baaa625ca1f5223142d10bb4682029c4d2f630cb62  libxmp-lite-4.6.3.tar.gz

Changes in version 4.6.3 (20250511):

  • Fix crashes when xmp_set_position is used to set a negative position.
    Negative positions now correctly return -XMP_ERROR_INVALID.
  • Fix crashes when xmp_set_row is used to set a negative row.
    Negative positions now correctly return -XMP_ERROR_INVALID.
  • Fix hangs when xmp_prev_position is used on the first position of
    a sequence which is preceded by an S3M/IT skip marker.
  • Fix out-of-bounds reads when xmp_next_position is used at the end of
    a 256 position module.
  • Fix hangs when seeking to an end-of-module marker caused by these
    positions getting assigned a non-existent sequence.
  • Document xmp_set_position/xmp_next_position/xmp_prev_position
    interactions with xmp_stop_module/xmp_restart_module.
  • Fix stack underflow in Pha Packer loader (CVE-2025-47256).
  • Slight performance improvements for the Oktalyzer and SFX loaders.
  • Fix broken conversion of ProRunner 2.0 pattern data.
  • xmp_set_tempo_factor no longer alters frame time calculation for
    xmp_get_frame_info. Frame time is now updated to account for the
    new time factor after calling xmp_scan_module.
  • Fix loading XMs with some types of harmless pattern truncation.
    See: Jazztiz/ta-da-da-da.xm, Sonic (UK)/phuture.xm, et al.
  • Fix Poly Tracker pattern break hex parameter.
  • Fix Digital Tracker broken instrument finetune.
  • Fix Digital Tracker 2.03 position jump effect for 4 channel DTMs.
  • Fix pattern loop jump interactions with same row pattern jump/break:
    Scream Tracker 3.03b+; Impulse Tracker 1.00 to 1.06 IT;
    Impulse Tracker 2.00+ IT/S3M; Modplug Tracker 1.16 IT/XM/S3M;
    Imago Orpheus IMF/S3M; Liquid Tracker LIQ/S3M; Poly Tracker;
    Digital Tracker <=2.02 DTM/MOD; Digital Tracker 2.03 (partial);
    Digital Tracker 1.9 (partial); Octalyser.
  • Fix the pattern loop effect in Astroidea XMF loader.
  • Fix loading of Extreme Pinball modules.

libxmp 4.6.2

24 Feb 09:30

Choose a tag to compare

Checksums (SHA256):

acac1705be2c4fb4d2d70dc05759853ba6aab747a83de576b082784d46f5a4b9  libxmp-4.6.2.tar.gz
f4d03ea076c4beecd1c834d07cf7adadb6e680ae45dcc9cf8aff279c4748d003  libxmp-lite-4.6.2.tar.gz

Changes in version 4.6.2 (20250224):

  • Fix MED effect 1Fxy (delay and retrigger). The new implementation
    supports both delay and retrigger at the same time and repeats.
  • Fix MED effect FF3 (revert change from 4.6.1). The buggy version
    of this effect prior to OctaMED v5 is not currently supported.
  • Fix MED3 and MED4 time factor and tempos 1-10.
  • Fix MED4 effect 9xx (set speed).
  • Add support for MED3 and MED4 song files.
  • Better MED MMD tracker version fingerprinting.
  • Fix loading external instruments from the current directory.
  • Fix oxm modules with empty samples (e.g.: The Four Ages.oxm)
  • Fix some modules would be misidentified as Scream Tracker 2.
  • Handle IT modules with edit history but no midi configuration
  • Revert a bad CVE fix to the miniz inflate code
  • Add missing HAVE_DIRENT definition to Android makefile.

libxmp 4.6.1

01 Jan 00:52

Choose a tag to compare

Checksums (sha256):

af605e72c83b24abaf03269347e24ebc3fc06cd7b495652a2c619c1f514bc5cb  libxmp-4.6.1.tar.gz
d2096d0ad04d90556a88856a3a9e093d434ed3b6b6791907be73db7e2b9b7837  libxmp-lite-4.6.1.tar.gz

Changes in version 4.6.1 (2025-01-01):

  • The full library is now under MIT license
  • Add stereo sample loading support for IT, S3M, XM, MED, LIQ, and
    Digital Tracker (partial).
  • Add sample preamplification to filter mixers for high sample rates.
  • Add support for Ultra Tracker tempo commands.
  • Load Ultra Tracker comments instead of skipping them.
  • Implement support for Protracker instrument swapping.
  • Implement retrigger effects for MED, OctaMED, and Liquid Tracker
    where only one retrigger occurs. Liquid Tracker (new format) and
    Digital Symphony now allow retrigger values larger than 15.
  • Fix XM envelope sustain points that exist on a zero-length loop.
  • Fix XM extra fine portamento effect memory.
  • Fix XM portamento up and portamento down memory (only for modules
    where FT2 bug compatibility is enabled, for now).
  • Fix loading edge case STMs with an EOF byte of 2.
  • Fix loading Imago Orpheus modules with null instrument magic
    strings, bidirectional samples, and disabled default panning.
  • Faster IT loading by buffering pattern, sample, and comment reads.
  • Fix loop detection edge cases broken by S3M/IT marker scan bugs.
  • Add fix for IT break to module scan (was missed in libxmp 4.5.0.)
  • Fix restart position for >64k sample and Digital Tracker MODs.
  • Reset Invert Loop position when a new instrument is encountered.
  • MOD: make presence of invert loop override tracker ID guesses.
    M.K. modules within Amiga limits which use EFx invert loop are
    now IDed as Protracker.
  • Multiple Digital Tracker bug fixes:
    • Support for loading Digital Tracker 2.03 DTMs (MOD patterns).
    • Support for loading Digital Tracker 1.9 DTMs (VERS/SV19).
    • Better Digital Tracker version fingerprinting.
    • Fix Digital Tracker 2.03 global sample rate and bit depth fields.
    • Fix Digital Tracker 2.04 pattern note loading (was off-by-one).
    • Fix Digital Tracker instrument loops (loop end was off-by-one).
    • Allow patterns up to 396 rows in Digital Home Studio DTMs.
    • Support for Digital Tracker 1.9 "MIDI note" transpose.
    • Simulate Digital Tracker effects bugs where possible.
    • Fix loading of Digital Tracker module names (not always 32 bytes).
  • Liquid Tracker bug fixes:
    • [Old] Fix loading of module and instrument names (fixes the old
      format version of WASTETIM.LIQ).
    • [Old] Fix loading of instrument lengths/loops (32-bit, not 16-bit).
    • [Old] Fix loading of pattern notes and volumes (off-by-one).
    • [Old] Fix initial panning.
    • [Old] Most effects are now supported. H70/H6A is not yet supported.
      Fxx, if it was ever implemented, is not yet supported.
    • [New] Fixed Pan Control, Retrigger, Global Volume effects, and
      vibrato/tremolo waveform 3. P70/P6A is not yet supported.
    • [New] Fix incorrect bounding of notes that caused several LIQs
      to fail to load.
    • [New] Fix loading of pattern volumes (off-by-one).
    • [New] 16-bit samples with loops no longer cause a failed load.
    • [New] Fix loading of instrument global volumes.
    • [New] Add support for ping pong loops.
    • [New] Fix initial channel volume/pan tables for 0.00 LIQs.
    • [New] Support channel volume and instrument global volume gain
      functionality by doubling the mix volume once for each (4x total).
    • [Both] Stopped incorrectly applying QUIRK_S3MLOOP, QUIRK_VOLPDN,
      QUIRK_S3MRTG, and QUIRK_MARKER.
  • Fix loading of Poly Tracker (PTM) empty sample names.
  • Fix Real Tracker loader on targets where char is unsigned by default.
  • Fix out-of-bounds reads in His Master's Noise Mupp instruments.
  • Fix slow ProWizard testing.
  • Fix Paula mixer state leak after changing XMP_PLAYER_MODE.
  • Replace rand() with a built-in reentrant alternative.
  • xmp_set_tempo_factor now returns -XMP_ERROR_STATE when called prior
    to xmp_start_player (instead of causing crashes).
  • Fix mixer crashes caused by previously valid tempo factors after
    sample rate or BPM changes.
  • Passing NULL to xmp_set_instrument_path() now unsets the instrument
    path instead of crashing.
  • Merge song file instrument path detection routines.
  • Fix module scan pattern delay counting.
  • Add compatibility for non-standard Pattern Loop implementations:
    Scream Tracker 3.01b; Scream Tracker 3.03b+; Impulse Tracker 1.00;
    Impulse Tracker 1.04 to 2.09; Modplug Tracker 1.16; Digital Tracker
    <=2.04; Digital Tracker 1.9; Octalyser; Imago Orpheus; Liquid Tracker;
    Poly Tracker. (MOD, FT2, and IT 2.10+ were already supported.)
  • Fix XM envelope handling
  • Bug fixes to DSMI loader
  • Fix 16-bit sample check in MultiTracker loader
  • Fix finetune in MultiTracker loader
  • Fix XM restart position, so that it is possible to play
    "10 Days Of Abstinence.xm"
  • S3M: Detect PlayerPRO, Velvet Studio and old MPT versions
  • Optimize scan code for common case of no effects
  • Fixed numerous defects found by fuzzing.
  • Filter off html files when reading archives.
  • Change lha depacker to use a stripped down version of lhasa.
  • Merge several CVE fixes to depackers stb_vorbis backend.
  • Make the lite version buildable from git or full distribution.
  • Build system fixes and clean-ups. Misc code clean-ups.

libxmp 4.6.0

15 Jun 20:34

Choose a tag to compare

Checksums (sha256):

2d3c45fe523b50907e89e60f9a3b7f4cc9aab83ec9dbba7743eaffbcdcb35ea6  libxmp-4.6.0.tar.gz
71a93eb0119824bcc56eca95db154d1cdf30304b33d89a4732de6fef8a2c6f38  libxmp-lite-4.6.0.tar.gz

Changes in version 4.6.0 (2023-06-15):

  • Fix linkage with gcc when versioned symbols and LTO are enabled.
  • Cmake build system support.
  • Several build system updates.
  • Fixed numerous defects found by fuzzing.
  • Cleanups and refactoring of platform-specific code.
  • Multiple code cleanups.
  • Add Astroidea XMF format loader.
  • Implement S3M and IT mix volume.
  • Add IT MIDI macro filter effects support.
  • Fix for IT filter cutoff 127 on new note behavior.
  • Add missing IT filter clamp to mixer loops.
  • Fix IT duplicate note check to use the key prior to transpose.
  • Fix multiple IT playback bugs affecting, e.g. Atomic Playboy.
  • Fix IT tone portamento and offset.
  • Fix reverse sustain loop release bug, add IT effect S9F support.
  • Add Modplug ADPCM4 support for Impulse Tracker modules.
  • Improve anticlick performance and fix anticlick filter volume bug.
  • IT fade envelope reset should only affect volume envelope.
  • Fix Impulse Tracker envelope and fadeout order.
  • Replace bidirectional loop unrolling with reverse sample rendering.
  • Fix crash when xmp_set_row() is used on an IT end marker.
  • Fix NNA and tone portamento interaction with sample changes.
  • Add compatibility for Modplug Tracker preamp scaling.
  • Add tracker detection for ModPlug Tracker XMs, pre-alpha ITs.
  • New Protracker CIA and VBlank timing detection routine.
  • Fix detection for TakeTracker TDZx MODs.
  • Fix loading of Digital Tracker FA0x MODs.
  • Fix ASYLUM Music Format restart byte.
  • Galaxy Music System loading no longer needs including depackers
    to inflate MUSE container.
  • Fix >1MB S3M modules relying on the sample segment high byte.
  • New MIT-licensed Digital Symphony LZW decoder.
  • Add support for Digital Symphony sigma-delta samples.
  • Fix Digital Symphony effects and pattern loading issues.
  • Fix support for most Farandole Composer effects.
  • Implement Ultra Tracker tone portamento.
  • Fix MMD0 pattern loader to honor play transpose setting.
  • Multiple OctaMED fixes and support for MMDC packed modules.
  • Fix MED Soundstudio 2 default note events.
  • Fix MTM tempo effect and FX_SPEED scan bugs.
  • Add MTM module tempo mode detection and comments support.
  • Multiple fixes and updates for ST modules.
  • Move interpolation wraparound handling out of sample loader.
  • Don't increment voice position by step value at loop/tick end.
  • Several loading performance improvements.
  • Allow up to 255 sequences to be scanned.
  • Allow xmp_smix_play functions to play key off, cut and fade events.
  • Allow loading MED2 samples from the module directory.
  • Fix misc. bugs in the MASI 16 loader.
  • Integrate the OXM depacker with the XM loader.
  • Fix heap corruption in Coconizer loader with invalid sequences.
  • Fix MMCMP literal block unpacking.
  • Fix bad seeking behavior in MMCMP compressed blocks.
  • New permissive licensed Amiga LZX and ARC/ArcFS depackers.
  • Update XZ depacker with an MIT reimplementation.
  • Change several depackers to work without using a temporary file.
  • Replace inflate code with permissive licensed miniz.
  • Update the bzip2 depacker code to a newer 0BSD-licensed version.
  • Update to latest version of stb_vorbis depacker.
  • Relicensed XFD decruncher under MIT.
  • Fixes and cleanups for C++ compatibility.
  • Fix compilation for UWP platform.

libxmp 4.5.0

10 Jun 01:20

Choose a tag to compare

Checksums (sha256):

7847d262112d14e8442f44e5ac6ed9ddbca54c251284720b563c852b31f26e75  libxmp-4.5.0.tar.gz
19a019abd5a3ddf449cd20ca52cfe18970f6ab28abdffdd54cff563981a943bb  libxmp-lite-4.5.0.tar.gz

Changes in version 4.5.0 (2021-06-06):

  • explicitly document that callers of xmp_load_module_from_file()
    are responsible for closing their own file.
  • xmp_load_module_from_memory() no longer accepts sizes <= 0.
  • add new xmp_syserrno call to the api
  • xmp_get_format_list() now returns const char* const*, not char**
    (no ABI change)
  • xmp_test_module, xmp_load_module, xmp_set_instrument_path and
    xmp_smix_load_sample() now accept const char* path parameters
    (no ABI change)
  • xmp_load_module_from_memory() now accepts a const void* memory
    param (no ABI change)
  • xmp_load_module_from_callbacks and xmp_test_module_from_callbacks
    added to api
  • add xmp_test_module_from_memory and xmp_test_module_from_file
    calls to api
  • add new xmp_set_row() call to skip replay to the given row
  • add new xmp_set_tempo_factor() call to set the replay tempo
    multiplier
  • remove nonportable use of fdopen in xmp_load_module_from_file()
  • fix a seek issue with xmp_load_module_from_memory
  • fix memory-io functions' error handling
  • fix lite build mod loader symbols
  • fix windows static library builds
  • fix linkage errors with MSVC debug builds
  • fix Emscripten builds
  • fix win64 compatibility in ptpopen()
  • fix build with C89 compilers
  • fix issues related to visibility attributes
  • fix compatibility with old gcc, mingw, djgpp
  • fix warnings in configure script
  • fix Watcom C build on OS/2
  • support compiling for Windows with OpenWatcom
  • fix Amiga builds
  • fix xmp_set_position et al. when used during loops, pattern delay
  • make xmp_set_position() consistently clear pattern break/jump vars
  • fix vorbis depacker to function properly on big endian systems
  • avoid shell command injection when calling external unmo3 or unrar
  • fix volume event handling for FAR modules
  • fix GDM loader to correctly handle empty notes
  • fix GDM fine effects
  • fix incorrect handling of GDM speed effect
  • implement GDM surround effect
  • add support for DSMI 0.8 and 0.9 AMF modules
  • fix incorrect DSMI AMF volume and note 0x7f handling
  • fix DSMI AMF track 0 remapping bug
  • fix DSMI AMF speed effect and pan command conversions
  • fix IMAGO Orpheus channel panning and status values
  • fix S3M ADPCM4 samples
  • fix OctaMED 'tracker compatibility' tempos, more accurate OctaMED
    8-channel mode BPM tables.
  • ignore MED volume/slide effects with param of 0, fix speed bound.
  • improve MOD loader checks for Mod's Grave WOW files
  • fix Schism Tracker version date calculation
  • fix MED2 BPM handling
  • fix MED modules with pattern lengths > 256
  • fix MED instrument corruption
  • allow up to 512 rows in X-Tracker patterns
  • add support for DigiBooster Pro pan envelopes
  • fix DigiBooster Pro volume envelope number of points
  • fix fine effects for DigiBooster Pro modules
  • fix loading DigiBooster Pro modules with large sample chunks
  • fix IT bug where Cxx on same row as SBx would not be ignored
  • fix IT bug where Qxy would ignore the volume parameter
  • fix IT sample global volume and sample vibrato
  • fix two IT bugs related to note off and volume handling
  • fix event out-of-bounds reads due to invalid key values
  • fix multiple out-of-bounds reads/writes, memory corruptions,
    uninitialized reads and hangs in several loaders
  • fix xmp_release_module double frees when invoked multiple times
  • check external sample file names before opening them
  • make it possible to disable module depacker functionality
  • make it possible to disable prowizard module loaders
  • fix samples corruption in STM modules
  • support more versions of STM modules
  • fix number of envelope points sanity check in IMF loader
  • rewrite the UMX loader
  • revise sanity checks to prevent oob reads in s404 depacker
  • IT: T00 now repeats previous slide
  • prevent clobbering of muted channels' volumes in IT modules
  • clamp number of IT envelope nodes at load time
  • fix IT message (comment) length miscalculation
  • fix IT volume panning effect
  • fix mute status on player creation
  • fix sanity check in Digital Symphony loader
  • fix and enable the Coconizer loader
  • fix MMD3 instrument type sanity check
  • fix strictness of MOD pattern data tester
  • fix loading of XMLiTE XM modules
  • fix loading of ST modules with invalid names
  • fix PTM loader issues
  • fix MED4 invalid sample load error
  • fix NNA and DCT/DCA issues
  • handle XM 16-bit samples with odd in-file data
  • fix smix sample allocation
  • force reset of buffer state on player start
  • fix IT pattern delay volume reset bug (read row events only
    once per row)
  • fix volume, pitch and pan slides lagging behind one frame
  • fix tempo assignment in module scan to fix seek issues/crashes
  • fix double free in case of ADPCM sample load error
  • code refactoring and cleanup
  • fix XM keyoff with instrument
  • fix loading xm instruments with more than 16 samples
  • several code clean-ups