Reply 1880 of 2176, by Falcosoft
- Rank
- l33t
Spesek wrote on 2024-08-02, 20:53:Thanks for your detailed response Zoltan. I would like to address it here. About the bank offsets: What about midi with embedde […]
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#linkAbout 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
Hi,
1. Yes, in this case all banks should be calculated with a +1 offset. So bank 1 becomes bank 2, bank 2 becomes bank 3, and bank 127 becomes 128 (a Drum bank!!!).
So this way you can also make melodic presets available at Drum channels. E.g. with a bank offset of 127 all banks of the soundfont from bank 1 are associated to drum channels.
Actually this is the way the Soundfont Bank Manager (sfman32) of hardware SF2 synths from Creative Labs always worked. Bassmidi also follows this logic.
So overall the logic behind the bank 1 as default is due to Creative demo files that most likely reflected the constrains of original SB hardware (bank 0 was in ROM and cannot be changed with regular sfman32 functions). Because of this Creative's demo files most of the time also presuppose a full GM bank at bank 0.
Modern software based SF2 synths have no such restriction and according to my experience so far most users expect custom soundfonts to be loaded to bank 0 by default. That's why there is an option for it in MidiPlayer.
But most likely the best solution would be a new field inside the outer info block (e.g. 'DBNK') of the rmidi file where you could define the destination bank/bank offset explicitly. If this field did not exist the bahaviour would be the current one (bank 1 by default but could be changed by the sofware) otherwise the explicitly defined value would be the destination bank.
2. Yes, you should definitely ask Ian. He is very helpful. He regularly answers even the most technical questions about Bass related stuff on the forum at un4seen.com.
3. I cannot promise anything regarding mod2midi 😀. BTW, Have you tried the latest version 6.4 of FSMP packaged with mod2midi v1.2.3? It fixed some pitch bend related errors. I hear no obvious problems with unreeeal_superhero_3.xm on latest version.
4. I'm not particularly good at convincing anyone about anything, but I could try to convince Ian about supporting rmidi files with embedded SF2 in Bassmidi.
I have absolutely no contacts to other projects like VLC and FluidSynth. So this would be your job 😀