Tutorials/MIDI on Linux

From KDE Wiki Sandbox
Revision as of 16:00, 22 December 2009 by Plcl (talk | contribs) (created MIDI on Linux tutorial)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Template:I18n/Language Navigation Bar

MIDI is a set of technologies related to musical data description and transmission, but not a digital audio format. To use most MIDI software on Linux, like on any other operating system, a MIDI synthesizer is required.

A MIDI synthesizer converts MIDI events into sound. The synthesizer can be an external hardware device, or integrated into a sound card. It may also be a software synthesizer, ie a program.

There are MIDI files with the .MID extension, containing music in MIDI data format. One way to explain it is in culinary terms. Listening music on a Compact Disc is similar to eating in a restaurant, and MP3 would be comparable to fast food. In addition, a MIDI file is like a recipe: you have to get the proper ingredients and use cooking utensils. Instead of oven, pots and pans you will be using MIDI synthesizers. Like any good geek and Linux user, you will want to change the recipe and ingredients. Then do it! In KMid2 you can open the "channels" window and switch the piano for a guitar or whatever you prefer.

External MIDI Synthesizers

They are musical instruments that can be connected to the computer, or to other instruments through MIDI cables. To do this, your computer must have a MIDI interface. There are sound cards with MIDI interfaces, and also USB adapters supported by ALSA with the corresponding kernel module. There are even MIDI instruments that can be connected directly to your computer via USB. In any case, you should check that the MIDI interface model is supported by ALSA at the following address: http://www.alsa-project.org/main/index.php/Matrix:Main

In summary, this option will need:

  • MIDI Interface
  • ALSA Driver for the MIDI interface
  • MIDI Cables

Hardware Synthesizer Sound Cards

Some sound cards, such as the ones manufactured by Creative Labs (SB AWE, Sound Blaster Live! and Audigy) have a MIDI synthesizer using wave-table sound samples as a synthesis method. These samples are being loaded into the sound card before using MIDI software, preferably at system boot. If you own one of these cards:

  • In addition to ALSA, also install the software package "awesfx" which includes the sound samples loader, ALSA scripts and udev rules to automatically load on system boot.
  • Install SoundFont files provided by the manufacturer or other alternative SF2 files in /usr/share/sounds/sf2.
  • Edit the configuration file /etc/sysconfig/sound. On the value for the key "SOUNDFONT_FILES", provide the name of one or several SF2 files that must be loaded on system startup. The file names and locations may vary from one distribution to another, these instructions apply to openSUSE.

SoundFont files can also be loaded manually. Read the manual of "asfxload" for more information.

Software Synthesizers

The classic software synthesizer for Linux is TiMidity++, but the latest release is from 2004. It requires sound samples in GUS or SF2 format. It can be used independently as a player, but if you want to use it in conjunction with other ALSA sequencer compatible programs, you must provide the "-iA" option, for example:

$ timidity -iA

Another software synthesizer, with modern and modular design and active maintenance is FluidSynth. It uses sound samples in SF2 format, and has a friendly graphic interface called QSynth. You can also run it from the command line, for example:

$ fluidsynth -a alsa /usr/share/sound/sf2/soundfont.sf2 

or:

$ fluidsynth -a pulseaudio /usr/share/sound/sf2/soundfont.sf2 

The graphical configuration of QSynth is quite simple. See the following example screenshots.

SoundFont Files

These files represent the fish, meat and vegetables in your MIDI recipe. Here are some recommendations.

Available at packman repositories for openSUSE.
  • FluidR3. A big, high quality SoundFont.
Available for openSUSE packaged by Jan Engelhardt.
There is also a Debian package.