For program version 1.4.1

1. Introduction

"Fluajho" (with jh as in pleasure) means fluid in Esperanto. It is a simple sf2 soundfont host/player for Linux. Behind the scenes the Fluidsynth library is at work, hence the name.

sf2 is an old file format for making MIDI signals audible through virtual instruments, although it

is still in moderate use today.

Why does Fluajho exist? There are many soundfont players for Linux, most of them even based on Fluidsynth. Fluajho was written for a clearly defined use case: Load an .sf2 in the Non Session Manager and save the soundfont in the session directory. This makes it possible to archive the session, for example as a backup or to share it.

You can load one soundfont file per Fluajho instance. Each instance holds 16 of the soundfonts instruments that can be assigned to 16 MIDI channels. Finally connect external sequencers, such as Laborejo, Patroneo or Vico, through JACK-Midi to play the instruments.

1.1. Quick Start

To get to know the most important functions and workflows, this video has been created.

Or as Youtube Mirror

1.2. Basic Principles

Fluajho loads exactly one .sf2 soundfont. A soundfont can contain several instruments, of which up to 16 can be used simultaneously.

Each of the instruments can be loaded into one MIDI channel. To do this, first select a bank in a channel (Bank 0 if in doubt) and then a program.

On the first launch a small standard soundfont is loaded, which is General Midi (GM) compatible.

Fluajho itself has no option to play notes. To control the sounds, you send MIDI data to our input port via JACK. The channel is a property of the midi signal and is already selected in the sequencer.

Each channel has two separate audio outputs in JACK: Left and Right.

Saving and loading your project is done by the Non Session Manager. There you will find a "Save" button.

2. Description of the graphical user interface and its functions

Use your browser’s search function to locate the individual letters like [B] and their explanation.

Screenshot with Captions

The [A] File menu contains only one command: "sf2 Soundfont load" (keyboard shortcut: Ctrl+O). Only one soundfont can be loaded at a time. If you want to use several different soundfonts at once, just start Fluajho several times.+It is also possible to load an .sf2 through drag & drop from your file manager into the Fluajho window.

[B] is the name of the currently loaded file.

The option [C] Ignore MIDI Bank and Program Messages only allows instrument changes via the graphical user interface. It ignores all messages coming in via the JACK Midi connection.+ This is sometimes necessary if you are dealing with midi hardware, like keyboards, which send bank and program changes at startup and break our settings. You can also activate this option as soon as you have set all instruments, because a program change unfortunately happens faster than one would think.

Channels are numbered [D] Channel N . MIDI supports exactly 16 channels, there is no adjustment possible. More channels of the same soundfont can be obtained by simply starting another Fluajho instance.

You can click with your middle mouse button (scroll wheel) on a channel to hear a short test melody. This enables you to quickly prelisten an instrument.

The current [E] Bank is always displayed as a number. You can choose them from the drop down list. Only the banks, which actually exist in the current sf2 are listed.

The current [F] Program is the instrument. It is displayed with its MIDI number and actual name. Only the programs present in the sf2 are displayed.+ However, the soundfonts are often wrong in that they display more instruments than they actually have. In this case you will hear a more or less random (existing) instrument instead.

There is no internal way to close Fluajho. If you use the function of your window manager like [X], Alt+F4 etc. the graphical user interface is only hidden.+ To really close Fluajho you can click on the STOP icon in the Non Session Manager. Here you can also restore visibility by clicking on the GUI button.+ The current visibility setting is saved. This is because you normally only spend a relatively short time loading a soundfont. Afterwards, the window would only get in the way.

3. Installation and Start

Fluajho is exclusive for Linux. The best way to install is to use your package manager. If it is not there, or only in an outdated version, please ask your Linux distribution to provide a recent version.

If available in the package repository, please continue reading directly at "Start fluajho from Non Session Manager". If not, you can build Fluajho yourself.

Build and Install
  • Please check the supplied README.md for dependencies.

  • You can download a release or clone the git version

  • Change into the new directory and use these commands:

  • ./configure --prefix=/usr

    • The default prefix is /usr/local

  • make

  • sudo make install

Start fluajho from Non Session Manager (NSM)

Please read README.md for other ways of starting fluajho, which are impractical for actual use but can be helpful for testing and development.

4. Help and Development

You can help Fluajho in several ways: Testing and reporting errors, translating, marketing, support, programming and more.

4.1. Testing and Reporting Errors

If you find a bug in the program (or it runs too slow) please contact us in a way that suits you best. We are thankful for any help.

How to contact us

4.2. Programming

If you want to do some programming and don’t know where to start please get in contact with us directly. The short version is: clone the git, change the code, create a git patch or point me to your public git.

4.3. Translations

Fluajho is very easy to translate with the help of the Qt-Toolchain, without any need for programming. The easiest way is to contact the developers and they will setup the new language.

However, here are the complete instructions for doing a translation completely on your own and integrating it into the program. The program is split in two parts. A shared "template" between the Laborejo Software Suite and the actual program.

The process is the same for both parts, but needs to be done in different directories: template/qtgui and plain /qtgui, relative to the root directory, where the fluajho executable is.

Everytime you see "template/qtgui" below you can substitute that with just "qtgui" to translate the other part of Fluajho.

You can add a new language like this:

  • Open a terminal and navigate to template/qtgui/resources/translations

  • Edit the file config.pro with a text editor

    • Append the name of your language in the last line, in the form XY.ts, where XY is the language code.

    • Make sure to leave a space between the individual languages entries.

  • Run sh update.sh in the same directory

    • The program has now generated a new .ts file in the same directory.

  • Start Qt Linguist with linguist-qt5 (may be named differently) and open your newly generated file

  • Select your "Target Language" and use the program to create a translation

  • Send us the .ts file, such as by e-mail to info@laborejo.org

You can also incorporate the translation into Fluajho for testing purposes. This requires rudimentary Python knowledge.

  • Run the "Release" option in QtLinguists "File" menu. It creates a .qm file in the same directory as your .ts file.

  • Edit template/qtgui/resources/resources.qrc and duplicate the line <file>translations/de.qm</file> but change it to your new .qm file.

  • run sh buildresources.sh

  • Edit engine/config.py: add your language to the line that begins with "supportedLanguages" like this: {"German": "de.qm", "Esperanto: "eo.qm"}

    • To find out your language string (German, Esperanto etc.) open the python3 interpreter in a terminal and run the following command:

    • from PyQt5 import QtCore;QtCore.QLocale().languageToString(QtCore.QLocale().language())

To test the new translation you can either run the program normally, if your system is set to that language. Alternatively start fluajho via the terminal:

  • LANGUAGE=de_DE.UTF-8 ./fluajho -V --save /dev/null