Beyond GM - standard for instrument assignments

• May 11, 2012 - 17:26

One of the major limiters to any GM-based soundfont is the fact that GM defines a specific set of 128 "instruments", a good number of which are, shall we say, of limited interest to most people who might be interested in a new soundfont (has anyone complained lately about the "FX 6 (goblins)" sample in TimGM6MB?). In order to get results better than, say, FluidR3, I think it a given that we need more instruments than the standard GM set. Bass clarinet, baritone horn, straight/cup/harmon/bucket mutes for trumept & trombone, individual pizzicato violin, viola, cello. Some of this might be definable as MIDI controllers, the way the legato controller can in in theory be used to trigger slurred samples, but many of these sounds would presumably be separate instruments.

So, the question is, do we need to invent a new standard - GM-Plus or whatever - for how a soundfont should be organized in order to meet our needs? Or is there something out there already that we should adhere too? Obviously, there are soundfonts and other sample libraries that incorporate sounds above and beyond GM, but I don't know if there is some sort of standard they adhere to. If so, let's use it. If not, let's design it.


BTW, because a soundfont is a "monolithic" file, the really complete ones can get huge, and apparently exceed OS limits and/or the physical memory capacities of many computers. We'd probably also need to define appropriate subsets, so a user interested in orchestra sounds doesn't have valuable resources taken up by jazz saxophones, etc. I haven't played with MuseScore 2.0's ability to specify multiple soundfonts - could that be a way to create a set of smaller soundfonts (one for strings, one for woodwinds, one for brass, one for percussion, etc) and then only load the ones you need? Could information about which soundfonts are needed be made part of the score?

In reply to by Marc Sabatella

It seems to me that we are heading down the road Finale has trodden before us by including the Garritan Orchestra as an add on :)

Maybe the way forward is to use the Bank system I have outlined to produce a series of SoundFonts linked together under the GM Program Change System. So we would have Soundfont 1 - Pianos, Soundfont 2 - Bright Pianos, Soundfont 3-Electric Grands and so on.

The clever bit would be for MuseScore to load the appropriate banks in when the instruments are chosen in the Create Score dialogue, if the extended SoundFont system was installed.

In reply to by ChurchOrganist

I think I missed this first time around, so, this just a bump and acknowledgement for what I think are some very good ideas. I think it might also be worth looking at collections - the "All Pianos" collection, the "All Brass" collection, etc. but maybe these things really would be so large that having each instrument in its own soundfont really would make more sense? I have no idea what kind of numbers we are really looking at.

There are already two well recognised GM extensions in the music industry, namely Roland's GS and Yamaha's XG standards.

Of the two I am more familiar with the XG standard (having used a stack of 4 Level 2 XG sound modules for backing track production), but I also used a Roland JV1010 for some sound for that process, so I know a bit about the GS standard.

Basically the idea is that you take a GM instrument, and use that as a Basis for more instruments. Let's take Trumpet as an example - Sending a Program change of 57 will always give you a Trumpet sound, but there will be several banks of Trumpet sounds which you can choose from, so Bank 0 could be Orchestral Trumpet, Bank 1 could be Jazz Trumpet, Bank 2 could be Brass Band Cornet and so on. Similarly you can use Program Change 60 to provide several banks of different Muted Trumpets.

Both the Roland and Yamaha systems use this method, however I personally think the Yamaha system is slightly better organised as each bank has a category such as Bright, Muted, Decay and so on.

Roland's GS system became the basis for the GM2 standard, which is probably the way forward.

I would propose that we adopt this system - why reinvent the wheel :)


In reply to by ChurchOrganist

Sounds like a good start - I was familiar with the GS extensions, but didn't realize they had been standadized as agm2But what about instruments not included at all - eg, bass clarinet, baritone horn? And while GM2 provides a framework for the sort of things I mean, I still don't see things like pizzicato strings listed as options for the individual string banks. So we'd still want to find a more specific model if possible.

Also, of course, we need to make sure MuseScore can support this sort of bank switching.

In reply to by Marc Sabatella

Pizzicato strings are Program No 46 so you could have Pizz banks for each instrument

Bass clarinet would have it's own bank number Program number 72 - Clarinets
Baritone Horn would be somewhere in the Brass Programs

It seems to cope OK with both the XG and GS Soundfonts, only the XG Bank mapping is faulty and needs reorganising inside the Soundfont.

In reply to by ChurchOrganist


I think that supporting the suggestions above is an excellent Idea.
In addition to all the improvements above providing more nuance expressed VIA MIDI / Internal Synth. could also answer and I am certain many more such queries.

With respect to the MIDI and Synth, would there be some speed improvement by making selectable each I/O function that is if it isn't selected it isn't running, E.g. when you don't select Jack Audio with JACK MIDI enabled no audio is appearing at the I/O device A/D, but when you look at the Internal Synth the VU meter is still simulating sound, so code is still running?

e.g. enable /disable MIDI
Internal Synth

In reply to by Ron Southworth

Unfortunately, doing GM2 is not possible because the soundfont format can only do MSB banks but GM2 requires LSB banks in addition to MSB banks. So I support the use of GS.

I am working on a standard to include all of the GM2 (and XG) sounds in MSB banks, however.

Do you still have an unanswered question? Please log in first to post your question.