Skip to content

Software Synth in Jamulus

Engelbert Niehaus edited this page Oct 19, 2020 · 12 revisions

Linux

We will elaborate the concept of playing a software synth on Linux as example and transfer that to other operating systems (e.g. Windows, MacOSX).

  • (Hammond Organ Synth) As an example we talk open source software synth setBfree, which is a hammond organ emulator that outputs through JACK on Linux.
  • (MIDI Keyboard) The MIDI keyboard is used to generate the key pressed events, that are transmitted through a USB-MIDI interface to Linux system and the Synthesizer setBfree generates the corresponding tone for the pressed key. In general the MIDI keyboard can also be replaced by a digital wind midi controller, that does the same but the tone is dependent on how the musician blows air into the digital wind controller.
  • (Connector to Jamulus) You may hear the audio output of your Linux system on your speakers but the audio output may not be use as input for your Jamulus session. So another step is to connect the audio out to Jamulus client (with QJackCtl).

General Information about ALSA, JACK and MIDI

First of all we explain a few basic concepts on Linux to use MIDI and Audio together.

  • ALSA is the basic to connection to the hardware, i.e. the soundcard and the midi controller for the keyboard.
  • JACK is build on top of ALSA and uses ALSA for the audio output. It provides a adequat environment for music production on Linux.
  • Synthesizer like the Hammond Organ emulator setBfree connect to JACK for audio output.
  • Jamulus connects to JACK.

Connecting ALSA, JACK and MIDI for a Synth for Jamulus

Now we look an the workflow to use the whole infrastructure in Jamulus.

  • (Jamulus Installation and JACK) Use the install script for Jamulus on Linux or install Jamulus with the manual in the wiki. With this installation we have JACK and QJackCtl installed for Jamulus.
  • (ALSA to JACK - MIDI) Next we must create a connection from ALSA to JACK to route the MIDI input from the keyboard to the Hammond Emulator setBfree. The you can start JACK-Control (QJackCtl) from the command line by qjackctl and then launch the ALSA2JACK MIDI connector. This can be done with the shell command: a2jmidid -e. As long as this connector runs the a2j connection interface is visible in QJackCtl. Start the Hammond Synthesizer too e.g. from the command line with setBfree. You will see the setBfree graphical user interface GUI (see http://setbfree.org/gui_3d). After starting the Hammond Emulator setBfree you will also see the Hammond Synth SetBFree also in QJackCtl. Connect a2j as input to setBfree as output. If you have speakers attached to your Linux Computer you would hear the emulated Hammond sound on your Linux PC for all the keys your press on your MIDI keyboard. If ALSA2JACK MIDI (a2jmidid) is not installed, install the a2j package for the MIDI connection between ALSA and MIDI. Furthermore setBfree can be installed with apt-get:
    sudo apt-get install a2jmidid
    sudo apt-get install setbfree
  • (Synth to Jamulus - Audio) In the previous step we connected the MIDI signals from your keyboard to the MIDI input of JACK, which tell JACK which keys are pressed on the keyboard. Now create an audio connection in JACK (i.e. the generated Hammond sound of the synth). We connect the Hammond Emulator setBfree output to Jamulus. Therefore Jamulus must be started so that you see also Jamulus in the audio connection of QJackCtl. Now you can the audio output of the Hammond Emulator setBfree to the audio input of Jamulus in JACK.

In general QJackCtrl is used similar operations like for plugging in instruments in mixer and the mixer into an amplifier and the amplifier again to the speakers. Have fun with your other OpenSource synths like QSynth, ZynAddSubFX than can be installed on your Linux system and/or used within LMMS.

Have fun playing your synth within Jamulus.