4.5.0 (20210606):
Changes by Alice Rowan:
- xmp_load_module_from_callbacks and xmp_test_module_from_callbacks
added to api
- fix xmp_set_position et al. when used during loops, pattern delay
- make xmp_set_position() consistently clear pattern break/jump vars
- 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 (thanks to
Lionel Debroux for providing fuzz files)
- 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
Changes by viiri:
- fix samples corruption in STM modules
- support more versions of STM modules
Changes by Özkan Sezer:
- 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_memory() no longer accepts sizes <= 0.
- explicitly document that callers of xmp_load_module_from_file()
are responsible for closing their own file.
- 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 number of envelope points sanity check in IMF loader
- rewrite the UMX loader
- revise sanity checks to prevent oob reads in s404 depacker
- fix vorbis depacker to function properly on big endian systems
- fix windows static library 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
- fix Amiga build
- several code clean-ups
Changes by Carsten Teibes:
- fix lite build mod loader symbols
Changes by NoSuck:
- add new xmp_set_row() call to skip replay to the given row
- 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
Changes by Cameron Cawley:
- fix sanity check in Digital Symphony loader
- fix and enable the Coconizer loader
- support compiling for Windows with OpenWatcom
Changes by Ghabry:
- add xmp_test_module_from_memory and xmp_test_module_from_file
calls to api
Fix problems reported by Ralf Hoffmann:
- 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 problems reported by Lionel Debroux:
- fix PTM loader issues
- fix MED4 invalid sample load error
- fix NNA and DCT/DCA issues
Fix problems reported by Dennis Mulleneers:
- handle XM 16-bit samples with odd in-file data
Fix problems reported by Jay Garcia:
- fix smix sample allocation
- force reset of buffer state on player start
Fix problems reported by Vitaly Novichkov:
- fix Emscripten builds
- fix linkage errors with MSVC debug builds
Other changes:
- 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
- add new xmp_set_tempo_factor() call to set the replay tempo
multiplier
- fix XM keyoff with instrument
- fix loading xm instruments with more than 16 samples
pkglint --only "https instead of http" -r -F
With manual adjustments afterwards since pkglint 19.4.4 fixed a few
indentations in unrelated lines.
This mainly affects projects hosted at SourceForce, as well as
freedesktop.org, CTAN and GNU.
4.4.1 (20161012):
Fix issues reported by Saga Musix:
- fix MDL c5spd to preserve base periods
- fix MDL sample decoder loop with corrupted data
- fix MASI loader OPLH and PPAN subchunks parsing
Other changes:
- fix MacOS Tiger build issues (reported by Misty De Meo)
- fix sample loop corner case (reported by knight-ryu12)
- fix set pan effect in multichannel MODs (reported by Leilei)
- fix global volume on module loop (reported by Travis Evans)
- fix IT pan right value (by NoSuck)
- fix MASI effects based on OpenMPT PSM loader
- fix memory leak in XMs with 256 patterns
- fix anticlick when rendering only one sample
- fix anticlick in His Master's Noise instruments
- fix anticlick in MED synth instruments
4.4.0 (20160719):
Fix bugs caught in the OpenMPT test cases:
- fix XM arpeggio in FastTracker 2 compatible mode
- fix IT bidirectional loop sample length
- fix MOD vibrato and tremolo in Protracker compatible mode
Fix multichannel MOD issues reported by Leilei:
- fix XM replayer note delay and retrig quirk
- fix XM replayer channel pan
- fix MOD loader period to note conversion
Fix issues reported by Lionel Debroux:
- fix virtual channel deallocation error handling
- fix S3M global volume effect
- fix IT envelope reset on tone portamento
- fix IT voice leak caused by disabled envelope
- fix IT volume column tone portamento
- fix XM envelope position setting
- fix FT2 arpeggio+portamento quirk with finetunes
- fix mixer anticlick routines
- accept S3M modules with invalid effects
Fix issues reported by Saga Musix:
- fix 669 effects when no instrument number is specified
- fix 669 effects to be frequency-based
- fix 669 initial tempo
Other changes:
- fix S3M channel reset on sample end (reported by Alexander Null)
- fix Noisetracker MOD speed setting (reported by Tero Auvinen)
- fix IT loader DCA sanity check (reported by Paul Gomez Givera)
- fix IT envelope reset after offset with portamento
- fix bidirectional sample interpolation
- fix mixer resampling and tuning issues
- add Antti Lankila's Amiga 500 modeling mixer
- add support to filter effect E0 in Amiga mods
- add flags to configure player mode
- add option to set the maximum number of virtual channels
- add frequency-based "period" mode
- add support to IT sample sustain loop
- limit Oktalyzer modules to MOD note range
- remove broken synth chip and Adlib emulation suport
- code refactoring and cleanup
4.3.13 (20160417):
Fix bugs caught in the OpenMPT test cases:
- fix IT volume column fine volume slide with row delay
Other changes:
- fix MOD vs XM set finetune effect
- fix IT old instrument volume
- fix IT panbrello speed
- fix IT random pan variation left bias
- fix IT default pan in sample mode (reported by Hai Shalom)
- fix S3M set pan effect (reported by Hai Shalom and Johannes Schultz)
- code refactoring and cleanup
4.3.12 (20160305):
Fix bugs caught in the OpenMPT test cases:
- fix IT note off with instrument
- fix IT note recover after cut
- fix IT instrument without note after note cut event
- fix IT pan reset on new note instead of new instrument
- fix IT volume swing problems
- fix XM glissando effect
- fix Scream Tracker 3 period limits
- fix Scream Tracker 3 tremolo memory
Other changes:
- fix IT pattern break in hexadecimal (reported by StarFox008)
- fix S3M subsong detection (reported by knight-ryu12)
- fix S3M/IT special marker handling (reported by knight-ryu12)
- fix Galaxy Music System 4.0 song length (reported by AntonZab)
- fix tone portamento memory without note (reported by NoSuck)
- fix IT pan swing limits
- Add TrackerPacker v1 format converter
- Add TrackerPacker v2 format converter
- Add ProPacker 1.0 format converter
Fix bugs caught in the OpenMPT test cases:
- fix FT2 XM arpeggio clamp
- fix FT2 XM arpeggio + pitch slide
- fix XM tremor effect handling
- fix XM tremor recover after volume setting
- fix IT instrument after keyoff
- fix S3M first frame test in pattern delay
- fix Protracker tone portamento target setting
- fix Protracker arpeggio wraparound
- fix Protracker finetune setting
Other changes:
- fix range of MMD effect 9 (reported by Lamar McLouth)
- fix Visual C++ build (reported by Jochen Goernitz)
- fix invalid sample offset handling in Skale Tracker XM (reported by
Vladislav Suschikh)
- fix Protracker sample loop to use full repeat only if start is 0
- fix Scream Tracker 4-channel MOD fingerprinting
- fix lite build with IT support disabled
- fix build with gcc 2.95 in Haiku
4.3.10 (20151231):
Fix bugs reported by Coverity Scan:
- fix out of bounds access in IT/XM/MDL/IMF envelopes
- fix out of bounds read in STX effect decoding
- fix RTM maximum sample name length
- fix AC1D converter number of patterns underflow
- fix PRU2 usage of uninitialized data
- fix Vorbis depacker usage of uninitialized data
- fix negative array index read when setting position
- fix resource leak in MFP loader
- fix resource leak in Chiptracker loader
- fix resource leak in Startrekker loader
- fix resource leak in module load error handling
- fix event decoding in LIQ loader
- fix JVS command parameter in MED synth
- fix 669 effect decoding
- fix memory violation in LZX decompressor
- fix sanity check in PTM orders loading
- add sanity check to smix sample loading
- add sanity check to PP21 format converter
- add sanity check to P40 and P61A format converters
- add sanity check to Zen Packer format converter
- add sanity check to TP3 format converter
- add error handling to many decompressors
- add error handling to many I/O operations
- remove dead code from NO loader
- remove dead code from Soundtracker loader
- remove dead code from GMC format converter
- remove dead code from LZX decompressor
- remove dead code in virtual channel manager reset
- remove unnecessary seeks in format loaders
- prevent division by zero in memory I/O
- change IFF info ID from string to binary buffer
- better IFF error handling
Fix problems caused by fuzz files (reported by Jonathan Neuschäfer):
- add sanity checks to LHA depacker
- add sanity checks to MED3 loader
- add sanity checks to ABK loader
- add sanity checks to Fuchs converter
- add sanity checks to GMC converter
Other changes:
- fix IT envelope release + fadeout (reported by NoSuck)
- fix SFX effects 5, 6, 7, and 8 (reported by Lamar McLouth)
- fix pattern loading in Galaxy 4 and 5 (reported by Anton Zab)
- fix memory leak in LZW decompressor (by Chris Spiegel)
- fix tone portamento target setting (reported by Georgy Lomsadze)
- fix IT autovibrato depth (reported by Travis Evans)
- disable ST3 sample size limit (reported by Jochen Goernitz)
- fix crash in Prowizard error handling
- fix IMS sample loop start
- fix LIQ pan setting and surround channel
- add sanity check for IFF chunk size
- refactor ProRunner2 event decoding
4.3.9 (20150623):
Fix bugs caught in the OpenMPT test cases:
- fix IT tone portamento on sample change and NNA
- fix IT tone portamento with offset
Fix problems caused by fuzz files (reported by Lionel Debroux):
- add sanity check to RTM/MMD/MDL/DBM/SFX/MASI/DT loaders
- add sanity check to Starpack/Fuzzac converter
- add sanity check to Oxm/vorbis depacker
- add sanity check to lha/MMCMP/s404 depacker
- fix memory leak in vorbis decoder
Fix problems caused by fuzz files (reported by Jonathan Neuschäfer):
- add sanity check to IT instrument name loader
- add sanity check to IT loader instrument mapping
- add sanity check to AMF module parameters and event loading
- initialize IT loader last event data
Other changes:
- detect Amiga frequency limits in MOD (reported by Mirko Buffoni)
- fix problems in Amiga split channels (reported by Gabriele Orioli)
- fix global volume on restart to invalid row (reported by Adam Purkrt)
- fix Oktalyzer note slide effect (by Dennis Lindroos)
- fix Oktalyzer volume setting in split channels (by Dennis Lindroos)
- fix external sample mixer for IT files (reported by honguito98)
- allow short sample reads (reported by Adam Purkrt)
- address problems reported by clang sanitizer
4.3.8 (20150404):
Fix bugs caught in the OpenMPT test cases:
- fix pre-increment of envelope indexes
- fix IT note release at end of envelope sustain loop
- reset channel flags in case of delay effect
Other changes:
- fix MMD3 16-bit samples (reported by jbb666)
- refactor XM envelopes
- refactor IT envelopes
4.3.7 (20150329):
Fix bugs caught in the OpenMPT test cases:
- fix IT sample mode note cut on invalid sample
- fix IT sample mode note end detection
- fix IT envelope handling with carry and fadeout
- fix IT tone portamento with sample changes
- fix IT initial global volume setting
- fix IT keyoff with instrument in old effects mode
- fix IT filter maximum values with resonance
Other changes:
- fix IT random volume variation
- fix pattern initialization sanity check
- fix ++ pattern handling in IT loader (reported by honguito98)
- fix Soundtracker short rip loading (reported by Shlomi Fish)
- add IT high offset command (SAx)
- add IT surround command (S9x)
- add IT surround channel support
- add IT sample pan setting support
4.3.6 (20150322):
Fix bugs caught in the OpenMPT test cases:
- fix IT volume column volume slide effect memory
- fix IT default filter cutoff on new note
- fix IT filter envelope memory
Fix crashes with fuzzed files (reported by Lionel Debroux):
- add sanity check to MED2/3/4 loader
- add sanity check to STIM/GDM/DBM/LIQ/ICE/PSM/PTM/MGT loader
- add sanity check to MDL/RAD/MGT/IMF/RTM/DT/LIQ/DTM pattern loader
- add sanity check to OKT/IMF/MMD/MDL sample loader
- add sanity check to Archimedes Tracker format test
- add sanity check to Digital Symphony track loader
- add sanity checks to SQSH, bzip2, arc, lha, lzx and S404 depackers
- add sanity check for AMD/STX number of patterns
- add sanity check for DSYM/MMD1/MMD3 number of channels
- add sanity check for MMD1/MMD3 instrument type
- add sanity check for IT old instrument loading
- add sanity checks and fix memory leaks in the Vorbis decoder
Other changes:
- fix instrument number in channel initialization
- fix sample size limit (reported by Jochen Goernitz)
- fix loading of OpenMPT 1.17 IT modules (reported by Dane Bush)
- fix sample number limit (reported by Lionel Debroux)
- fix Oktalyzer split channel replay (reported by Dennis Lindroos)
- fix Oktalyzer sample loop (by Dennis Lindroos)
- fix Oktalyzer note slide up/down effect
- fix ThePlayer pattern decoding
- fix XM loading for MED2XM modules (reported by Lorence Lombardo)
- add support to Amiga split channel loop and volume setting
- add IT random volume variation
- add IT random pan variation
Fix crashes with fuzzed files (reported by Lionel Debroux):
- add sanity check for ST3 S3M maximum sample size
- add sanity check for sample loop start
- add sanity check for speed 0
- add sanity check for invalid XM effects
- add sanity check for maximum number of channels
- add sanity check for number of points in IT envelope
- add sanity check for S3M file format information
- add sanity check for maximum sample size
- add sanity check for invalid envelope points
- add sanity check for basic module parameters
- add sanity check for instrument release after load error
- add sanity check for XM header size
- add sanity check for XM/IT/S3M/MTM/RTM parameters and sample size
- add sanity checks to inflate and lha decompressors
- add more tests to 669 and NO file detection
- fix mixer index overflow with large samples
- fix prowizard data request response
- fix EU/NP1/NP2/NP3 prowizard depackers
- fix crash on attempt to play invalid sample
- fix infinite loop in break+delay quirk
- reset module data before loading module
Other changes:
- fix loop processing error in scan (reported by Lionel Debroux)
- fix minimum BPM value for MED (reported by cspiegel)
- fix sample loop adjustment (by Emmanuel Julien)
4.3.4 (20150111):
Fix bugs caught in the OpenMPT test cases:
- fix XM keyoff+delay combinations
- fix XM fine pitch slide with pattern delay
- fix XM vibrato rampdown waveform
- fix XM volume column pan with keyoff and delay
- fix XM pan envelope position setting
- fix channel volume and instrument initialization
- fix end of module detection inside a loop
Fix bugs reported by Francisco Pareja-Lecaros:
- fix MASI (PSM) volume command
- fix MASI (PSM) note number parsing
- fix Noisetracker note limit detection
Other changes:
- fix overflow in linear interpolator (reported by Jochen Goernitz)
- fix MTM invalid track load (reported by Douglas Carmichael)
- add ProPacker 3.0 loader
4.3.3 (20141231):
Fix bugs caught in the OpenMPT test cases:
- fix XM note delay volume with no note or instrument set
- fix XM out-of-range note delays with pattern delays
Other changes:
- fix XM envelope loop length (reported by Per Törner)
- fix big-endian detection in configuration (by Andreas Schwab)
4.3.2 (20141130):
Fix bugs caught in the OpenMPT test cases:
- fix IT invalid instrument number recovery
- fix IT note retrig on portamento with same sample
- fix XM portamento target reset on new instrument
- fix XM portamento with offset
- fix XM pan slide memory
- fix XM tremolo and vibrato waveforms
- fix MOD pattern break with pattern delay
- fix MOD Protracker offset bug emulation
- fix tremolo rate
Other changes:
- fix IT portamento after keyoff and note end
- fix IT fadeout reset on new note
- fix IT pattern row delay scan
- fix MOD/XM volume up+down priority (reported by Jason Gibson)
- fix MOD fine volume slide memory (reported by Dennis Lindroos)
- fix set sample offset effect (by Dennis Lindroos)
- fix Windows temp file (reported by Andreas Argirakis & Eric Lévesque)
- add emulation of the FT2 pattern loop bug (by Eugene Toder)
- allow loading of packed formats from memory
- allow loading of OpenMPT MOD files with large samples
- enable offset bug emulation by default for Protracker MODs
- code cleanup
4.3.1 (20141111):
Fix bugs caught in the OpenMPT test cases:
- fix IT filter envelope range
- fix IT envelope carry after envelope end
- fix XM note off with volume command
- fix XM K00 effect handling
- fix XM portamento with volume column portamento
- fix XM keyoff with instrument
- fix XM note limits
Fix bugs reported by Andreas Argirakis:
- fix MOD false positive for UNIC Tracker modules
- fix EMOD instrument finetune
- fix UNIC Tracker instrument finetune test
- fix NoisePacker1 loader
Other changes:
- fix IT tone portamento in first note (reported by Jan Engelhardt)
- fix XM invalid memory access in event reader
- fix STM empty note event read
- fix ABK loader test in Win32
- fix MOD period range enforcing (reported by Jason Gibson)
- fix ST2.6 speed effect (reported by Saga Musix)
- fix corner case memory leak in S3M loader
- fix retrig of single-shot samples after the end of the sample
- fix crash in envelope reset with invalid instrument
- fix module titles and instrument names in Mac OS X
- fix row delay initialization on new module
- refactor depacking code
- code cleanup
4.3.0 (20140926):
Fix bugs reported by Sami Jumppanen:
- fix MED4 instrument numbering
- fix MED effect FFF (turn note off)
- fix MED synth finetune effect
Fix bugs reported by Alexander Null:
- fix fine volume slide memory
- fix IT portamento after note end in sample mode
- fix S3M portamento after note end
Fix bugs caught in the OpenMPT test cases:
- add XM and IT envelope loop and sustain point quirk
- fix Amiga limits for notes with finetune
- fix XM invalid offset handling
- fix XM note release reset on new volume
- fix XM pattern loader to honor header size
- fix XM fine volume slide effect memory
- fix XM fine pitch slide effect memory
- fix XM finetune effect
- fix IT portamento if offset effect is used
- fix IT NNA on invalid sample mapping
- fix IT filter envelope index reset
- fix IT envelope carry on note cut events
- fix IT envelope reset on new instrument
- fix IT instrument change on portamento in compatible GXX mode
- fix IT unmapped sample parsing
- fix IT filter cutoff reset
Other changes:
- add API call to load a module from a file handle
- add API call to set default pan separation value
- add OpenMPT test cases to regression test suite
- add AMOS Music Bank loader (by Stephen Leary)
- refactor memory I/O calls
- read OctaMED annotation and song info text
- fix segfault in mixer caused by sample position overflow
- fix MED synth pitch slide reset on new note
- fix MED synth volume change during wait command
- fix MED synth envelope loop handling (reported by Stefan Martens)
- fix OctaMED SS default pitch transpose (reported by Karl Churchill)
- fix OctaMED instrument name loading
- fix XM, S3M, IT and MED offset effect handling
- fix IT fadeout and envelope reset on new virtual channel
- fix S3M shared effect parameter memory
- fix S3M default pan positions
- fix S3M set BPM effect with values < 32 (reported by Kyu S.)
- fix incorrect Noisetracker effect filtering (reported by Kyu S.)
- fix period limits for (possibly non-Amiga) Protracker clones
- fix loop counter reset on play buffer reset
- fix finetune effect
4.2.8 (20140714):
Fix bugs reported by Sami Jumppanen:
- fix OctaMED decimal volume decoding
- fix MED4 sampled instrument octave range
- fix mishandling of MED4 effect FFD
- fix MED synth waveform command CHD
Other changes:
- fix sequence number reset on player start
- fix stray notes in XM (reported by Andreas Argirakis)
- limit note number to avoid crash (reported by Bastian Pflieger)
- disable recursive file decompression
- add support for XM with ADPCM samples
- add OctaMED effect 2E
- fix MMD2/3 note event mapping
- fix XM set pan effect
- fix IT disabled instrument pan