Thank you for the update and taking my suggestions into account.
You can take a look at my adlmidi repository and poke around in gen_adldata.cc
I already looked into bisqwit's adlmidi source before raising this thread, mainly to be able to read the entire FM patch strings.
I can look into this, but it does sound complicated, like I would need to define how certain settings can be stored in tag presets. I would probably implement it as something that is inserted into the tag database and read back on file open, and provide context menu options to save the current playback settings to the file, load settings from the file, and also clear the tagged settings.
1. I understand this is not trivial to implement, thus my alternative suggestion was to just use a simple text file. Upon loading a MIDI file foo_midi would need to check if such an text file, e.g. by the (hardcoded?) file name foo_mid.fmlst, does exist and load a predefined FM patch accordingly overriding current Foo_MIDI preferences. Each entry simply would look like this:
descent.mid, intmelo.bnk
credits.mid, rickmelo.bnk
...
2. In order to derive the internal FM patch filenames a meta field containing the currently used FM patch could be made available, which would be accessible from the file properties dialog upon playback . And/or simply provide the FM patch filenames in a documentation for the foo_midi plug-in.
3. Speaking of documentation I created one myself which I include in the foo_midi archive made available on MODLAND. Please have a look and let me know your thoughts, corrections, rejections and what not.
If you think it is good enough to be included with your main distribution please fell free to do so.
MIDI Synthesizer Host, for Foobar2000 v1.1x
(c) Chris Moeller, http://kode54.foobar2000.org
https://github.com/kode54/foo_midi/commits/master
https://github.com/kode54/adlmidi
Emu de MIDI alpha by Mitsutaka Okazaki, VST Plug-in Technology by Steinberg.
Adds decoding support for General MIDI files and RIFF MIDI files as well as several
proprietary MIDI formats.
Plays through either one of the following:
· Emu de MIDI, a built-in "Chip tune"-like synthesizer (default).
Does not require any soundfont.
· BASSMIDI, a BASS.DLL extension included with the plugin.
Supports SF2 soundfonts. Additional soundfonts may be defined with a text file
named <filename>.SFLIST, to be stored in the soundfonts folder. The text file
is assumed to be UTF-8 encoded unless it contains an UTF-16LE byte order marker.
You may copy the soundfont file names from Explorer and paste them into any
unicode capable text editor (e.g. Notepad). The first defined soundfont is the
base font, any following soundfonts add or replace instruments of the base font.
· Super MUNT GM, a built-in MT-32 emulator.
Requires the PCM and control ROMs for either MT-32 or CM-32L to be located in
the directory configured in preferences. The emulator will automatically be used
to play any MIDI file containing MT-32 system exclusive messages, you don't need
to select MUNT from the synthesizer list. Selecting MUNT only has an effect when
playing non-MT-32 files in which case it automatically uploads a General MIDI
emulation instrument set and enables an extended channel and polyphony mode to
support the full 16 MIDI channels as well as 256 voices worth of polyphony.
· ADL MIDI, a built-in OPL3 emulator.
Supports four-operator mode (FM synthesis) for playback of the proprietary MIDI
formats AIL = Miles Sound System (MSI), DMX (Doom MIDI Extension), HMI (Human
Machine Interfaces) and Creative IBK. Several built-in FM patches from a number
of known PC games are selectable from the MIDI decoder configuration page.
· FM MIDI, a built-in Frequency Modulation emulator.
Does not require any soundfont.
· VST instrument host.
Plays through VST instruments installed to %programfiles%\Steinberg\VstPlugins,
e.g. Edirol Hyper Canvas DXi VSTi. VST Instrument support requires a path to be
configured in the Advanced section of Foobar2000's preferences before opening
the regular MIDI decoder configuration page. It is recommended to only include
instruments you may wish to use in this directory.
Supported formats:
.GMF .HMI, .HMP, .KAR, .LDS, .MDS, .MID, .MIDS, .MUS, .RMI, .XMI
Q1: Btw, the drop down list still isn't wide enough preventing several strings from being fully visible, so why not use the full width of the MIDI preferences screen?
Q2: What does the adlmidi setting Chips exactly do?
Q3: What do you think of my suggestion to omit leading text AIL, OP3, SB etc from the drop down list and provide an alphabetical sorted list just made of the game titles, showing one title per row/entry only? Each entry would be linked internally to the appropriate FM patch. Do you think it is feasible and convenient? If so I could edit the file gen_adldata.cc accordingly and send it to you.
Q4: Thankfully you often provide the latest release of bassmidi.dll with foo_midi (where do you get it from?). Then again included bass.dll is rather old, v2.4.7 from 2012-10-02. Is this for a reason? Btw, latest release of bass.dll I could get hold of is v2.4.9.16 from 2012-12-18.