Ce forum permet à des personnes du monde entier de communiquer, c′est pourquoi les messages échangés sont en anglais.
-
Hi everyone!
While looking at the soundfont specification with a friend, we saw that the wBank and wPreset values, which determine the bank and preset numbers of presets in a soundfont file, are 16-bit values (rather then 8-bit values). So, the last 8 bits of each value in a soundfont file are normally unused.
My proposal is to use the unused 8 bits of the wBank value to encode the bank select lsb control change (CC#32), increasing the number of possible instrument spaces to just over 2 million.
This would be very useful, as this would allow proper XG or GM2 support, among other things, but getting other people to support this implementation might be difficult.
Maybe, if we implement it in Polyphone, we can make it an optional feature which can be enabled or disabled, to prevent confusion, because not all players would support this.
I hope you read all of this,
sylvia. -
I am the friend mentioned in the post (stgiga). It was a very interesting discovery!
-
sounds great! what about composing a piece for two million instruments in advance?
regards bottrop -
I think "WORD wPresetBagNdx;" It won't be enough to hold them all.
-
The main use for doing MSB+LSB via the full wBank utilization is storing General MIDI 2 and Yamaha XG patches properly, since both use LSB for banks. Sylvia has already made a proof-of-concept XG soundfont that uses this 16bit wBank discovery. Meaning no need to split banks just for storing XG right, what with its LSB use. This is a major feature that is very important to add.
The test soundfonts:
XG:
http://soundfonts.kor.ninja/Soundfont%20Research/XG%20soundfont%20reference.sf2
GM2:
http://soundfonts.kor.ninja/Soundfont%20Research/GM2%20soundfont%20reference.sf2 -
Interesting but both of these links give a 404 Not Found error!!!
csw900 -
Sylvia or t999clint must have renamed the folder. I didn't.
-
Thank you - the new link is OK
I need to spend some time looking further into this. I did not realise there were that may instruments - let alone playing them on polyphone.
However there is a problem - some of the instruments cause poly polyphone to crash - possibly because it is not using sufficiently wide integers internally. It would be a good idea to remedy this as soon as possible once the cause is found.
Also some of the samples leave a bit to be desired when playing a scale with the mouse.
csw900
Later: There are significant problems with ths idea when you consider how midi messages are transmitted. They are three bytes only thus the LSB and MSB have to be sent in two seperate messages and added together by the receiver. Unless this is carefully planned it will not work for two reasons: 1. Most midi receivers do not add these two messages because they do not expect to reveive them in this way. 2. Midi messages are subject to "out of order execution" by both senders and receivers - unless this is correctly dealt with the two messages will not necessarily arrive in the correct order. NRPN's also have this problem and unless special care is taken in the software design they are not correctly interpreted.
Also I think you will have a hard time convincing midi manufacturers that more than 16129 presets are needed in a sound font.
csw900 -
Hi CSW900,
I understand your concerns relating to the proposed new soundfont bank select format and the MIDI instruction format, and I decided to implement it in a way that is as backwards compatible as possible with older soundfont players.
It makes it easier if we consider the first and second bytes of wBank to be separate values with no connection. Since the soundfont format is little endian, the first byte is the least significant byte, so the first byte is what stores the banks 0-128 used in the current soundfont bank storage format. Since only the first byte of wBank is used, the second byte can treated as a completely different value. Therefore, it's not really "adding two values together", it's more like adding a parallel value which directly maps to bank select lsb, which isn't implemented in soundfonts.
Because Polyphone reads the 16-bit value of the wBank, instruments mapped in the way I proposed would appear to have a "bank number" of (256 * LSB) + MSB. If lsb was implemented as I described, the wBank would be read as two separate 8-bit values for each byte, one for msb and one for lsb. Therefore, not only order of the bank select commands would not matter (as an msb instruction does not affect the lsb value or vice versa), but the two bank select commands would not need to be called simultaneously.
Also, as a reminder, the goal is to enable XG or GM2 compatibility (~300-500 presets) rather than to have an extremely large number.
Thanks,
sylvia.
Edit: Because of the separate nature of the two bytes in the wBank field, msb and lsb commands do not need to be called together, they can be called separately. So if a file only calls msb, or only calls lsb, it will still work. -
Hi Sylvia
Just a quick response - I think you may be missing the point. There is no guarantee that both bytes of a bank select message will be sent. In my experience only one byte of the message is ever used in midi files or messages. Each message has its own identification byte i.e.0 for the MSB and 32 for the LSB. These messages may be received in any order and at any time. What Polyphone does is not relevent.
csw900
Later: Unfortunately Polyphone has no midi output so it is difficult to find out what is really happening with the bank select. (For example why does bank 128 select default percussion) One way could be to load the resulting sound font into a reliable synth such as Fluidsynth and see what it does. However even this synth is open to interpretation as it has always been a bit weak on reliably selecting banks. As far as I am aware what happens when banks above 127 are selected is not defined by any midi specification.
csw900 -
We made a test sf2 and a bit infographic
Test SF2: here (https://drive.google.com/file/d/1cerpko6kL4SctyHG9ozYFtwePmbHX7CW/view)
Based off of my libre JummBox SoundFont here (http://stgiga.itch.io/jummboxsoundfont) or here (http://musical-artifacts.com/artifacts/2722)
Connectez-vous ou inscrivez-vous pour participer à la discussion.
Polyphone a besoin de vous !
Polyphone est gratuit mais il y a des coûts associés à son site web et à son développement. Un petit coup de pouce aidera beaucoup.
Faire un don
Apprenez les bases
Voir le tutoriel
Haut de
page
page