Using SoundFonts with QWS
by Raymond Grote

This article assumes you are familiar with basic use of QWS.

Many people own hardware synths that satisfy them or at least meet their needs. But let's say you don't. Let's say you are stuck with the Microsoft Wavetable synth, and you are tired of that. Either that, or you just want some more sounds and you don't want to have to pay large amounts of money for a synth that has them. In that case, SoundFonts may be just what you are looking for.

SoundFonts might also be an interesting addition to your MIDI setup even if you are not just limited to the Microsoft synth.

In order to use SoundFonts with QWS, there are two things you will need: one or more actual SoundFonts and then a means of playing them.


The SoundFont format has been around for several years now and provides the features found on most sample-based synths. The thing that really makes a SoundFont sound good, is not what it can do with its sounds, but it is the sounds themselves.

If you are curious as to what features SoundFonts have, you can easily find that with a bit of research. There is also software to help with creating or editing SoundFonts. there is still software being actively developed that can use SoundFonts, even though the SoundFont format is outdated.

If you don't yet have any SoundFonts to play with, the first thing you need to do is download one or more. Any GM, GS, or XG SoundFont will do for now. You can try different ones to see which suit your taste. You may find yourself switching back and forth between several different ones. You can also use specialized SoundFonts. These SoundFonts are not GM, they have their own custom instrument layout, so midis created with them will only sound good on that SoundFont alone. These are useful in their own right because they provide sounds that a standard configuration would not support.

Just a warning, SoundFonts cannot support XG very well because of the more complex bank structure of the XG standard. GS works considerably better, but I have yet to see a SoundFont that has all of the GS instruments. XG and GS probably weren't standards when SoundFonts were first introduced, but I don't know that for sure.

SoundFont Players

Below are several methods for making use of SoundFonts in QWS.

Method 1: Sound card

Some SoundBlaster and Creative sound cards, and maybe others, have SoundFont support built in. If you have a card that supports SoundFonts, it should already have a font loaded. To use it, simply select its output port in a QWS port selection, whether it be the track's port, or the default port. To make it your default port, launch QWS and go into the options menu, then select options, and set the port to the SoundFont synthesizer. This way it will always be used unless the midi specifies ports.

The software that came with your sound card will have options allowing you to change the SoundFont that is loaded. It may also be possible to load several SoundFonts simultaneously in what is known as a stack. You can then access different SoundFonts using different MIDI bank numbers.

That's pretty much all you have to do. Consult your sound card's documentation for more information.

If you do not have a sound card that supports SoundFonts natively, or you don't want to use your sound card's SoundFont player, there are many other options.

Method 2: Bassmidi

The Bassmidi SoundFont synthesizer is a realtime software synthesizer that you can use with QWS, as well as any other audio player. It will work on any sound card, with Windows XP, Vista, or 7. It is the easiest software solution to set up and use, and supports many midi controller messages, such as reverb, chorus, expression, volume, filter settings and some system exclusive messages.

To use Bassmidi, you can either Google Bassmidi driver, and download the latest version, which at the time of writing is 2.02. However, this version has a fairly large amount of delay (latency) between playing notes and the notes being heard. Version 1.06 low delay works much better and seems to work just as well for everything else Bassmidi does.

Bassmidi loads samples dynamically, meaning that it only loads the samples that are called for, instead of loading the entire SoundFont at once. This means that if your hard drive is slow, the audio can be a bit choppy as new samples load. It can stutter or freeze for a second or two if a large sample needs to be loaded. After that, though, the playback is fine. The stuttering and hanging on version 1.06 is a bit worse than in 2.02, but since 1.06 has much less latency, it's worth the trade-off, and on a fast computer you'll barely notice the load time.

If you would like to obtain the version with the lower delay instead, you can grab it at this link:

I've put this Dropbox link in simply because it is the link I know most, and is most convenient to give out. It should be working indefinitely. If it doesn't, you can Google it and easily find it.

Simply install the driver and launch the Bassmidi driver configuration tool. Add a SoundFont, and press the apply button, start up QWS and start using Bassmidi. Follow the above instructions on how to set up Bassmidi as your default port.

On some systems, when you first start QWS, Bassmidi will be quite latent at times. However this will shorten over a period of a minute or so. When you change SoundFonts, you will need to restart QWS for the SoundFont to be changed.

One thing to consider when configuring SoundFonts: Bassmidi organizes the SoundFonts in a list, with the bottom ones taking priority over the top. For example, if you have a lower quality GM SoundFont and a high quality acoustic piano SoundFont in the list, in order to use the higher quality acoustic piano in place of the GM font's piano, the higher quality one will have to be at the bottom of the list. If it is at the top, the GM SoundFont will override it. You cannot customize what programs and banks the additional SoundFonts will go in.

Just a warning, when installing a different version of Bassmidi, it's a good idea to uninstall the old version. If you don't, there is a chance that you may end up with two Bassmidi ports, which will cause conflicts and in some cases will break the whole driver, and it will require a registry edit to fix.

Method 3: SFZ

SFZ is a software SoundFont player, which is claimed to be the best free player around. Many people still use it, but some prefer Bassmidi over it. Both players are quite different. Some people like one player more than the other, and other people switch back and forth.

SFZ comes in two forms, the standalone and the VST. I'll focus on the VST here. I've heard that the standalone is quite similar to the VST's setup.

Firstly, you will need to know how to use VST plug-ins in QWS. For instructions about this, read the using VSTs in QWS article if you don't already know how to do this.

Now, where to get SFZ in VST format? A link is here:

Simply install SFZ like you would any other VST.

Now, the tricky part. Much of SFZ's interface is not accessible. One way to overcome this is to load a SoundFont by loading a preset bank into your VST Host. This bank will load in a SoundFont from a specific folder. Thus it is important that a SoundFont exists in that location for it to load.

The bank to load is here:

Just download the onj.fxb file, and the Onj SoundFont if you want. The SoundFont contains some very nice sounds, but it is not GM compatible.

Next, load the onj.fxb file into your VST host. To work properly, a SoundFont has to be on your C drive, in a folder called SoundFont, and the file must be called onj.sf2. In other words, the path is:

Load the onj.fxb file into your VST host, and the SoundFont that you have their will be used. You will need to set your output port in QWS to midi yoke, as was explained in the VSTs in QWS article.

Here are some differences between Bassmidi's and SFZ's SoundFont implementation:

The dynamics in SFZ are a lot less noticeable than in Bassmidi. So, the SoundFont will still work as expected, but the dynamics will just be minimized.

SFZ's chorus and reverb are quite different to Bassmidi's. For example, SFZ's reverb has more of a conventional sound, Bassmidi's seems to be a bit longer and less obvious, and is a little too quiet for my taste. It is still usable especially if you add a little bit of external reverb to what's already there. I also find the chorus in SFZ strange, but I like the chorus in Bassmidi. So you'll have to decide what you like about each player.

SFZ reads banks differently than Bassmidi. In SFZ, to switch banks, you'll use banks 0, 1, 2, and so on, up to 128. Bank 128 is used for drums and works on any channel. Bassmidi takes a more traditional approach that works with Roland standards. Channel 10 is reserved for drums. To switch banks, you use banks 0, 128, 256, 384, 512, and so on. It works perfectly with the GS instrument list, and since some SoundFonts have some GS instruments, they can easily be accessed from that list.

One last difference between the two players: they do read the SoundFont's parameters slightly differently and this can sometimes lead to somewhat drastic differences in the way certain instruments sound. It's best to keep track of which midis you made with what. Some files may not sound good if you don't use the player you sequenced it with.

Method 4: Synth Font

This program used to be a pretty good option, but over the years it has been upgraded, and now has an interface that is not as accessible as it once was. Furthermore, it doesn't offer much in the way of built-in effects. It does let you add VST effects, and change SoundFonts for multiple tracks and even change the instrument used for each instrument in the midi. But these features are not very keyboard accessible.

Synth Font is a free project, but donations are encouraged. To donate, you will have to register. The unregistered version is free, but will bring up a ton of registration nag screens.

To try Synth Font out, you will first have to download it. You can get it here:

This site is best used with Internet explorer.

After downloading, launch the program, and get around the various registration screens. Tab around until you get to the engine options button. There, go to the inputs and outputs and set your input to midi yoke, the same as you might do in a VST host. Then, load in a midi file, and go to the turn midi input on button. For some reason you have to load a midi file before you can send midi input. If using a screen reader, you might have to simulate clicking the turn midi on button with the mouse. Once this is done, it should work.

You can also change the buffer settings in the engine options to try and decrease latency. It's also worth noting that when you want to switch SoundFonts, you must first load a new midi before the change takes effect. To change SoundFonts, you can go to the file menu and select the item called "set default SoundFont file", and there is also a button to do this in the main interface.

Another thing, Synth Font likes to save midi arrangements every time you close a midi file. A midi arrangement is a file that tells Synth Font what SoundFonts you loaded on what channels, and what instruments were used. This works well for that purpose, but it gets in the way, because to change the SoundFont you're using, you'll have to change the midi arrangement, and not the default settings. You can also delete the arrangements if you won't use them. I'd strongly recommend deleting them especially if Synth Font isn't your main player of choice.

Synth font has no built-in effects and feels pretty clunky. But it actually sounds decent. Synth Font's strong points are its midi arrangements and VST effect support, both of which are not easily accessible for screen readers.

There's also a VST version of Synth Font, which for basic use is pretty accessible (it even asks you where your SoundFont is when you load the VST), but Synth Font standalone has a much better sound in my opinion.

My final thoughts?

There are many ways to use SoundFonts in QWS, some of which are not covered here. Bassmidi and SFZ are my two recommended SoundFont players. I'd say if you need external effects or want to make custom midi-SoundFont arrangements, then go with Synth Font. If you need something quick and easy that works well for everyday needs, go with Bassmidi. If you need a good-sounding player that is pretty painless to set up and is a VST plug-in, use SFZ.

If you have any questions about anything in this article, please send a message to the QWS mailing list. The people there are very friendly, and I tend to hang out there too much. But, if it is not about QWS usage, you can send me an e-mail at the following address. The following is not the actual address, but how it sounds. I do this to prevent spammers from easily obtaining it.
musical man 1 at comcast dot net

I will try my best to answer accurately and quickly.


Return to QWS articles