mrbumpy409 / GeneralUser-GS

A General MIDI SoundFont with a low memory footprint.
11 stars 0 forks source link

Missing instruments #5

Closed human222 closed 3 weeks ago

human222 commented 3 weeks ago

I'm currently testing GeneralUser-GS with X68000 emulation. While it sounds fantastic overall, the game "Detana! Twin Bee" generates a lot of warnings about missing instruments. I played until the floating island stage, in SC-55 mode.

Tested on Fedora 41 and FluidSynth with recommended .fluidsynth file, with RetroArch (px68k-libretro). MAME (standalone) also appears to have the same issue.

fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 5 [bank=13 prog=62], substituted [bank=0 prog=62] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 5 [bank=13 prog=56], substituted [bank=0 prog=56] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=91], substituted [bank=0 prog=91] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=51], substituted [bank=0 prog=51] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 5 [bank=13 prog=62], substituted [bank=0 prog=62] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 5 [bank=13 prog=56], substituted [bank=0 prog=56] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=91], substituted [bank=0 prog=91] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=51], substituted [bank=0 prog=51] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 5 [bank=13 prog=62], substituted [bank=0 prog=62] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 5 [bank=13 prog=56], substituted [bank=0 prog=56] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=91], substituted [bank=0 prog=91] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=51], substituted [bank=0 prog=51] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 5 [bank=13 prog=62], substituted [bank=0 prog=62] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=47], substituted [bank=0 prog=47] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=60], substituted [bank=0 prog=60] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=47], substituted [bank=0 prog=47] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=60], substituted [bank=0 prog=60] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=47], substituted [bank=0 prog=47] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=60], substituted [bank=0 prog=60] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=55], substituted [bank=0 prog=55] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=47], substituted [bank=0 prog=47] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=60], substituted [bank=0 prog=60] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=57], substituted [bank=0 prog=57] fluidsynth: warning: Instrument not found on channel 3 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=11], substituted [bank=0 prog=11] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 5 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 5 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=45], substituted [bank=0 prog=45] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=52], substituted [bank=0 prog=52] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=91], substituted [bank=0 prog=91] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=0], substituted [bank=0 prog=0] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=52], substituted [bank=0 prog=52] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=45], substituted [bank=0 prog=45] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=12], substituted [bank=0 prog=12] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=45], substituted [bank=0 prog=45] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=12], substituted [bank=0 prog=12] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 5 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 5 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=45], substituted [bank=0 prog=45] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=52], substituted [bank=0 prog=52] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=91], substituted [bank=0 prog=91] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=0], substituted [bank=0 prog=0] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=52], substituted [bank=0 prog=52] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=45], substituted [bank=0 prog=45] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=12], substituted [bank=0 prog=12] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=45], substituted [bank=0 prog=45] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=12], substituted [bank=0 prog=12] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 5 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 5 [bank=8 prog=29], substituted [bank=0 prog=29] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=45], substituted [bank=0 prog=45] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=52], substituted [bank=0 prog=52] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=91], substituted [bank=0 prog=91] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=0], substituted [bank=0 prog=0] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=52], substituted [bank=0 prog=52] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 2 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=45], substituted [bank=0 prog=45] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=12], substituted [bank=0 prog=12] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=1], substituted [bank=0 prog=1] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=45], substituted [bank=0 prog=45] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=12], substituted [bank=0 prog=12] fluidsynth: warning: Instrument not found on channel 4 [bank=8 prog=100], substituted [bank=0 prog=100] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=102], substituted [bank=0 prog=102] fluidsynth: warning: Instrument not found on channel 5 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 6 [bank=8 prog=44], substituted [bank=0 prog=44] fluidsynth: warning: Instrument not found on channel 1 [bank=8 prog=1], substituted [bank=0 prog=1]

mrbumpy409 commented 3 weeks ago

The MIDI file you are playing is trying to access instruments that don't exist in GeneralUser GS. To know which instruments are intended, you would need to know what MIDI device this MIDI file was written for. In this case, it is convention for the preset selection to fall back to the corresponding preset number on bank 0. GeneralUser GS aims to emulate the Roland SC-55 patch set + a few extras, so this behavior is not considered a bug in GeneralUser GS, and there are no plans to emulate later Sound Canvas devices or MIDI devices by other manufacturers.

human222 commented 3 weeks ago

The music was written for SC-55 and it sounds correct on a real SC-55. It literally says SC-55 in the game. Screenshot From 2024-11-04 20-55-40

mrbumpy409 commented 3 weeks ago

The bank & preset combinations in your posted log output do not exist on an SC-55. They require an SC-88Pro or SC-8820. The SC-55 and SoundFont standard handle missing instruments on higher banks in the same way—by falling back to bank 0.

human222 commented 3 weeks ago

Weird that it sounds correct on a real SC-55.

mrbumpy409 commented 3 weeks ago

For example, the instrument called on the first line (bank=8 prog=57) exists on SC-88Pro and SC-8820 as "Bs. Trombone", but this instrument doesn't exist on SC-55, so it falls back to "Trombone" (bank=0 prog=57).

So yes, it can still sound good on SC-55, since the GM standard was designed so that similar instruments on higher banks should share a preset with their closest bank 0 match. The difference between "Bs. Trombone" and "Trombone" might not be very noticeable and should still sound good on SC-55 or GeneralUser GS.

human222 commented 3 weeks ago

The difference is quite large.

GeneralUserGS: https://github.com/user-attachments/assets/2ad1a0b8-38bb-447a-8fbd-65b4ba45f99e

Real SC-55: https://www.youtube.com/watch?v=irNJlXS9t84

First stage starts at around 2 minute mark.

mrbumpy409 commented 3 weeks ago

Hmm... this seems to be a completely different issue. Several MIDI channels seem to be not playing at all. From the best I can tell—not having used this emulator—this would seem to be a MIDI playback/emulation issue, rather than a "missing instruments in the SoundFont" issue. For example, I cannot think of anything in GeneralUser GS that would cause entire MIDI channels to fail playback altogether. I'll have to look at it later when I get some time.

human222 commented 2 weeks ago

It turned out to be a FluidSynth issue which also won't be fixed. The conclusion is that FluidSynth is unsuitable for retro gaming because a lot of games have quirky MIDI files that make FluidSynth trip up. FluidSynth rigidly follows specs and can't handle this.

Fortunately, Falcosoft MidiPlayer works fine in Wine, so I would recommend Linux users to use that instead of FluidSynth. BASSMIDI has also been ported to Linux, so it is possible for someone to make a good native soundfont MIDI player as well.

mrbumpy409 commented 2 weeks ago

Aah, I figured it had to be something like that. Thanks for looking into it. :slightly_smiling_face: