On Linux, the default soundfont used by the Java Internal Synth sounds quite bad. You can see the Soundfonts page to try to use a better soundfont.

Using a virtual midi port

If you want to connect JJazzLab to a software synthesizer on your system, you’ll need a virtual Midi port.

To install a virtual midi driver:

$ sudo modprobe snd-virmidi midi_devs=1

If you list the connected ports, you should see a new ‘Virtual Raw Midi’ entry like below:

$ aconnect -lo  
client 14: 'Midi Through' [type=kernel]  
    0 'Midi Through Port-0'  
client 20: 'Virtual Raw MIDI 1-0' [type=kernel,card=1]  
    0 'VirMIDI 1-0' 

Now in JJazzLab you can select the first VirMIDI port which should appear in the Midi OUT list (menu Tools/Option/Midi). Hit the Refresh button if required.

Connecting to a software synth like Fluid

To install Fluid:

$ sudo apt-get install fluidsynth
$ sudo apt-get install fluid-soundfont-gm

Start Fluid in server mode:

$ fluidsynth --server /usr/share/sounds/sf2/FluidR3_GM.sf2
Note: consult the fluidsynth doc for more command line options.

You should see a new port, like in the example below:

$ aconnect -lo
client 14: 'Midi Through' [type=kernel]
    0 'Midi Through Port-0'
client 20: 'Virtual Raw MIDI 1-0' [type=kernel,card=1]
    0 'VirMIDI 1-0     '
client 128: 'FLUID Synth (Qsynth1)' [type=user,pid=3099]
    0 'Synth input port (Qsynth1:0)'

Finally you can connect the Virtual Port to the entry of the Fluid synth:

$ aconnect 20:0 128:0      # Values might be different on your system

Now if you play a song in JJazzLab it should be rendered by the Fluid synth. You can use QSynth as a user interface to modify the Fluid synth parameters (especially the effects).

Non x64 architectures

The Linux package embeds a Java JRE from AdoptOpenJDK for the x64 architecture. If your system has a different architecture (arm32, aarch64, …) you need to download the corresponding JRE from AdoptOpenJDK, then use it to replace the contents of the jdk sub-directory in the JJazzLab installation directory.