At the Sounding Edge: Using QSynth and QJackCtl
The fluidsynth project provides Linux musicians with a free and open-source soundfont-based synthesizer. A soundfont is a soundfile format combining audio data and performance control data. Soundfonts are not merely played back, they require an engine (synthesizer) designed to apply the performance controls to the raw audio data. fluidsynth is such an engine.
Like JACK, fluidsynth can be run from the command line, but its configuration at the prompt can be a bit complicated (see 'man fluidsynth'). QSynth is the GUI solution to that problem.
Figure 4 shows QSynth's default appearance. The main panel is arranged clearly and is comprehensible. As with QJackCtl, QSynth employs helpful tooltips to clarify the function of each interface component.
Again, we start our little tour with the Setup panel. Options here include tabs for audio and MIDI driver configuration, soundfont bank selection and a summary of QSynth's default and current settings. QSynth supports audio and MIDI drivers for ALSA and OSS, a MIDI-only driver for MidiShare and an audio-only driver for JACK. In Figures 5 and 6, QSynth has been configured as an ALSA sequencer client and as a JACK audio client, respectively.
Click the Soundfonts tab to specify the soundfont banks you want to assign to the QSynth engine. As Figure 7 shows, you can list multiple banks, but only the last font listed is active.
Close the Setup panel and click on the Channels button to open the channel/instrument assignment panel shown in Figure 8. The maximum number of channels is determined in the Setup/MIDI tab, with a default of 16 channels to the allowable maximum of 256, all in increments of 16. Right-click on an entry in the Channels dialog and select an instrument from the soundfont instrument list seen in Figure 9. Repeat per channel as necessary.
QSynth is a multitimbral synthesizer, meaning that you can assign a different instrument to each channel for a mixed ensemble of independent players. Alternatively, you can assign a single instrument to multiple channels to create rich layered sound textures. Or, you can mix all of these methods as you please. To use different soundfonts at the same time, right-click on the engine selector tab at the bottom left corner of the main panel--labeled qsynth1 in Figure 4--to add another instance of QSynth to the fun. Each engine can access a different soundfont, with independent master gain and effects settings. With the right fonts, you might find that QSynth is all the synthesizer you'll ever need.
By the way, if you want to expand your collection of soundfonts, be sure to check out the listings at Hammersound (see Resources), which link to some excellent free fonts. You might also want to peruse the Linux Audio Users mail list archives for links to free fonts. Some list members have designed fonts for truly free redistribution, but the community still needs a truly free and open-source general MIDI soundfont.
At this point, return to QJackCtl and start the JACK server if it isn't already running. Click on the Connections button and select the Audio tab to make your JACK audio connections. Figure 11 illustrates one arrangement of multiple QSynth engines with independent output ports connected to the ALSA PCM input ports; it's a good example of how QJackCtl simplifies complex routing arrangements.
Now select the MIDI tab to set your MIDI connections. Here we find the same flexibility found in the audio tab, as shown in Figure 12. In that screenshot the input from my physical MIDI port--SBLive with adapter connected to a Casio CZ101 MIDI keyboard--is routed to the first QSynth engine. The first ALSA virtual MIDI port is connected to the second QSynth engine and to the EMU10k1 synthesizer on the SBLive. Finally, the last virtual MIDI output port is connected to the third QSynth engine and to the EMU10k1 synth. Again, a complex configuration is simplified by using QJackCtl.
Click the Patchbay button to view, edit and save/load your audio and MIDI connections as user-defined presets. Figure 13 illustrates this neat feature, showing the Patchbay preset defined for the connections in Figures 11 and 12.
We've made QSynth's audio and MIDI connections, so now it's time to put them to use. Figure 14 illustrates seq24 using QSynth with multiple engines, with each engine driven by a separate sequence in seq24. Remember, seq24 makes its MIDI connections internally, there's no need to use the MIDI Connections tab in QJackCtl. QSynth autoconnects to the ALSA PCM input ports, but you need to reconnect if you want to route QSynth's output elsewhere. Figure 14 also demonstrates such a connection, with one engine's output routed to a LADSPA effects processor in the JACK Rack, the output of which is sent to the ALSA PCM ports.
By the way, the screenshot in Figure 14 is included for demonstration only. QSynth's own effects processors, reverb and chorus, are quite serviceable, but they're not going to equal the performance of a dedicated software or hardware processor.
Similis sum folio de quo ludunt venti.
Special Reports: DevOps
Have projects in development that need help? Have a great development operation in place that can ALWAYS be better? Regardless of where you are in your DevOps process, Linux Journal can help!
With deep focus on Collaborative Development, Continuous Testing and Release & Deployment, we offer here the DEFINITIVE DevOps for Dummies, a mobile Application Development Primer, advice & help from the experts, plus a host of other books, videos, podcasts and more. All free with a quick, one-time registration. Start browsing now...