How can I make Timidity recognize bank variations?

I have Timidity++ 2.12.0 in Windows and a Soundfont customized by myself named Collection.sf2. everything I had to write in Timidity.cfg file was:

dir c: imidity

dir c: imidity\sndfont

soundfont Collection.sf2

And just with that Timidity recognizes all presets in all banks of my soundfont. (This soundfont has more than 600 presets in more than 30 different banks.) I tried Timidity++ 2.13 for Windows with the same soudnfont and cfg file and it didn’t work. 2.13 version recognized only the 127 presets of the first bank. so I went back to 2.12.0 version.
The same now happens when I installed Timidity in Opensuse. etc/timidity.cfg file points to /usr/share/timidity/timidity.cfg file. In this last file I wrote the following:

dir /home/fernando/Soundfonts

soundfont Collection.sf2

I connected Rosegarden to Timidity and tried presets from several banks that use to be recognized automatically when I connect Rosegarden to Qsynth. But in Timidity no matter what bank I choose the sound comes only from the presets of the first bank. I tried the same connecting vkybd (a virtual midi keyboard found in multimedia repo) to timidity and even if i choose bank 2, 8, 16… the sound is always from instrumens of bank 0.
it seems that Timidity 2.12 was the only version that recognized bank variations automatically just like Qsynth does. I could not succeed in this in any later version, neither in Windows nor in Linux.

Can anyone help me making Timidity recognize the presets in all banks, please?


I am not very familiar with Timidity but I found this, it seemed relevant: TiMidity++: timidity-talk

I can’t say by now that I have tried your tip yet because it will be very exhausting to put in practice. But as soon as I have a time I will do this. I had search on Google but didn’t find the good solutions that this article presents. If they work I will place another reply here. Thanks.

The tip above really works. But in practice it really works for Timidity itself (e.g. using Timidity alone to play midi files).
Using Timidity as ports to output from Rosegarden that doesn’t work. It is not a misconfiguration nor a Timidity fault. The point is that Timidity recognizes bank variations specified in controller 0 but in Rosegarden bank variations are specified in controller 32. Regardless if Rosegarden banks are adjusted for LSB or MSB the result is always the same. I have tested this exporting Rosegarden’s files as midi and bank variations on them were recognizable by Timidity only when I used another midi editor to change controller number from 32 to 0.
If anyone know a solution to make Rosegarden send variations to controller 0 I’m willing to try.
By now I have exported rg files as midi, editted them on another midi editor and converted to wave in Timidity GUI for Windows. While composing in Rosegarden I use Qsynth as output. After that I use Timidity because sound quality in it is richer than in Qsynth, Windows GUI has also GUI for configuring another paramenters and it works right on Wine. (A long workaround!)

PS: I never understood why since Timidity is free software they never made a Linux GUI for it as good as that of Windows. It’s the only free software I know that works better on Windows than on Linux. :\ So much that I use it as default midi player on Linux by means of Wine. (Very contradictory.)

Ok, but I would believe that it was much the same, quality wise, with qsynth/fluidsynth and timidy when just used as converting midi to audio-data for rosegarden. As I understand it the quality depends on the soundfont.

So if I understand you correctly, you wish to store your composition in .midi (and possibly .rgb?) and not recorded audio? You might try fluidsynth-dssi and use it as a plug-in to Rosegarden, not external midi device (timidity/qsynth), and as such you may use effect plug-ins directly on the various channels which you apply to fluidsynth within Rosegarden. And as such you might try to compensate for lack of effect controllers in QSynth? I don’t know how this will effect the sound output though if you choose to export it as midi, but as a plain Rosegarden (rgb) project these effect settings should be stored. It might be worth a try.

This is a suggestion based on a little guess work as I don’t quite know what you wish to achieve (apart from having Timidity to use the various banks). Myself, I went from Timidity to QSynth/fluidsynth for a couple of years ago since I found it easier. I don’t store the compositions as midi though.

Sorry if the whole suggestion sound silly!


Correction on my post: with extension rgb I mean rg (been in a colour sphere lately).

I keep my files in rg. No problem with this. Currently I also export them as midi and convert to audio in Timidity. I would like to record audio of them direct from what I hear inside Rosegarden but i can’t because using Timidity as output for Rosegarden banks variations doesn’t work (as I explained above not Timidity’s fault but Rosergarden’s fault). And Fluidsynth have unreliable audio quality. Let me explain.
When I moved to Qsynth the 1st thing I noticed is that overall sound had more bass boost than Timidity. It sounded very nice. But after that I found out that some instruments of my soundfont that worked fine in timidity now had distorted quality. Some had vibrato so increased that they became noisy and unusable. Some had reverb so deeply increased that they seemed to be played ihn a very large and empty room. Ohters became excessvly bright and others the opposite. And in most instruments the difference from one sample to another as we play different notes is more noticeable in Qsynth than in Timidity making some notes look louder than others. And it all happenned in ubuntu, in Opensuse and even now that I have the latest update Fluisynth version.
This is why I use Timidity win32 GUI. It is easier to configure and use than Linux GUI’s and works right on Wine. It’s tedious to write Timidity.cfg, even using substitute option of text editors. I’m trying to write one cgf file that recognizes all bank variations. When I finish it I’m willing to send a copy of it for anyone interested so that he will need only to change directories and soundfont name.

Ok, what about fluidsynth-dssi as plug-in to Rosegarden? Perhaps the Qsynth gui has some blame in the parameters settings ‘change’ of the reverb and chorus levels in fluidsynth.

Seems like a time consuming task you have ahead of you going the Rosegarden, Wine/Timidity path. Good luck!

I noticed this on the lau mailing list: Linux Audio Users - Focusing on using audio and MIDI applications

A slightly different issue from yours, however, the author’s solution to his x-run problems was to disable some pre-loaded QSynth settings. His QSynth loaded by default some in-line effects which, I suppose, caused a heavy cpu load, and, possibly, distorted the sound (as you complained about as well). Another point is that his experience with fluidsynth-dssi was quite different, much more cpu friendly.

I tried Fluidsynth as dssi plugin and the results were the same. I also tried to export audio from Qsynth directly as raw without using Jack and the results were the same.
As for the Rosegarden, Wine, Timidity it is really time consuming, mainly for the fact that I have to pay strict attention to how I build the rg file because depending on it the midi file may end up full of bugs.

I finally found a workaround.
After configuring Timidity to recognize banks variations as F_Sauce instructed above inside Rosegarden, in instrument parameters I unchecked the boxes Bank and Program. So in the very first measure of each track, using event editor, I place a Controller 0 followed by a Program change. That worked to make the tracks play with bank variations.

Solved at last!
After about 8 months using rosegarden I finally found out that in the option of banks in device manager it’s possible to define the msb and lsb number of bank variations. If each variation number is defined in msb and also in lsb they may be recognizable by any synth app like timidity and qsynth.