The issue
The RIFF MIDI (.rmi) files can have embedded sf2 soundfonts in them, and VLC just ignores them.
Also I know that fluidsynth (which VLC uses for MIDI playback) doesn't support .rmi files natively. (see https://github.com/FluidSynth/fluidsynth/issues/1356)
This means that VLC has explicitly added support for these, which means that the format is supported, although incorrectly.
Some files use different channels for drums and drum maps specific to the soundfont, which breaks with every other soundfont except the embedded one.
Working software
I know 2 programs that read the embedded sf2 in the .rmi files correctly:
- Falcosoft's Midi Player 6 (Windows): https://falcosoft.hu/softwares.html
- SpessaSynth Midi Synthesizer: https://spessasus.github.io/SpessaSynth
I have several .rmi files for testing but am unsure how to attach them here. Please let me know how I can provide these files or if there is another method for sharing them with the development team.
Though the Falcosoft's Midi Player 6 comes with one of these, named "GRABBAG_EmbeddedSF2.rmi"
How to reproduce
- Get VLC
- Get an .rmi file with embeddedSF2. (For example the one bundled with Midi Player 6)
- Play it with SpessaSynth or MP6
- Try to play it with VLC and hear incorrect sounds
The bug isn't OS dependent, hence I'm posting this here. But I've tested it on Arch Linux and Windows 10.
Vlc version (arch)
Code: Select all
$ vlc --version
VLC media player 3.0.21 Vetinari (revision 3.0.21-0-gdd8bfdbabe8)
VLC version 3.0.21 Vetinari (3.0.21-0-gdd8bfdbabe8)
Compiled by builduser on (Jun 16 2024 20:52:10)
Compiler: gcc version 14.1.1 20240522 (GCC)
This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute it under the terms of the GNU General Public License;
see the file named COPYING for details.
Written by the VideoLAN team; see the AUTHORS file.