Using A Soundcard Having Hardware Synthesizers
If you have a desktop computer (rather than a laptop), you have the option of adding sound-cards with the emu10k1 or emu10k2 on-board hardware synthesizer chip. These sound-cards will reduce latency to an imperceptible level, and you can load quality soundfonts into them.
My Soundblaster Live card, which uses the emu10k1 chip, has four hardware synthesizers, each of which handles 16 MIDI channels, for a total of 64 simultaneous instrument sounds, which is nearly a complete symphony orchestra! And it does this with no perceptible latency (latency is the delay between pressing a key, and hearing the key's sound). It cost me about $15 (used), which is a bargain.
These sound-cards can't be used on a laptop, because the required PCI card interface (allowing the on-board synthesizers to access the computer's RAM) is not present.
Also, only certain models of sound-cards (even though they may have the Soundblaster name) have the emu10k1 or emu10k2 chip (which is what supplies the hardware synthesizers).
The following sound-card models have this capability:
• SoundBlaster Live
• SoundBlaster Pro, 16
• Audigy 2 Series
• Audigy 4 Series
• Audigy 2ZS Series
Another good thing about these cards (at least, with the Soundblaster Live card, and with some Audigy 2 Series cards), is that they also provide a MIDI interface which you can use to connect an external synthesizer to your computer with.
You will probably have to order the cable for going from the sound-card's game-port plug to MIDI-cable plugs. When I ordered my Soundblaster Live card online, it didn't come with that cable. The cable didn't cost very much, at least at that time.
Specifying A Soundcard Synthesizer
It's easy to connect the KeyMusician Keyboard to one of the hardware synthesizers in your soundcard. Simply click the “MIDI Output To” drop-box, and choose one of the hardware synthesizers, as shown in the screenshot below:
Notice that there are four such synthesizers, whose names end in “Port 0”, “Port 1”, Port 2”, and “Port 3”. Each of these ports is a full-blown hardware synthesizer, each having 16 MIDI channels.
Above the one selected, there's another entry associated with the “Soundblaster Live!” soundcard. It also has “EMU10K1” in it, but it looks different from the other four.
This one (index 1 above, containing “UART”), is the MIDI interface the soundcard supplies, for connecting to an external MIDI synthesizer. With the proper cable connected to the soundcard, you could play an external MIDI device by selecting this (the UART) entry.
But the hardware synthesizers are the four “Emu10k1 WaveTable” devices with the different port numbers.
When you select one of these hardware synthesizers, it lets you choose a soundfont to use for them (all four share the same soundfont). The FluidR3_GM soundfont works fine for these, but for using it the first time try a smaller soundfont, such as “TimGM6mb.sf2”.
WARNING: If you use a large soundfont (such as FluidR3_GM.sf2) before making the configuration change at the end of this web-page, you will get an error status, and some instruments will make no sound. Beware that the configuration change you make below doesn't take effect until after the next reboot. So until that reboot, large soundfonts will not be entirely loaded. After that reboot, there will be no problem.
So after selecting the soundfont used (in the dialog that pops-up), click on a performance pane tab (such as “F2”), and start playing. Unfortunately, you will notice that the sound is very soft.
You could turn up the computer's volume in the task-bar, but then when you play something else, it will be way too loud.
Using A Mixer To Adjust The Hardware Synthesizer Volume
To fix this, we need to use an advanced mixer (with more capabilities than pavucontrol). The installer installs just such a mixer for you. It's called QasMixer. It's available in the menu (under Sound & Video), or under Audio Production...Mixers.
When you first run it, the screen is mostly empty, as appears below:
In the above screen-shot, I clicked on the “View” menu, and was about to click on the “Show device selection” entry of that menu. Doing that lets you select which soundcard you want to control, as in the screen-shot below:
In the right pane of the window, I first clicked on the “hw : Card” entry, selecting it, and allowing me to select a card below.
In the “Card” pane, I clicked on the “SB Live! Value” entry, selecting it. Then a lot more controls appeared in the left (main) pane of the window.
Notice that the volume slider labeled “Synth” (where the mouse pointer appears) is only set half-way up from the bottom. This is why it plays too softly. The hardware is initially set that way. Left-click on the “Synth” slider's handle, and drag it all the way to the top (like the others around it).
Now you can close the QasMixer window, and from now on, the soundcard hardware synthesizers will play with a normal volume in relation to the rest of your system, and you won't have to do this again.
On UbuntuStudio there is a mixer with capabilities of doing this same thing, as shown below:
In the above screen-shot, I first selected the “Soundblaster Live” card in the “Sound Card” drop-box, but the “Synth” control was not initially visible. To get that control, I had to first click the “Select Controls” button (at the bottom left), and select it.
After doing that, the “Synth” sliders appeared, and I could click on one of the pair (it was only half-way up), and drag it to the top, as shown. If you drag one, the other slider of the pair moves with it.
Other distributions of Linux may have similar tools for adjusting the volume of the hardware synthesizers on the soundcard (as in the case of UbuntuStudio above).
But regardless, you can use QasMixer, which is automatically installed by the installation process, and is (perhaps) easier to use.
Allowing the Use of Large Soundfonts, Such as FluidR3_GM.sf2 (IMPORTANT)
To avoid cases where critical system memory is 'swallowed-up' by large soundfonts, Linux limits the size of soundfonts loaded into a sound-card. Unfortunately, this limit is too small to allow the use of the FluidR3_GM.sf2 soundfont.
This limit is only for sound-cards having hardware synthesizers – it doesn't affect Qsynth (Fluidsynth) or the Java Sound (Gervill) synthesizer.
It's relatively easy to change this limit. Here's how to do it:
Run your system's terminal program. Then cut-and-paste the line highlighted below into it, and transmit that line. If you don't know how to use (or don't have) the “vi” editor, substitute the name of the editor you use (such as “leafpad” or “gedit”) in place of “vi”:
sudo vi /etc/modprobe.d/alsa-base.conf
When you transmit the line, you'll have to enter your password (and the cursor won't advance while you do it).
After successfully entering your password, the file will be displayed in the editor.
Go to the end of the file, and insert the following line:
options snd-emu10k1 max_buffer_size=150
After doing that, save the file, and exit the editor you used.
You will have to re-boot your system before this change takes-effect.
If you neglect to do this step, you will get a warning-error when loading the FluidR3_GM.sf2 soundfont, and some instrument voices (such as Oboe) will make no sound.