Falcosoft wrote on 2024-08-01, 22:16:Hi,
1. No, it's not open source but a closed source freeware.
2. The structure is right but the description at the 'Bank offset' […]
Show full quote
Spesek wrote on 2024-08-01, 16:51:Hi Zoltan (or Falcosoft), […]
Show full quote
Hi Zoltan (or Falcosoft),
I've discovered your program about a year ago, and it has been super useful to me, thank you so much for creating it!
Now that I'm creating my own SF2 synth, I have a few questions regarding the features of FSMP6:
- Is there a source code available? Or is it freeware, but closed source?
- Did I correctly understand how embedded .rmi files were implemented? If not, can you share more details about them?
- How does the .sfogg soundfont work? (the bundled soundfont). It seems to be an sf2 but with ogg vorbis compression. How do sample headers work?
- How does the .xm to .mid + .sf2 conversion work? Did you do it yourself or is it some other program?
Looking forward to hearing from you,
spessasus
Hi,
1. No, it's not open source but a closed source freeware.
2. The structure is right but the description at the 'Bank offset' section is not. The used target bank (offset) is either 0 or 1 depending on the settings of the 'Real Time Loaded SF2 Default Bank' settings in the Device settings dialog (BassMidi related settings at the right side of the dialog). I wrote about Mid+SF2 file pairs in general not so long ago. This also applies in part to rmi files with embedded SF2:
Re: Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
3. Yes, sfogg files are SF2 files with ogg/vorbis compresssed samples. They are natively supported by Bassmidi. You can use the BASS_MIDI_FontPack() function to create SF2 files with compressed samples.
https://www.un4seen.com/doc/#bassmidi/BASS_MI … I_FontPack.html
You should ask Ian at https://un4seen.com about the internals. In BassMidi's documentation the format is mentioned as 'SF2Pack'.
4. In MidiPlayer's package you can find the mod2midi.exe converter program. It was written by me but it has not been actively maintainded for a rather long time. It is called by Midiplayer.exe when you open mod/xm files with the player.
PS:
Another little correction regarding point 2. The outer INFO chunk is independent from the SF2 INFO chunk so it does not have to be a copy of it (but it is not forbidden either). The whole idea is that it can provide an info block about the whole RiffMidi package not just about the embedded SF2. So it can be even expandable with custom fields in the future (e.g. with target Bank info etc.)
Thanks for your detailed response Zoltan.
I would like to address it here.
About the bank offsets:
What about midi with embedded preset at bank 1?
My program currently produces .rmi files with bank offset of 1 (as the soundfont is embedded) and for example when the midi wants preset 1:80 (square), it makes it 2:80.
This seems to work with your program as well. I've uploaded 2 RMIs here: https://filetransfer.io/data-package/r0Y31KbQ#link
About sfogg:
It sounds very similar to The SoundFont3 Format which spessasynth supports (and so does FSMP6, since the RMIs I uploaded use ogg vorbis and it can read them no problem)
But trying to load sfogg with spessasynth causes the samples to sound like whitenoise, meaning incorrect offsets. So I'll try to reach out to Ian as you suggested.
About mod2midi:
It's a super cool piece of software! Though, it seems to be a bit incorrect with the samples and pitch bends.
Try unreeal superhero 3 and compare it with OpenMPT or VLC. it sounds a little off. It would be great if you could fix it, but if it's not your priority, I completely understand.
About your second post:
Yes, spessasynth currently doesn't support mixing soundfonts, although I've added an unpolished version of it that's hidden away. But adding a sort of "override soundfont" sounds simple enough, thanks for the suggestion!
PS:
The RMIDIs with embedded SF2 are super cool IMO. They could fix the biggest problem of MIDI: different sounds across different devices.
Also exporting them with the Sf3 format (Ogg vorbis compression) and trimmed samples like my program does, the is smaller to something like a wave file of the same length!
Maybe if we could get the big players like VLC and fluidsynth to support them, they could become mainstream. What do you think?
Thanks again for your response,
spessasus