WildMIDI Changelog

What's new in WildMIDI 0.4.6

Apr 11, 2024
  • A lot of player cleanup and refactoring, thanks to initial work by Azamat H. Hackimov, with addition of several safeguards and minor fixes.
  • Ability to choose which audio output backends to include in the build system: see the cmake script for the relevant WANT_??? options. Player's --help command line switch lists the available backends.
  • New native audio output backends for player: coreaudio for macOS, sndio for OpenBSD, netbsd (sunaudio) for NetBSD.
  • Improved pkg-config file generation in cmake script (bug #236).
  • Workaround a link failure on AmigaOS4 with newer SDKs (bug #241).
  • Other minor source clean-ups.
  • CMake project clean-ups. Cmake v3.4 or newer is now required.

New in WildMIDI 0.4.5 (Jan 14, 2023)

  • Fixed MUS drum channels 9 and 15 being swapped if the same file is played twice from the same memory buffer (bug #234).
  • Player: Fixed save midi reading wrong argv if there are no path seperators (bug #227).
  • Other code and build system clean-ups.

New in WildMIDI 0.4.4 (Mar 22, 2021)

  • Fixed integer overflow in midi parser sample count calculation (bug #200).
  • Fixed 8 bit ping pong GUS patch loaders (bug #207).
  • Fixed wrong variable use in reverb code (bug #210).
  • Reset block status of tty after playback (bug #211).
  • Fixed broken file name handling for 'save as midi' command during playback.
  • Clamp MUS volume commands (PR #226).
  • CMake project improvements (bugs: #214, #216, #217, #218) - cmake version 3.1 or newer is now required.

New in WildMIDI 0.4.3 (Nov 24, 2018)

  • New API addition: WildMidi_InitVIO(). It is like WildMidi_Init(),
  • but tells the library to use caller-provided functions for file IO.
  • See wildmidi_lib.h or the man page WildMidi_InitVIO(3) for details.
  • This was suggested and implemented by Christian Breitwieser.
  • Fixed Visual Studio optimized builds (bug #192, function ptr issue.)
  • Fixed a thinko in one of the buffer size checks added in v0.4.2.
  • Fixed possible out of bounds reads in sysex commands (bug #190).
  • Fixed invalid reads during config parse with short patch file names.
  • Do not treat a missing end-of-track marker as an error for type-0
  • midi files (bug #183).
  • Fixed bad reading of high delta values in XMI converter (bug #199).
  • Fixed a memory leak when freeing a midi (bug #204).
  • Fixed slurred/echoy playback at quick tempos on looped instruments
  • (bug #185).
  • Fixed certain midis sounding different compared to timidity, as if
  • instruments not turned off (bug #186).
  • Fixed compilation on systems without libm.
  • Support for RISC OS, Nintendo Switch and PS Vita.
  • Several clean-ups.

New in WildMIDI 0.4.2 (Nov 21, 2017)

  • Fixed CVE-2017-11661, CVE-2017-11662, CVE-2017-11663, CVE-2017-11664
  • (Bug #175).
  • Fixed WildMidi_Open() might read beyond buffer with too short inputs
  • (Bug #178).
  • Fixed a buffer overflow during playback with malformed midi files
  • (Bug #180).
  • GUS patch processing changes to meet users expectations (Bug #132).
  • Worked around a build failure with newer FreeBSD versions failing to
  • retrieve the ONLCR constant (Bug #171).
  • Fixed a minor Windows unicode issue (PR #170).
  • A few other fixes / clean-ups.

New in WildMIDI 0.3.8 (Jan 27, 2015)

  • Library: Fixed a seek-to-0 bug in order to cure an issue of truncated start
  • Player, OpenAL: reduced buffers from 8 to 4 so as to cure some output delay issues

New in WildMIDI 0.3.7 (Jun 2, 2014)

  • Plug a memory leak in case of broken midis.
  • Properly reset global state upon library shutdown.
  • Support for type-2 midi files.
  • Fix a possible crash in WildMidi_SetOption.
  • DOS port: Support for Sound Blaster output in player.
  • Uglify the library's private global variable and function names.
  • Build: Add option for a statically linked player.
  • Build: Add headers to project files. Use -fno-common flag.
  • Other small fixes/clean-ups.

New in WildMIDI 0.3.6 (Apr 5, 2014)

  • Fix some portability issues.
  • Fix a double-free issue during library shutdown when several midis were alive.
  • Fix the invalid option checking in WildMidi_Init().
  • Fix the roundtempo option which had been broken since its invention in 0.2.3.5 (WM_MO_ROUNDTEMPO: was 0xA000 instead of 0x2000.)
  • Fix cfg files without a newline at the end weren't parsed correctly.
  • Handle cfg files with mac line-endings.
  • Refuse loading suspiciously long files.

New in WildMIDI 0.3.5 (Mar 27, 2014)

  • Greatly reduced the heap usage (was a regression introduced in 0.2.3)
  • OpenAL support: Fixed audio output on big-endian systems. Fixed audio skips at song start.
  • OSS support: No longer uses mmap mode for better compatibility. This gains us NetBSD and OpenBSD support.
  • Worked around an invalid memory read found by valgrind when playing Beethoven's Fur Elise.rmi at 44100 Hz using the old MIDIA patch-set from 1994.
  • Build fixes for MSVC. Revised visibility attributes usage.

New in WildMIDI 0.3.4 (Feb 26, 2014)

  • DOS DJGPP support: This goes a long way to helping other DOS based applications like UHexen2.
  • MinGW support: This gains us win32 and win64 support using this toolchain.
  • New portable file and path-name system to handle cross-platform support.
  • Many bug fixes, code clean-ups and cosmetic fixes.

New in WildMIDI 0.3.3 (Feb 26, 2014)

  • default to hidden visibility and only export our API functions
  • windows lean and mean to help compile times on Windows

New in WildMIDI 0.3.2 (Feb 26, 2014)

  • Now with Microsoft Visual Studio support.

New in WildMIDI 0.2.3.5 (Dec 6, 2011)

  • Fixed Various build issues.
  • Cleaned up internal MIDI Storage
  • Fixed missing config.h includes
  • Fixed critical error with sysex parsing
  • Added multiple drum track support via sysex event
  • Added total_midi_time in WildMidi_GetInfo structure to return the total time stated by the midi
  • Fixed approx_total_samples in WildMidi_GetInfo structure to more accurately display the expected playing time.
  • Messed with the reverb a little while looking for something to do
  • Fixed and adjusted samples per delta calculations.
  • Added WM_MO_WHOLETEMPO, which will ignore fractional parts of a temp, and WM_MO_ROUNDTEMPO, which will round fractional parts of a tempo, options to WildMidi_Init.

New in WildMIDI 0.2.3.4 (Jul 31, 2010)

  • A critical release that fixes a bug that could make the library to continue processing well beyond the end of the midi.