»» i686 slackware tarballs..
»» software projects..
»» and much more..

*** ***
by Giacomo Lozito
© 2004-2010

valid xhtml 1.0valid css!
powered by apachepowered by php
valid rss 2.0get firefox!

NO software patents in UE
AMIDI-Plug logo


AMIDI-Plug is a MIDI subsystem for XMMS/BMP/Audacious. It processes MIDI files and sends their events to one of the available backends (currently ALSA, FluidSynth, dummy).
With the ALSA backend, any hardware or software synthesizer, as long as it provides ALSA sequences ports, can be used to play MIDI with AMIDI-Plug. In example, AMIDI-Plug can send MIDI to the emu10k1 hardware synth or to software synths such as timidity and fluidsynth.
With the FluidSynth backend, AMIDI-Plug accesses directly the FluidSynth library for MIDI playback and sends the generated audio into effect and output plugins of the player. More, the FluidSynth backend can be used even on systems where ALSA is not available.
A dummy backend is also provided for testing and analysis purposes.
Playback is fully functional: play, stop, seek, pause, song information are available.

AMIDI-Plug supports MIDI files in SMF (standard midi file) format type 0 and type 1, as well as RIFF MIDI containing SMF 0 and 1.

Written and maintained by Giacomo Lozito,
released under the GNU General Public License v2.

AUDACIOUS 1.3 NOTE (23 Feb 2007):
All of the amidi-plug versions available here do not support Audacious 1.3. If you're using Audacious 1.3, please use the amidi-plug version bundled with audacious-plugins. In future, I'll release a new stand-alone amidi-plug version compatible with Audacious 1.3 and it will be available from this page.



amidi-plug-0.7.tar.bz2 md5:  bb128c40dce0ab4afda79da01f985a09
amidi-plug-0.6.tar.bz2 md5:  faba53843077787aeb76b4255893341d
amidi-plug-0.5.tar.bz2 md5:  7cf82ed904259ba552fc7b0adfbacabf
amidi-plug-0.2.tar.bz2 md5:  a2372b723b4a48d69a45083b98d7d9c6
amidi-plug-0.1.tar.bz2 md5:  690e7ca7e60e584db721d430e7295aa7


Installation is pretty straighforward:

configure --with-player=PLAYER
make install

where PLAYER is one between xmms, bmp or audacious.
Other configuration options are available, like --prefix to install in a different location. You can also select which backends should be compiled. Use --help to list all available configuration options.

Dependecies vary with the chosen player:
ALSA libs are required if you want to compile the ALSA backend;
FluidSynth libs are required if you want to compile the FluidSynth backend;
GTK+ 2.x required for Audacious and BMP;
GTK+ 1.x required for XMMS;
of course, headers and libraries that come with the chosen player are needed too.


The first time the player is launched with AMIDI-Plug installed, it will default to ALSA backend and will try to auto-detect and use some ALSA sequencer ports; more specifically, it will search for those of the hardware wavetable synthesizer. Of course, these may not be available on some audio cards (or ALSA could not be available at all); so it's a good idea to check the preferences dialog and modify everything to suit your tastes (i.e. select a different backend, customize its options, etc.)

It would be useless to comment all of the available options here. For more information, remember that every option is documented with a tooltip, that appears when you leave the mouse over it for a certain amount of time.

Once options are set, MIDI files can be picked and played just like any other file type. Playback is fully functional: seek, pause, song information are available.


ALSA backend configuration dialog, with many interfaces

FluidSynth backend configuration dialog

Backend selection dialog, with detailed info

Various AMIDI-Plug dialogs

FluidSynth backend configuration dialog (on XMMS, GTK+1)

ALSA backend configuration dialog (on XMMS, GTK+1)

(OLD) AMIDI-Plug configuration dialog

(OLD) various AMIDI-Plug dialogs


On which operating systems does AMIDI-Plug run?

AMIDI-Plug runs on every system where you can use XMMS, BMP or Audacious. The ALSA dependency is confined to its backend, so if ALSA is not available (non-Linux systems) you can equally compile AMIDI-Plug and use other backends (in example, the FluidSynth backend).

I do not have a hardware synth on my audio card. Can I use AMIDI-Plug too?

You can use AMIDI-Plug, and you have different backend choices too. If you have ALSA you can use it with whatever device, hardware or software, as long as it provides ALSA sequencer ports. If you do not have a hardware synth you can use a software one, such as timidity++ or fluidsynth. Starting from version 0.5, you can also use FluidSynth directly, without ALSA. The FluidSynth backend will also let you manipulate audio with the effect and output plugins of your player.

How do I use software synths with the ALSA backend?

Compile timidity++ with --enable-server --enable-alsaseq, setup it as usual and launch it as an ALSA sequencer (-iA). Now you'll have one or more timidity ports in the ALSA sequencer port list and you'll be able to select them from the AMIDI-Plug preferences dialog. This way, AMIDI-Plug will send MIDI events to the timidity ports and timidity will play events in software mode. The same can be done with fluidsynth (it doesn't require particular configuration parameters) or with any other software synth that provides ALSA sequencer ports.

Do I require a SoundFont file to use FluidSynth backend?

Yes. There are many soundfont archives on internet. Just try some to find the one that sounds better for your ears.

Why my CPU usage rises during playback when I use the FluidSynth backend?

FluidSynth is a software synthesizer, it does its work in software mode so it's perfectly normal that it will use your CPU (just like timidity). The percentage of CPU usage varies with the MIDI file and chosen SoundFont.

I'm using the FluidSynth backend and I noticed that the song skips once in a while (or even often)... how can I prevent this?

Since FluidSynth is a software synth and it uses your CPU, the first thing to do is to ensure that your system is not doing other CPU-intensive tasks during playback. That said, you can use change the FluidSynth backend buffer parameters in the preferences dialog. Try to move the "handy buffer tuner" some steps to the right until playback is fluid again.

I've compiled and installed AMIDI-Plug, tried to play a MIDI file but it won't play, as if the player was stopped. What's wrong?

Open the preferences dialog and ensure that: 1) a valid backend has been selected; 2) if you're using the ALSA backend, at least one valid ALSA sequencer port is available and selected. You can also launch the player from a console to look for warning messages that explain the problem.

Preferences dialog has been checked and everything seems ok. Playback starts but I cannot hear anything, why?

If playback is going on, then MIDI events are being sent correctly and AMIDI-Plug is working. The problem is elsewhere; most likely... 1) if you're using the ALSA backend, the ports you selected require some extra setup to process the MIDI events - in example, if you're using the emu10k1 hardware wavetable synth, then you'll have to load a soundfont with asfxload - ; 2) if you're using the FluidSynth backend, ensure that you have loaded a SoundFont file; 3) if you're using the dummy backend, it's perfectly normal that you don't hear anything :) . Again, launch the player from a console to look for warning messages that explain the problem.

Which Audacious versions are supported?

AMIDI-Plug versions preceding 0.5 support Audacious 1.0.x. AMIDI-Plug version 0.5 and 0.6 support both Audacious 1.0.x and 1.1.x (the latter has a slight different structure for input plugins). AMIDI-Plug version 0.7 supports Audacious 1.1.x and newer versions. Anyway, AMIDI-Plug is included in Audacious source package :)

I think I've found a bug. How do I check and how do I report?

Configure and compile AMIDI-Plug with --enable-debug (to display useful information in console) and report bugs to my email (available from contacts); include a detailed description of the issue, along with the console messages you get, your ALSA driver and lib version, your gcc version and your operating system version too.

How do I configure timidity, load soundfonts in emu10k1, etc.?

Those are not AMIDI-Plug-related questions. Please refer instead to the documentation of asfxload, timidity, etc.


Normally, AMIDI-Plug detects the files that it should process and play by checking the first bytes of the files in the playlist and looking for a valid MIDI SMF header. This method is definitely the best for many reasons.

Anyway, if you prefer a probably-faster-but-surely-less-reliable simple check on the file extension (why?), this can be achieved by undefining the MIDIFILE_PROBE_MAGICBYTES macro in amidi-plug.h.


  • allow user to decide (with a pref) whether the midi length should be calculated only right before playing or whenever get_song_info is called (in example when a playlist is loaded)
    *** DONE IN 0.2 ***
  • allow AMIDI-Plug to use (as an extra feature) fluidsynth and timidity libraries directly, by producing audio that can be piped in the effect and output plugins of the player
    *** DONE IN 0.5 (with backends) ***
  • extract and display various extra data from midifile (lyrics, etc.)
    *** DONE IN 0.6 ***
  • add native language support



Have fun!