foobar2000

MIDI Player

By: pqyt

foo_midi is a foobar2000 component that adds playback of MIDI files to foobar2000.
It is based on MIDI Player by kode54.

Features
  • Decodes General MIDI files (.MID, .MIDI, .RMI, .KAR) and several MIDI based formats. (.MIDS, .MDS, .HMI, .HMP, .MUS, .XMI, .XFM, .LDS, .RCP, .R36, .G18, .G36, .XMF/.MXMF, .MMF).
  • Supports several synthesizers, several of which do not require any additional files to play back music. The bundled synthesizers which do not require additional files may sound rather basic, though.
  • Supports FluidSynth SoundFont (.sf2) based synthesizer, including support for the newer compressed format. (.sf3). SoundFonts may be loaded in a simple, or even complex setup, using either basic .sflist text files encoded in UTF-8 format, but for now, it only supports a bare list of files.
  • Supports 32 and 64-bit VST instruments.
  • Supports dark mode.
Requirements
  • Tested with Microsoft Windows 10 or later.
  • foobar2000 v2.0 or later (32 or 64-bit version).

Current version: 3.0.0.0, released on 2025-07-19

Change log:

  • New: Resurrected yuno's fmmidi player.
  • New: User Guide [documentation](docs/README.md) (*Work in Progress*)
    • The default Programs definition file is located in the component directory but can be changed in the Preferences dialog.
  • New: CLAP host functionality. foo_midi can now use [CLAP ((CLever Audio Plug-in API))](https://u-he.com/community/clap/) MIDI plug-ins to render the audio stream.
    • Specify the directory containing CLAP plug-ins in the **Paths** preferences page.
    • Take a look at [Nuked-SC55-CLAP](https://github.com/johnnovak/Nuked-SC55-CLAP) for an example.
  • New: MIDI flavor `None` sends no SysEx messages to the player before playback starts.
  • New: **midi_player_ext** info field that contains the name of the active plug-in when a player supports it or the ADL, OPN and Nuked OPL3 emulator core.
  • New: FluidSynth can be configured using a configuration file. See [Configuration file](docs/README.md#configuration-file)
  • New: Detecting the extra percussion channel can be turned on or off in the Preferences.
  • New: Log level setting determines which foo_midi messages are written to the foobar2000 console.
  • Improved: Stricter interpretation of the RCP mute mode that prevents an RCP track from being included in the MIDI stream.
  • Improved: Updated LibMT32Emu to v2.7.2.
  • Improved: LibADLMIDI configuration
    • Moved to separate **FM Synthesis** page. All the advanced settings can now be set here.
    • Added Opal, Java, ESFMu, MAME OPL2, YMFM OPL2, YMFM OPL3, Nuked OPL2 LLE and Nuked OPL3 LLE as selectable emulator cores.
    • Fixed sorting in bank names combobox.
  • Improved: LibOPNMIDI configuration
    • Moved to separate **FM Synthesis*- page. All the advanced settings can now be set here.
  • Improved: Rewrote MuntPlayer to use LibMT32Emu API version 3.
    • Supports [Versioned ROMs](https://github.com/dosbox-staging/dosbox-staging/wiki/MIDI#mt-32-roms).
    • Samples are rendered as floating-point numbers.
    • Limitation: Most of options are still hardcoded.
  • Improved: Added a couple of MT32Emu settings.
  • Improved: ADL player uses LibADLMIDI 1.6.0 and 64-bit floating-point samples.
  • Improved: OPN player uses LibOPNMIDI 1.6.0 and 64-bit floating-point samples. WOPN bank can be set from a file.
  • Improved: Added setting to reverse the stereo channels of the LibMT32Emu player (default is on).
  • Improved: Added enable or disable reverb processing by the LibMT32Emu player (default is on).
  • Improved: Skip to First Note, Loop Count and Fade-Out Time can be set on the main Preferences page.
  • Improved: Lots of little fixes, code cleanup and code polishing.
  • Improved: VSTi player issues a warning whenever it's host executable `vshost32.exe` and `vshost64.exe` can't be found. Some releases of MS Defender are known to delete the file.
  • Changed Moved BASS MIDI, FluidSynth and LibMT32Emu settings to new **Wavetable** preference page.
  • Changed: All advanced preferences have been moved to a Preferences page. The current values will **not** be migrated.
  • Changed: Loop mode descriptions should better reflect their functionality.
  • Fixed: Preferences dialog should adapt to High DPI settings now.
  • Fixed: An old threading issue caused by allowing the MIDI channels to be enabled or disabled during playback.
  • Fixed: The LibMT32Emu player reversed the left and the right channels in the output.
  • Fixed: Changing the channel mask setting did not always stick.

Supported processor architectures: x86 32-bit, x86 64-bit.

Links

Download
View version history
Home page
Documentation
Discussion
Source code

More components

Browse all
Browse by author: pqyt
Tags: decoder, MIDI, synthesizer, VST

How to install a component?