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
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.