-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE REQUEST] Don't forget other features involving bank LSB #9
Comments
How should SFe implementations be expected to behave when SFe banks are being combined with SF2.0x banks? Should we apply quirks mode on only the SF2.0x banks, or should "flat" (dual bank select) mode be applied? |
I thought SFe spec specified this |
In section 11.5.4 of the specification: "It will be standardised in the future depending on the most popular system", so nothing was written there. However, I think that it would be prudent to use the parameters that correspond to the What do you think? Do you think that this is the best approach, or is it too complicated? |
The soundfont manager is essentially just adding presets on top of others. Like if you open two soundfonts in polyphone, copy all presets from one to another and if the bank:program is conflicting, overwrite them. Since SF2 does not have bank select, I think this would mean using LSB hacks. Or we could go for a complex approach like:
|
Also, out of topic, but does SFe have a discord server or something like that? |
There is the SF server, but I don't really use it much anymore. I think that stgiga may have a link to it. |
My idea is to move all the XG hack stuff from the controller_control.js into the soundfont manager and/or preset search algorithm. The CC values sent by controller_control.js will always accurately reflect the status of the MIDI. In the soundfont manager, or whatever function searches for banks after a bank select instruction is sent, we then attempt to follow the suggested approach:
Remember that the term used by SFe is base preset fallback because we can't guarantee a "capital" preset (with MSB and LSB both zero), and also the term used in legacy SoundFont and SFe is "preset" rather than "tone". Apart from that, what we refer to as base preset fallback is equivalent to "capital tone fallback" used by other MIDI implementations. Despite the algorithm described in section 8.8 being relatively complex, we need to implement as much of it as possible, because after all, this is the reference implementation! Also remember about quirks mode - this is activated by using To help the soundfont manager keep track of whether a bank is SFe or legacy, we added a new property to the
This also makes it easier for us to properly implement the small differences in the various versions of legacy SoundFont 2.0x. We can ignore |
I give you full freedom on the implementation, it just can't break the existing GS/XG MIDIs with existing SF2 soundfonts. |
So, I've found where I want to move the xg hack code to, that being the Once the I also need to access the Then, I will use similar methods to temporarily disable the default modulator implementation quirks (Bassmidi-like chorus and reverb, and the five new default modulators) on only SFe files that use standards instead of quirks. Also, where can I find information about what hacks need to be implemented for gm2 and xg? And what soundfonts and/or MIDI files can I use to see if the quirks mode is still working properly? |
One thing to keep in mind that even though DLS supports LSB, we still use XG hacks for it. And here's a very quirky XG MIDI + SF2 that works differently on fluid and spessa, but we want to maintain spessa's quirks mode for this. It should serve as a good tester: Essentially it boils down to the drums being properly set and bank MSB being interpreted like LSB in this special case. |
Drag and drop the two into the current spessasynth implementation to see how they should behave. |
For spessasynth to accept the PR, other things need to also be adjusted, not just the synthesizer. That is:
I think that's all, so it's mostly related to bank LSB.
The text was updated successfully, but these errors were encountered: