Better Midi sound


Better sound?
Better sound?

Note: This post has not been fully translated yet.

A few weeks ago I started again to concern myself with an issue that I’ve been struggling with every now and then for almost 10 years: How can you improve the sound of MIDI files on the computer with simple means? By “simple” I mean:

  1. I don’t want to buy a new and expensive sound card – the whole thing should work with my cheap onboard card.
  2. I don’t want to buy a hardware synthesizer either.
  3. I don’t want to grapple with complicated programs wich are rather meant for professional use.

Actually quite a precise question. However, for a layman who doesn’t intend to delve much deeper into the subject, but is only looking for a small tutorial or how-to, even the endless vastness of the Internet doesn’t have much to offer. As I worked my way through several MIDI, synthesizer and home recording forums during the past weeks, I came across many posts by people who seemed to have just as little knowledge as me and therefore hopefully approached the expert community with their questions. But somehow I was always more confused after reading the answers than before. For example, the daddy who had bought his children a MIDI karaoke program and wanted to know if there was a way to improve the sound a bit, got the absolutely helpful hint to “attach an additional MIDI board by Yamaha, Terratec, Roland, or Ensonic to the 26-pin wavetable connector on the front panel”. Got that?

I guess that there are many others besides me, who don’t know very much about the matter and to whom even the simplest technical terms are an unknown territory. And so I came up with the idea to write this guide for beginners, because for some reason this seems to be a scarce good on the internet. I will describe two ways to improve the MIDI sound: wavetables and soundfonts.

Wavetables

A wavetable is basically just the MIDI driver that can be set in the sound options in Windows. Ours sounds crappy, so we need a better one. So let’s find out in the options what wavetables are available to us. Most people surely already know this window from desperately clicking around in the hope of better sound … ;) You can reach it via “Start” → “Control Panel” → “Sounds and Audio Devices” (name varies depending on the Windows version).

Update (10 November 2010)

In Windows Vista/7, the selection of the MIDI Mapper is no longer possible. But fortunately, someone has already taken care of that: Simply download “Putzlowitsch’s Vista MIDIMapper” from this site and unpack it to “Windows\system32” or, on a 64-bit system, to “Windows\SysWOW64”. You will then find the small tool in the Control Panel under “P”.

Windows sound options
Windows sound options

As seen in the picture, most people will probably find two drivers here, namely the Microsoft wavetable, which comes with Windows by default and is considered the most gruesome of them all, and another one from the manufacturer of your sound card, which is more attuned to the card and usually sounds a little bit better – but nonetheless awful. Therefore we want to install a different driver. But which one? During my research I read the same names over and over again, and in the above-cited expert opinion they were mentioned as well: Yamaha, Roland and Terratec are among the leaders in terms of synthetic sound production. So I simply chose the Yamaha S-YXG50, as it has often been recommended and rated well. Although the development of the S-YXG series has been ceased as far as I know, but that doesn’t make it sound worse, right? However, it is probably the reason that the driver is now relatively hard to find on the Internet, or the links you find are often dead. Therefore, I put an additional copy here on my server.

Download sources (8.42 MB):

After installation and a computer restart, open the sound options again. In the list of MIDI drivers you should now also find the entry “YAMAHA XG SoftSynthesizer”, wich you want to select, of course. Then just press “Ok”, listen to a few MIDIs and enjoy the new sound! Here’s a sample:

Microsoft GS Yamaha S-YXG50
[MEDIA=1] [MEDIA=2]

The sound will usually be significantly better now. Some people may already be satisfied with this result – for simpler purposes, the sound of the S-YXG50 is indeed quite alright. However, if you want it even more realistic, you should read on when it comes to sound fonts.

Soundfonts

The term “soundfont” actually illustrates quite well what it is: Just like you can choose a font for your text in a text processing program, you can also choose a tone for your music in a sound processing program. And just like you can assign one font to the headlines, another one to continuous text and maybe yet another one to the footnotes of a text, you can also assign a different soundfont to each track of a MIDI song.

Soundfonts can be thought of as many individual wave files, one for each note. They are premade sounds, which may have been recorded from a real instrument or generated artificially. Either way, they are realistic sounds that a MIDI driver would never be able to produce. Using a soundfont-compatible program, you can load a MIDI file, assign a soundfont to it (e.g. a trumpet soundfont), and when a c’ occurs in the melody, it will not be played by the default MIDI driver; instead, our program searches the designated soundfont file for the sound that has been specially recorded for the c’ on real trumpet.

Now you need two things: a program that can handle soundfonts, and of course a soundfont. I have tried several programs, and my two favorites in terms of simplicity and beginner-friendliness are XMPlay and SynthFont.

Download sources:

A first small soundfont for testing is also available on the SynthFont website:

It might be a good idea to create a separate folder for your soundfonts (e.g. “My Documents\soundfonts”), which will hopefully soon be filled with many other soundfonts. For the moment, however, this first one will do. Now let’s have a look at the above-mentioned programs.

XMPlay

XMPlay
XMPlay

XMPlay is actually just a normal audio player (like Winamp, for example). But with the help of the additional MIDI plug-in you can load one or more soundfonts and use them for MIDI playback. The program does not require an installation, but can be simply extracted to a folder (e.g. “C:\Program Files\XMPlay”). After that just unpack the MIDI plug-in into the same folder.

XMPlay options
XMPlay options

You can now already load a MIDI file in XMPlay (using the small plus sign in the playlist window). However, if you try to play the file, you will hear nothing, not even the horrible Microsoft wavetable sound. This is because XMPlay is actually not a MIDI player, but can be made capable of playing MIDI files with soundfonts by installing the MIDI plug-in. Therefore you need to configure the plugin and tell it which soundfont it should use. Click on the little wrench to get to the options. Then select “Plugins” and double-click on “MIDI” in the right window. Now click “add” and choose your downloaded soundfont SYNTHGMS.SF2. Since this soundfont represents a complete General MIDI bank, the lower window has now filled with the well-known instruments from 000 (Grand Piano) to 127 (Gunshot). Now confirm your choice with “Apply”, close the options window, and click the play button. If all went well, you should now hear something. The sound is not overwhelming, but as I said, SYNTHGMS is really just a small soundfont for testing purposes.

There are also other soundfonts that do not include all 127 instruments, but only one, for example. You can use such a soundfont after assigning a whole sound bank like SYNTHGMS to your song, to replace individual instruments yet again and thus refine the sound of your songs even more. For example, if you don’t like the sound of the saxophone in the James Bond theme, you can just load another soundfont and assign it only to the saxophone, while all other instruments keep their SYNTHGMS sound. So let’s get ourselves a soundfont which, as mentioned above, contains only one instrument. I’ll provide one here that is very suitable for testing, because its futuristic synthetic sound can always be well discerned.

Now open the same window again in which you loaded your soundfont before, and double-click the instrument that you would like to replace in the the lower white box. In my example that’s number 66, the tenor saxophone. This will open a file browser, in which you should navigate to “Cool_Thing.sf2” and select it. A new entry should appear at the top of the upper white field, which states that channel 66 is now to be played with the soundfont “Cool Thing”. The list is cascading, so to speak: The player will first check in the uppermost soundfont, whether it contains appropriate instruments to play the selected MIDI file. If this is not the case, the program simply goes further down the list, until it encounters a soundfont that contains a suitable instrument. You can easily test this by moving the entry “Cool Thing” to the very bottom: The saxophone will then be played by SYNTHGMS again, because XMPlay sees that it already contains a saxophone sound. So there’s no need for the program to go further down the list and look for other saxophone sounds.

The further procedure is obvious: The lowest entry should preferably be a good, big soundfont that contains all or nearly all instruments. Based on this one, you can then “stack” additional soundfonts to replace individual instruments according to your personal taste, thus refining the sound further and further.

Synthfont

Synthfont ist eigentlich ein Programm, das noch mehr kann als nur MIDI-Dateien mit Soundfonts abzuspielen. Ich werde hier aber nur diesen einen Aspekt erklären – der Rest interessiert uns ja erst mal nicht. ;)

Üblicherweise fragt Synthfont beim Starten, ob man gleich eine Standard-Soundfont zum Abspielen von MIDIs auswählen möchte. Sollte es das nicht tun, so kann man dies auch später jederzeit nachholen, indem man auf den großen “Setup-and-Options”-Button oben links klickt. Im folgenden Fenster klickt man auf den Reiter “Files and Folders”, wo man unter “Default soundfont file” seine Lieblings-Soundfont angeben kann. Nun kann man auf “Open MIDI or Arrangement” klicken und eine MIDI-Datei laden. Sie wird nun logischerweise gleich mit der eben gewählten Soundfont abgespielt.

Synthfont
Synthfont

Auch hier können wir wieder einzelne Instrumente ersetzen. (Im Gegensatz zu XMPlay klappt das bei Synthfont jedoch nicht “im laufenden Betrieb”: die Musikwiedergabe muß hier zuerst gestoppt werden.) Dazu macht man einen Rechtsklick auf den entsprechenden MIDI-Track und klickt dann auf “Assign SoundFont File” (s. Abbildung). Im nun folgenden Fenster wählt man links seine gewünschte Soundfont aus. Rechts kann man, wenn man möchte, noch ganz genau angeben, welches Instrument aus dieser Soundfont benutzt werden soll. Wenn man keins auswählt, wird Synthfont einfach dasjenige nehmen, das dem Instrument in der MIDI-Datei enstpricht. Sollte das Programm in einer Soundfont kein passendes Instrument finden, so wird es uns in einem Dialogfenster darum bitten, daß wir eines auswählen. Man kann das Instrument später noch jederzeit ändern, indem man wieder einen Rechtsklick auf den Track macht und diesmal “Assign Preset” wählt.

Weitere Soundfonts und Zubehör

Es gibt noch eine weitere erfreuliche Parallele zwischen Soundfonts und Textschriftarten: So, wie Hunderte von Menschen hobbymäßig jeden Tag neue Schriftarten erfinden und sie dann kostenlos im Internet zur Verfügung stellen, so gibt es glücklicherweise auch Leute, die eigene Soundfonts entwickeln und zum kostenlosen Download anbieten. Die folgende Liste beinhaltet einige beliebte/bekannte Soundfonts, mit denen man sich eine gute Basis verschaffen kann. Doch Achtung: Manche Soundfonts (besonders Crisis 3) sind sehr groß und für ältere Computer nicht geeignet. (Die in Klammern stehenden Zahlen geben jeweils die Endgröße der entpackten Soundfont an.)

Besonders große Soundfonts werden oft im sfArk-Format komprimiert, das man mit dem gleichnamigen Programm wieder entpacken kann.

Downloadquellen:

Darüber hinaus existiert noch das früher verbreitete Format sfPack von Megota Software. Vor einigen Jahren verschwand jedoch plötzlich die Homepage der Firma, und die Arbeit an dem Programm wurde eingestellt. Dennoch gibt es noch unzählige im sfPack-Format komprimierte Soundfonts im Internet, weshalb ich hier wenigstens “inoffizielle” Downloadquellen angeben will:


55 responses to “Better Midi sound”

  1. Danke für den Virtual Midi Link ;)

    Mit dieser Software und den entsprechenden Fonts läuft es sehr gut.

    Auch bei älteren PC Spielen die Midi nutzen merkt man teilweise einen deutlich besseren Klang.

    lg

  2. Hi, danke für die tolle Seite. Kleines Problem: Habe midi-Plugin in das gleiche Verzeichnis entpackt wie XMPlay, es wird aber unter Plugins nicht angezeigt. Ich nutze win10. Geht das da nicht?

  3. Hi Matthias,

    habe auch Windows 10, und es funktioniert noch. Der Eintrag wurde nur inzwischen eine Ebene tiefer versteckt. ;) D.h. Du kannst den Eintrag “Plugins” nochmal aufklappen und darunter auf “Input” gehen. Dann sollte rechts das MIDI-Plugin mit aufgelistet sein, und es geht ganz normal weiter wie hier beschrieben.

    Mittlerweile bin ich übrigens zu foobar2000 konvertiert. Auch dafür gibt es nämlich ein MIDI-Plugin. (Dieses muss man in den components-Ordner im foobar-Installationsverzeichnis kopieren, also z.B. C:\Program Files (x86)\foobar2000\components.) In foobar kann man dann unter “Library > Configure > Playback > Input > MIDI Player” verschiedene Einstellungen vornehmen, z.B. unter “Output” BASSMIDI wählen und oben rechts eine Soundfont auswählen.

  4. Hallo Ginchen,

    ich finde es Klasse wie du Dich mit dem Thema beschäftigt hast und welche Lösungen du anbietest. Du hast damit eine einzigartige Seite geschaffen.

    Ab Windows 10-64Bit gibt es Probleme mit der Installation des SYXG.Synth zumindest wenn man nur diese Software einsetzen möchte.

    Er wird zwar installiert gibt aber nur den GS-Wavetable Sound wieder.
    Wenn man den Yamaha-Treiber anstelle MS GM-WavetableSynth anwählt gibt es eine Fehlermeldung.

    Abhilfe gibt es unter nachfolgendem Link. (Der installierte SYXG-Synht sollte vor den nachfolgenden Aktionen wieder deinstalliert werden).

    http://veg.by/en/projects/syxg50/

    Hier kann man den VST Midi Driver herunterladen und damit einen zweiten Systemsynthesizer (VSTi Midi Synth) erzeugen. Benötigt wird dazu die syxg50.dll aus dem Yamaha_syxg_vsti-Treiber. Wichtig ist dabei dass diese syxg50.dll in den gleichen Ordner kopiert wird, der vom VST Midi Driver erzeugt wird (in meinem Fall war das C:\Windows\SysWOW64\vstmididrv) dann muss die VST-Driver Configuration aufgerufen werden und zunächst mit LOAD VSTi die vstmididrv.dll gewählt werden und anschließend mit Configure Vsti die syxg50.dll gewählt werden.

    Mit dem Van Basco Karaocke Player kann nun unter Einstellungen ein VSTi Midi Synth (Port A) oder Port (B) gewählt werden. Dies ist die hochwertige 4MB Wavetable Version.

    Nun kann auch der normale SYXG-Synth von deiner Seite installiert werden und auch dort findet sich jetzt unter Einstellungen der VSTi Midi Synth.

    Vielleicht kannst du das noch in Deine Seite einbinden und auch die Software speichern, wer weiß wie lange die Software verfügbar ist.
    Vieleicht kann der eine oder andere was damit anfangen. Für Windows10-32Bit habe ich noch einen SYXG50-Nt Synthesizer der sich problemlos installieren läßt, den kann ich Dir gerne zusenden.

    Mit dem CoolSoftSynt/Foobar/Synthfont habe ich keine so guten Erfahrungen gemacht. Das liegt aber hauptsächlich daran, dass die frei erhältlichen Soundfonts (Vienna, Arachno, Chorium, WeedsGM3, FluidR3, GeneralUser, Chrisis) nur einzelne Songs gut wiedergeben. Schon beim nächsten Song kann es ganz schrecklich klingen und man muß alle Fonds durchprobieren bis man einen halbwegs brauchbaren findet. Am besten gefällt mir noch der im Synthfond eingebaute Fond, aber auch der klingt kläglich wenn die Yamaha XG-Effekte verwendet werden, aber immer noch besser als Coolsoft oder Foobar. Kannst du mir einen Soundfond empfehlen ?

Leave a Reply

Your email address will not be published. Required fields are marked *