foo_midi is a foobar2000 component that adds playback of MIDI files to foobar2000.
It is based on foo_midi by kode54.
- 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.
- foobar2000 v2.0 or later (32 or 64-bit).
- Tested on Microsoft Windows 10 and later.
- Double-click
foo_midi.fbk2-component
.
or
- Import
foo_midi.fbk2-component
into foobar2000 using the "File / Preferences / Components / Install..." menu item.
You can find the user guide here.
To build the code you need:
- Microsoft Visual Studio 2022 Community Edition or later
- foobar2000 SDK 2025-03-07
- Windows Template Library (WTL) 10.0.10320
The following libraries are included in the code:
- BASS 2.4.17
- FluidSynth 2.4.7
- LibADLMIDI 1.6.1, Yamaha YMF262 and CT1747 (OPL3)
- LibOPNMIDI 1.6.1, Yamaha YM2612 (OPN2), Yamaha YM2608 (OPNA), Yamaha YM3438 (OPN2C) and YMF276 (OPN2L).
- LibEMIDI, Yamaha (OPLL), PSG and SCC
- LibMT32Emu 2.7.2, Roland MT-32, CM-32L and LAPC-I synthesiser modules
- Nuked-OPL3, Yamaha YMF262 and CT1747 (OPL3)
- zlib 1.3.1
To create the deployment package you need:
- PowerShell 7.2 or later
Create the following directory structure:
3rdParty
WTL10_10320
bin
x86
foo_midi
out
sdk
3rdParty/WTL10_10320
contains Windows Template Library (WTL).bin
contains a portable version of foobar2000 64-bit for debugging purposes.bin/x86
contains a portable version of foobar2000 32-bit for debugging purposes.foo_midi
contains the Git repository.out
receives a deployable version of the component.sdk
contains the foobar2000 SDK.
Issue the following commands:
git clone --recurse https://github.com/stuerp/foo_midi
cd foo_midi
git submodule update --recursive --init
Open foo_midi.sln
with Visual Studio and build the solution.
To create the component first build the x64 configuration and next the x86 configuration.
v3.2.2.1, 2025-09-30
- Fixed: LibOPNMIDI did not include the new low-level emulators due to a build configuration error.
You can read the full history here.
- Peter Pawlowski for the foobar2000 audio player.
- kode54 for the original foo_midi component.
- Un4seen Developments for the BASS audio library.
- Munt for a multi-platform software synthesiser emulating pre-GM MIDI devices such as the Roland MT-32, CM-32L, CM-64 and LAPC-I.
- Alexey Khokholov (Nuke.YKT) for Nuked OPL3.
- Vitaly Novichkov for libADLMIDI, libOPNMIDI and libEDMIDI.
- Mitsutaka Okazaki for Emu de MIDI.
- arch21 for testing and pointing me in the right direction with Secret Sauce and SF3 SoundFonts.
- Tom Moebert for FluidSynth.
- Valley Bell for MidiConverters.
- Jean-loup Gailly and Mark Adler for zlib.
- Spessasus for testing, advice and SpessaSynth.
- Zoltán Bacskó for testing, advice and MIDI Player.
- Murachue for MMFTool.
- yuno (Yoshio Uno) for fmmidi.
- John Novak for Nuked-SC55-CLAP.
� Home page: https://github.com/stuerp/foo_midi
� Issue tracker: https://github.com/stuerp/foo_midi/issues
� Issue tracker: https://github.com/stuerp/foo_midi/issues