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?