# Das &kmidi;-Handbuch

Bernd Johannes
Wuebben

    wuebben@kde.org

Greg
Lee

    lee@hawaii.edu

Frank
Schütte

    F.Schuette@t-online.de

Übersetzung
1999
2000
Greg Lee
2000-12-16
1.03.00

&kmidi; kann Midi-Dateien unter Verwendung von Instrumenten-Patches wiedergeben. Was eine Soundkarte wie die GUS (Gravis UltraSound) oder Sound Blaster AWE in Hardware bewerkstelligen, erledigt KMidi in Software.

KMidi
Midi
Spieler
Timidity
Midi
zu
Wav

## Einleitung

&kmidi; kann Midi-Dateien unter Verwendung von Instrumenten-Patches wiedergeben. Was eine Soundkarte wie die GUS (Gravis UltraSound) oder der Sound Blaster AWE in Hardware bewerkstelligen, erledigt &kmidi; in Software. Sie benötigen lediglich eine einfache Soundkarte mit einem billigen Soundchip. Selbst wenn Sie über eine GUS oder AWE verfügen, lohnt sich ein Versuch.

Falls Sie der Klang nicht zufrieden stellt, können Sie sogar selbst Hand anlegen, da der Quelltext frei verfügbar ist.

&kmidi; benötigt allerdings einen gewissen Anteil an der CPU-Zeit, um seine Aufgabe zu erledigen. Das Öffnen von neuen Fenstern oder manchmal bereits das Rollen eines Fensterinhalts kann Aussetzer in der Musikwiedergabe verursachen. Sie benötigen zusätzlich einige Patch-Sätze (siehe unten). Sie sind zu groß (10-12 MB), um sie in eine KDE-Distribution aufzunehmen, daher sind nur 5 Beispiel-Patches beigelegt. Das Programm kann 257 Bänke mit je 128 Instrumenten verwalten.

&kmidi; basiert auf Tuukka Toivonens wundervollem TiMidity-Programm. Es erledigt die meiste Arbeit. &kmidi; ist ein GUI für TiMidity und daher ist TiMidity selbst und andere Benutzeroberflächen in der Quelltextdistribution von &kmidi; enthalten. Vielen Dank an Tuukka!

&kmidi; unterstützt zur Zeit (Version 1.3) die folgenden Plattformen:

- &Linux;

- FreeBSD

- DEC OSF/1

- &HP-UX;

- SunOS

- Sun &Solaris;

Portierungen auf andere Plattformen sollten einfach sein. Kontaktieren Sie mich bitte, wenn Sie &kmidi; auf ein anderes System portiert haben.

Weitere Informationen zur Benutzung, die nicht in dieser Dokumentation enthalten sind, finden Sie auf den `timidity`-Handbuchseiten (man-pages).

Da Midi-Dateien typischerweise lediglich einen Umfang von 50 KB oder weniger haben, können Sie leicht heruntergeladen werden, so dass es Ihnen niemals an großartigen MIDI-Dateien zum Abspielen mangeln wird.

Viel Spaß mit &kmidi;!

Bernd Johannes Wuebbenwuebben@kde.org

## Benutzung

### Allgemeines zur Benutzung

Beim ersten Start von &kmidi; sehen Sie den Namen einer Beispiel-Mididatei im schwarzen Fenster. Klicken Sie zum Abspielen auf den Wiedergabe-Knopf. Bewegen Sie den Mauszeiger von Knopf zu Knopf und Sie erhalten jeweils eine kurze Beschreibung der jeweiligen Funktion.

Klicken Sie auf das KMidi-Logo links oben, um die untere Anzeige einzublenden. Sie zeigt in einem schwarzen Fenster, der Kanal-Anzeige, ein Säulendiagramm der Noten, die auf den 16 Midi-Kanälen abgespielt werden. Auf der linken Seite befindet sich ein Listenfeld zur Auswahl eines Patch-Satzes und zur Musikstückauswahl. Ein Mausklick auf das Liedtextlistenfeld zeigt eine Liste aller Beispieldateien, die der &kmidi;-Distribution beiliegen. Sie können eine zur Wiedergabe auswählen.

Klicken Sie auf den Knopf Informationen anzeigen, um Informationen über die aktuelle Mididatei und Karaoke-Texte zu sehen (falls die Midi-Datei solche enthält).

Klicken Sie auf Stückliste öffnen, um eine Stückliste zu öffnen. Wählen Sie im Menü Bearbeiten Stückliste bearbeiten..., um in Ihrem System nach Midi-Dateien zu suchen und eine Stückliste zusammenzustellen. Es werden nur Midi-Dateien im Dialog angezeigt (die Dateierweiterungen können `.mid` oder `.kar` sein). Doppelklicken Sie auf einen Dateinamen, um ihn in die Stückliste (auf der rechten Seite) aufzunehmen.

Wundern Sie sich nicht, dass einige Midi-Dateien wenige oder gar keine Klänge produzieren. &kmidi; hat standardmäßig nur eine geringe Anzahl an Instrumenten-Patches. Wie Sie weitere Patches erhalten, erfahren Sie im entsprechenden Kapitel dieser Dokumentation.

### Stücklisten

Klicken Sie auf den Knopf Auswerfen, um den Stücklistenmanager zu öffnen. Links sehen Sie das Verzeichnis, in dem Sie das letzte Mal die Stückliste editiert haben. Auf der rechten Seite sehen Sie Ihre augenblickliche Stückliste. Wählen Sie eine Datei auf der linken Seite zur Wiedergabe aus, indem Sie darauf doppelklicken. Alternativ können Sie auch auf die Datei klicken und den Knopf Hinzufügen betätigen.

In der linken Liste werden nur Midi-Dateien angezeigt. Dabei werden keine komprimierten Midi-Dateien erkannt. Wenn Sie komprimierte Midi-Dateien (z.B. mit `gzip` komprimierte Dateien) verwenden, schalten Sie den Dateifilter durch Klicken auf Filter unten im Dialog aus. Dadurch werden alle Dateien angezeigt. &kmidi; verwendet übrigens nicht die Dateinamenserweiterung, um den Dateityp festzustellen, sondern liest einige Bytes am Anfang der Datei, um festzustellen, dass es sich um eine Midi-Datei handelt. Daher müssen Sie nicht die Endung `.mid` für Ihre Midi-Dateien verwenden.

In der unteren Liste werden die bereits definierten Stücklisten angezeigt. Anfangs gibt es nur eine einzige Liste mit dem Namen default (Standard). Sie enthält die Beispieldateien der &kmidi;-Distribution. Sie können den Inhalt dieser Stückliste ändern, indem Sie diese Stückliste auswählen (falls sie noch nicht ausgewählt ist) und im Menü Datei Speichern auswählen. Dadurch wird der Inhalt der Stückliste durch die aktuell ausgewählten Musikstücke ersetzt. Wählen Sie stattdessen Datei Anhängen, um die Stücke der Stückliste zur Stücklistendatei hinzuzufügen. Sie können eine neue Stücklistendatei erstellen, indem Sie Datei Speichern unter... auswählen. Es erscheint ein Dialog zur Eingabe des neuen Stücklistennamens. Doppelklicken Sie auf den Namen einer Stückliste, um die aktuelle Stückliste durch den Inhalt dieser Stücklistendatei zu ersetzen. Das können Sie auch durch Klicken auf Stückliste auswählen und die Auswahl einer Stückliste im Hauptfenster erreichen.

Um eine Stückliste zu entfernen, wählen Sie sie durch Klicken auf ihren Namen aus und wählen Sie im Menü Datei Löschen aus.

Die vertikale Trennleiste zwischen den beiden Listen kann durch Ziehen mit der Maus verschoben werden. Ebenso kann die horizontale Trennleiste oberhalb der Stücklistennamen verschoben werden.

### Midi-Dateinamen

Die angezeigten Midi-Dateinamen im Hauptfenster unterscheiden sich geringfügig von den wirklichen Dateinamen, da &kmidi; zur besseren Lesbarkeit jedes Auftreten eines _ im Namen durch ein Leerzeichen ersetzt und eine eventuelle Endung auf `.mid` oder `.MID` weggelassen wird.

### Einrichtung

Klicken Sie auf KMidi einrichten, um den Einrichtungsdialog aufzurufen. Sie können hier die Hintergrundfarbe und die LED-Farbe der beiden Anzeigefenster auswählen. Die Farbe für Percussion in der Kanal-Anzeige ist nicht veränderbar -- sie ist fest eingestellt auf gelb.

### Patch-Sätze

In der unteren Anzeige befindet sich auf der linken Seite oben das Listenfeld Patch-Satz wählen. Standardmäßig gibt es hier drei Einträge: piano+guitar, piano und guitar. Der zweite und dritte Eintrag sind lediglich zur Illustration angegeben. Wenn Sie über einige Patch-Sätze verfügen, können Sie sie in diesem Listenfeld auswählen. Dazu müssen Sie &kmidi; entsprechend einrichten:

Erstellen Sie für jeden Patch-Satz eine `.cfg`-Datei, die eine Beschreibung der Patches, die Bänke und die Instrumentennummern (Midi-Programmnummern) enthält. Danach fügen Sie zur Datei `timidity.cfg` eine Zeile `source Dateiname` und davor eine Zeile if n ein, wobei Dateiname der Name der Beschreibungsdatei ist und n die Zeilennummer angibt, in der Dateiname in &kmidi;s Listenfeld Patch-Satz wählen erscheint. Dort können Sie dann auf den Namen klicken, um den Patch-Satz auszuwählen. Die Patch-Satznummern beginnen mit 0.

Die Bänke/Drumsets und die Namen von Patches müssen in den `.cfg`-Dateien immer angegeben werden, da sie sonst nicht geladen werden, selbst wenn sie vorhanden sind (GUS Patch-Dateien oder Soundfonts). So ist es einfach, gewisse Patches von einem Soundfont außen vor zu lassen und bessere aus einem nachfolgenden Soundfont zu laden. Geben Sie sie einfach nicht an, bevor Sie den Soundfont geladen haben.

Falls der Patch in der gleichen Bank oder dem gleichen Drumset mehrfach auftritt, beachtet &kmidi; nur die erste Deklaration. Sie sollten also ihre besten Soundfonts vorn eintragen.

Es existiert ein Hilfsprogramm namens `sf2cfg`, um eine `cfg`-Datei automatisch zu erzeugen, die alle Patches enthält, die in einem `sbk`/`sf2`-Soundfont enthalten sind. Beigelegt sind eine `cfg`-Beispieldatei für die Soundfonts `chaos8m.sf2` und `chaos12m.sf2` hinzugefügt.

### Mehrstimmigkeit (Polyphonie)

Hören Sie Aussetzer? Es ist möglich, dass &kmidi; beim Berechnen der Tonhöhe der Instrumenent-Patches, beim Signalfiltern, Notenkombinieren u.s.w. nicht schnell genug ist. Sie können die Situation eventuell verbessern, indem Sie die Mehrstimmigkeit im Drehregler Mehrstimmigkeit einstellen anpassen. Damit wird die maximale Anzahl unterschiedlicher Stimmen begrenzt, die gleichzeitig wiedergegeben werden. Durch Verringerung der Mehrstimmigkeit wird die Wiedergabe weniger rechenintensiv. Allerdings gehen dadurch vielleicht einige Chor- oder Hall-Effekte verloren, oder es werden einige Noten abgeschnitten oder gar völlig weggelassen. (In einigen Fällen generiert &kmidi; zusätzliche Noten, um die Effekte Midi-Chor oder Hall anzunähern.)

### Effekte

Effekte haben Auswirkungen auf den Klang, wobei deren Auswirkungen nicht nicht immer ganz klar sind. Effekte können auf vier Arten eingeschaltet und auf zwei Arten gesteuert werden.

Ein Midi-Stück kann Effekte für alle Instrumente auf jedem einzelnen der 16 Midi-Kanäle einstellen. Andererseits können mehrere Effekte für mehrere Kanäle eingeschaltet werden. Klicken Sie auf den Knopf eff unten rechts im Hauptfenster, um folgende Midi-Effekte anzunähern: Chor, Hall, Celeste und Phaser. Jeder dieser Effekte wird aber nur dann angewandt, wenn er durch das Midi-Stück verwendet wird. Für zwei weitere Midi-Standardeffekte, nämlich Harmonics und Helligkeit (Brightness), sind noch keine Filter implementiert (die anderen Filter stammen von Nicolas Witczak).

Ist der Knopf eff nicht gedrückt, werden dennoch eine Art von Chor und Hall auf Anforderung eingesetzt. Diese werden aber auf eine andere Weise erzeugt. Es werden anstatt Filtern zusätzliche Noten erzeugt. Sie werden für den Chor-Effekt leicht verstimmt und für den Hall-Effekt leicht verzögert. Außerdem wird die Hüllkurve und das Vibrato angepasst. Bei ausgeschaltetem eff werden Celeste- und Phaster-Effekte nicht wiedergegeben.

Effekte können zweitens durch einen Patch eingeschaltet werden. Das bedeutet, dass das Instrument eine bestimmte Chor- und/oder Hallstärke enthält . AWE-Patches enthalten in der Regel Effekte, während Gravis-Forte Patches keine enthalten. (Daher klingen AWE-Patch-Sätze in der Regel voller.) Auf diese Art angeforderte Effekte werden durch Geisternoten implementiert und werden nicht durch den Knopf eff beeinflusst.

Drittens können Sie selbst Effekte anfordern. Dazu befinden sich rechts unten im Hauptfenster vier Ankreuzfelder. Jedes der Felder kann einen von drei Zuständen annehmen: Normal (Standardeinstellung), Extra und Aus. Die mittleren beiden Felder kontrollieren Chor und Hall. Bei Normal werden die Effekte wie oben beschrieben eingesetzt. Werden Sie auf Extra geschaltet, werden für alle Instrumente und alle Kanäle extra Noten für Chor und Hall erzeugt. Das geschieht zusätzlich zu den Noten, die durch Klicken auf eff angefordert werden. Werden Sie auf Aus geschaltet, werden keine extra Chor- oder Hall-Noten erzeugt.

Schließlich können Effekte durch Midi-Systemnachrichten in einer Midi-Datei angefordert werden -- sysexes. Sie sind zur Kontrolle der Hardware spezieller Synthesizer gedacht. &kmidi; enthält eine Anzahl Dekoder für Sysexes der RolandGS- und YamahaXG-Synthesizer und versucht die Wirkung dieser Effekte möglichst gut nachzuempfinden. Chor, Hall und ihre Variationen werden durch Geisternoten simuliert und können durch die im vorherigen Absatz beschriebenen Ankreuzfelder ausgeschaltet werden. Wenn allerdings die Celeste-Variation eines Chores mit einer XG-sysex angefordert wird, aktiviert das Witczak's Celeste-Filter falls der Knopf eff gedrückt ist.

### Befehlszeilen-Parameter

Bis auf die Angabe von einem oder mehreren Midi-Dateinamen auf der Befehlszeile ist das Wissen um die weiteren Parameter in diesem Abschnitt wahrscheinlich nicht besonders nützlich für Sie. Falls Sie diese Optionen dennoch benötigen, bevorzugen Sie vermutlich die Verwendung der Befehlszeilenversion dieses Programmes: timidity.

    kmidi
    options filename

Verwenden Sie "-" als Dateiname, um eine MIDI-Datei von `stdin` zu lesen.

#### Optionen:

`-o` `Dateiname`

  Leitet die Ausgabe um in eine Datei. Dabei kann es sich um eine echte Datei, ein Gerät oder einen HP-UX-Audioserver handeln, abhängig vom Ausgabemodus, der mit der Option `-O` eingestellt wird. Die Spezialdatei ``-'' leitet die Ausgabe nach `stdout` um.

`-O` `Modus`

  Wählt den Ausgabemodus aus den vorhanden Möglichkeiten aus. Modus muss mit einem der von TiMidity unterstützten Ausgabemodusnamen beginnen. Führen Sie TiMidity mit der Option `-h` aus, um eine Liste anzeigen zu lassen.

`-s` `Frequenz`

  Sampling-Frequenz `Frequenz` (Hz oder kHz) einstellen. Nicht alle Soundgeräte unterstützen alle Frequenzen -- implementationsabhängig kann eine angenäherte Frequenz verwendet werden.

`-a`

  Antialiasing-Filter aktivieren. Samples werden vor der Wiedergabe durch einen Tiefpassfilter geleitet. Dadurch wird das bei niedrigen Resampling-Frequenzen produzierte Aliasing-Geräusch verringert.

`-f`

  Schnelles Ausklingen aktivieren. Schaltet schnelle Hüllkurven ein. Einige Midi-Dateien klingen besser, wenn die Noten langsamer ausklingen -- das erzeugt einen Eindruck von Nachhall (Reverb).

`-p` `n`

  Stellt die Mehrstimmigkeit ein (Anzahl gleichzeitig wiedergegebener Stimmen).

`-A` `n`

  Lautstärke um `n` Prozent erhöhen (kann zu Clipping führen).

`-C` `n`

  Setzt das Verhältnis von Sampling- und Kontrollfrequenz fest. Hier wird eingestellt, wie oft die Hüllkurve neu berechnet wird -- ein kleines Verhältnis führt zu besserer Wiedergabequalität, benötigt aber mehr CPU-Zeit.

`-E`

  Schaltet Witczak's Effektfilter für Chor, Hall (Reverb), Phaser und Celeste ein.

`-&num;` `n`

  Patch-Satz wählen.

`-L` `Verzeichnis`

  Füge Verzeichnis zum Suchpfad hinzu.

`-c` `Datei`

  Zusätzliche Konfigurationsdatei einlesen.

`-I` `n`

  Standardmäßig Programmnummer `n` verwenden.

`-P` `Datei`

  Benutze `Datei` als Patch-Datei für alle Programme

`-D` `n`

  Spiele Schlagzeug auf Kanal `n`

`-Q` `n`

  Ignoriere Kanal `n`

`-F`

  Schnelles "Panning" aktivieren

`-U`

  Instrumenten-Patches zwischen der Wiedergabe von Midi-Dateien aus dem Speicher entfernen

`-i` `Modus`

  Benutzeroberfläche auswählen (siehe Liste)

`-B` `n`

  Anzahl Puffer-Fragmente festlegen

`-h`

  Hilfeinformationen anzeigen

#### Verfügbare Ausgabemodi (`-0`)

`-O` `d`

  &Linux; `dsp`-Gerät

`-O` `w`

  RIFF-WAVE-Datei

`-O` `r`

  Rohe Wellenformdaten

#### Ausgabeformatoptionen (anhängen an `-O`)

``8'`

  8-bit Samplebreite

``1'`

  16-bit Samplebreite

``U'`

  uLaw Kodierung

``l'`

  lineare Kodierung

``M'`

  Mono

``S'`

  Stereo

``s'`

  Vorzeichenbehaftete Ausgabe

``u'`

  Vorzeichenlose Ausgabe

``x'`

  Ausgabe Byte-vertauscht

#### Verfügbare Benutzeroberflächen (`-i`)

`q`

  &kmidi; &Qt;-Oberfläche

`d`

  einfache (dumb) Oberfläche

#### Oberflächen-Einstellungen (anhängen an `-i``?`)

``v'`

  Mehr Informationen anzeigen (kumulativ)

``q'`

  Weniger Informationen anzeigen (kumulativ)

``t'`

  Wiedergabe verfolgen (Trace)

`-i`

  Benutzeroberfläche auswählen (siehe weiter unten)

## Fragen und Antworten

Woher bekomme ich einen vollständigen Patch-Satz?

Bitte lesen Sie dazu gehörigen Abschnitt im Kapitel zur Installation von &kmidi;.

## Design

### Prozesse

&kmidi; ist eine Benutzeroberfläche, die die Bildschirmdarstellung übernimmt und Benutzereingaben verarbeitet. &kmidi; wird als eigenständiger Prozess neben &timidity; ausgeführt. Das letztere Programm liest Midi-Dateien und gibt sie wieder.

### Synthesizer-Modell

&timidity; hat einen Tongenerator, zwei Hüllkurvengeneratoren, drei Sinusoszillatoren für tiefe Frequenzen, einen Tiefpassfilter und eine Einheit für Effekte. (Der Tiefpassfilter wird nur verwendet, wenn die vierte Interpolationsoption von &kmidi; gewählt und der Knopf filt gedrückt ist -- momentan funktioniert das noch nicht zuverlässig.)

Der Tongenerator resampelt Intrumenten-Patches mit den Grundfrequenzen, die für die wiedergegebenen Noten geeignet sind. (Der Interpolationsalgorithmus kann durch vier Ankreuzfelder im oberen Hauptfenster ausgewählt werden.)

Der Hüllkurvengenerator moduliert jede Note nacheinander mit einer Attack-, einer Hold-, einer Abkling- und einer Release-Phase. Einer der Generatoren beeinflusst die Amplitude, der andere die Tonhöhe und/oder die Grenzfrequenz des Tiefpassfilters.

Die Oszillatoren für tiefe Frequenzen modulieren die Amplitude (für Tremolo), die Frequenz (für Vibrato) und die Grenzfrequenz des Tiefpassfilters (XG rezo sweep).

Die Einheit für Effekte liefert Echo-, Verstimmungs-, Hall-, Chor-, Celeste- und Phaser-Effekte. Echo (durch zusätzlich generierte Echonoten) und Hall (durch einen Filter erzeugt) erzeugen zusammen Midi-Hall (Midi-Reverberation). Verstimmung (Detuning--durch Erzeugung von zusätzlichen in der Höhe veränderten Noten) und Chor (durch einen Filter erzeugt) implementieren zusammen Midi-Chor. (Die Effektfilter von &kmidi; sind nur aktiv, wenn der Knopf eff gedrückt ist. Echo und Verstimmung können mit den mittleren beiden Ankreuzfeldern auf der rechten Seite des unteren Hauptfenster und durch die Chor- und Hall-Menüs eingestellt werden.)

Instrumente können ein oder zwei Tonelemente und für jedes davon einen Patch-Satz mit Patches für unterschiedliche Bereiche der Lautstärke (üblich für Klaviere) und Tonhöhe beinhalten. GUS Patch-Sätze enthalten allerdings lediglich ein Tonelement und einen Lautstärkebereich pro Instrument. (Wählen Sie das Ankreuzfeld ganz rechts aus, um &kmidi; zur Anzeige der Patch-Satznamen im Informationsfenster beim Laden anzuzeigen. Dabei wird der Lautstärkebereich angezeigt und `(2)` bei zwei Tonelementen.)

### Midi-Implementierung

Fast alle Midi- und Kontrollnachrichten sind irgendwie implementiert (was bedeutet, dass sie irgend etwas bewirken, wenn auch nicht notwendigerweise das Richtige). NRPN-Kontrollnachrichten zum Senden von Attack- und Abklingzeit sind nicht implementiert, da der Entwickler keine Midi-Dateien gefunden hat, die diese verwenden. Die "flanging"-Kontrollnachricht ist nicht implementiert (obwohl "flanging" innerhalb eines XG sysex-Dumps implementiert ist). Nur wenige der Kontrollnachrichten für Roland und Yamaha sysex-dumps sind implementiert.

&timidity; kann Midi-Dateien verwalten, die zur Wiedergabe auf bis zu vier verschiedenen Synthesizern gedacht sind. Für jeden der vier Synthesizer werden die 16 Kanäle getrennt verwaltet. Allerdings müssen die Synthesizer innerhalb der Midi-Datei mit Hilfe von Port-Befehlen (in Roland-GS oder Yamaha-XG sysex-dumps) ausgewählt werden. Einige Midi-Dateien für mehrere Synthesizer haben diese Port-Befehle nicht. (Das Informationsfenster zeigt Port-Befehle an, falls sie vorhanden sind.)

&kmidi;s Säulenanzeige der Kanalaktivität ist auf 16 Kanäle begrenzt. Das Kanaldiagramm der Patches mit horizontalen Balken für Steuerwerte ist auf einen Satz von 16 Kanälen begrenzt.

### Lautstärke

Lautstärkeunterschiede sind im Vergleich zum originalen &timidity; stark reduziert. Das verringert clipping (Abschneiden von Informationen) und erhöht die dynamischen Unterschiede. (Bei geringen Lautstärken können allerdings leider Artefakte entstehen). Falls Sie eine größere Lautstärke benötigen, sollten Sie diese an einer anderen Stelle einstellen. Verwenden Sie entweder &kmix;, um die Line-oder Mixerlautstärke für `/dev/dsp` zu erhöhen oder Sie erhöhen die Lautstärke an ihren Kopfhörern oder Aktivboxen.

### Geschwindigkeitsaspekte

&timidity; liefert unter Umständen die Daten nicht schnell genug an den Sound-Treiber und die Folge sind Aussetzer in der Musik. &timidity; versucht solche Aussetzer zu vermeiden, indem es seinen Pufferinhalt überwacht und beim Leerlaufen des Puffers den Berechnungsaufwand verringert: es verwendet einen gröberen Interpolationsalgorithmus zum Resampeln, es fügt keine Extranoten für Echo und Verstimmung für Hall- und Chor-Effekte ein, und es beendet Noten früher oder übergeht einzelne Noten vollständig. Daher kann es abhängig von Musikstück, Patch-Satz und Systemleistung zu einer Verringerung der Qualität kommen, wenn auch Aussetzer unterbleiben. Die LEDs des Hauptfensters von &kmidi; zeigen an, welche Anstrengungen &timidity; machen muss, um komplette Aussetzer zu vermeiden. (Anzeichen von "Verzweiflung": Die Puffer-LED ändert die Farbe von einem gesunden grün auf geschäftiges orange, die Interpolations-LED geht aus (was bedeutet, dass lediglich lineare Interpolation zum Resampeln verwendet wird), die Echo-LED oder die Verstimmungs-LED geht aus (was bedeutet, dass keine Extranoten oder verstimmte Noten wiedergegeben werden).

Zur Überwachung des Ausgabepuffers muss der Soundtreiber gefragt werden, wie viele Daten er gepuffert hat. Das funktioniert für Hannu Savolainen's OSS-Treiber (für &Linux; und einige andere Systeme), vielleicht auf älteren Sun-Workstations (es hat zumindest funktioniert), aber nicht auf anderen System.

Durch verschiedene Einstellungen kann man die von &timidity; verursachte Systemlast verringern.

1. Man verringert die erlaubte Polyphonie (Drehregler auf der unteren Leiste).

2. Man schaltet den eff-Knopf aus.

3. Man wählt eine billigere Interpolationsmethode (eines der Ankreuzfelder links auf der oberen Leiste).

4. Man schaltet Echo, Verstimmung und Stereo mit den drei linken Ankreuzfeldern der unteren Leiste aus.

5. Man wählt die Einstellung Trocken im Menü Hall.

Natürlich ist das mit einem Qualitätsverlust verbunden. Den filt-Knopf einzuschalten kostet nichts, solange gleichzeitig die Option C-Spline+Filter-Interpolation gewählt ist.

### Speicheraspekte

&timidity; kann eine große Menge Speicher für Patches verbrauchen. Anzeichen dafür ist eine geringe Antwortgeschwindigkeit ihrer Arbeitsoberfläche oder gar ein Absturz. Dieses Problem tritt wahrscheinlich nur bei großen sf2-Soundfonts mit mehr als 30 MB auf. Die Klavier-Patches des Personal Choice's PC400 Soundfonts können beispielsweise je 25 MB Speicher belegen. Nach der Wiedergabe einiger Midi-Dateien, die drei dieser Patches verwenden, sind 75 MB Speicher belegt. Im Einrichtungsdialog von &kmidi; können Sie die Obergrenze des von &kmidi; verwendeten Speichers festlegen. Das bedeutet, dass &timidity; früher geladene Patches verwirft, wenn die Obergrenze erreicht ist. Die Standardeinstellung von 60 MByte funktioniert auf einem System mit 48 MB RAM und 196 MB Cache-Speicher. Je niedriger Sie diesen Wert ansetzen, um so mehr Patches müssen während der Wiedergabe einer Stückliste zwischendurch nachgeladen werden. Wenn Sie über sehr viel RAM verfügen, können sie den Wert auf no limit setzen.

Wenn Sie den Wert hoch genug ansetzen, können ganze Soundfont-Dateien anstatt einzelner Patches geladen werden. Setzen Sie den Wert zu gering an, so ist das nachteilig, da Soundfont-Dateien in einem Stück weniger Speicher benötigen als die Patches, wenn Sie einzeln geladen werden (der Grund ist unklar).

Auf Little-Endian-Systemen wie x86 werden sf2-Dateien nicht eingelesen, sondern in den Speicher abgebildet. Damit erfolgt der Start wesentlich schneller. Für Big-Endian-Systeme konnte das bis jetzt noch nicht implementiert werden.

Nach der Wiedergabe jeder Midi-Datei gibt &kmidi; die durch Patches belegte Speichermenge im Informationsfenster aus.

Wenn Sie nur über wenig Speicher oder Auslagerungsspeicher verfügen, kann ihr System trotz einer niedrigen Obergrenze des von &kmidi; verwendeten Speichers abstürzen. Seien Sie daher vorsichtig mit großen Soundfonts.

## Mitwirkende und Lizenz

&kmidi; verwendet Tuukka Toivonen's &timidity;-0.2i-Programm Copyright (C) 1995 Tuukka Toivonen toivonen@clinet.fi. Eine erweiterte Version von Tuukka's Programm mit fünf weiteren Benutzerschnittstellen gehört zur &kmidi;-Distribution. (Informationen zur Kompilierung und Installation von &timidity; findet man weiter unten.)

&kmidi; und &timidity; verwenden AWE-SoundFont-Erweiterungen von Takashi Iwai iwai@dragon.mm.t.u-tokyo.ac.jp und die AMD InterWave-Erweiterungen von Greg Lee lee@hawaii.edu, welche die Verwendung von SoundFonts (`.sbk`/`.sf2`-Dateien) und IW-Patchsätze (`.fff`/`.dat`-Dateien) zusätzlich zu Gravis/Forte `.pat`-Dateien.

## Copyright

&kmidi; Copyright 1997 Bernd Johannes Wuebben wuebben@kde.org

&kmidi; verwendet Tuukka Toivonen's &timidity;-0.2i-Programm, Copyright © 1995 Tukka Toivonen toivonen@clinet.fi.

Deutsche Übersetzung der Dokumentation Frank Schütte F.Schuette@t-online.de

&underFDL; &underGPL;

## Installation

### Wie Sie &kmidi; bekommen

&kmidi; ist ein Teil des &kde;-Projekts (http://www.kde.org). Sie finden &kmidi; auf ftp://ftp.kde.org/pub/kde/, dem Haupt-&FTP;-Server des &kde;-Projekts.

### Anforderungen

Um &kmidi; erfolgreich kompilieren zu können, brauchen Sie die neueste Version von `kdelibs`. Alle benötigten Bibliotheken wie auch &kmidi; selbst finden Sie auf ftp://ftp.kde.org/pub/kde.

Die dumb Befehlszeilenoberfläche von &timidity; sollte auf jedem Standard-&UNIX; zu kompilieren sein. Die anderen Benutzeroberflächen stellen spezielle Anforderungen (Informationen in den verschiedenen `README`-Dateien der Distribution). Die &Motif;-Oberfläche funktioniert zufriedenstellend unter Lesstif, aber besser mit &Motif;.

### Kompilierung und Installation

Wenn Sie &kmidi; bereits installiert haben, so stellen Sie bitte sicher, dass Sie eine Sicherungskopie der Konfigurationsdateien haben (typischerweise zu finden unter `&dollar;`KDEDIR`/share/apps/kmidi/config/`), bevor Sie &kmidi; installieren, da diese sonst überschrieben werden. Genauso sollten Sie vor der Installation einer neuen Version von &timidity; (nicht-&kde;-Version) die Dateien unter `/usr/local/lib/timidity/` sichern. Wenn Sie umgekehrt eine komplett neue Installation dieser beiden Programme vornehmen wollen, sollten Sie diese Dateien löschen, da sie unter Umständen von der neuen Version nicht überschrieben werden.

Wenn Sie die komplette kdemultimedia-Distribution haben, wechseln Sie ins kdemultimedia-Verzeichnis und tippen:

    &percnt;./configure

Um alle Benutzeroberflächen einzubeziehen, tippen Sie folgendes:

    &percnt;./configure
    --enable-interface=ncurses,xaw,gtk,tcltk,slang,motif

Bleiben Sie in diesem Verzeichnis, wenn Sie alle Multimedia-Programme erzeugen wollen oder wechseln Sie ins Verzeichnis `kmidi`, falls Sie nur dieses eine Programm wollen. Dort tippen Sie:

    &percnt; make
    &percnt; make install

Die Nicht-&kde;-Version von &timidity;, `timidity`, wird auf die gleiche Art kompiliert und installiert wie &kmidi;. (Die Manualseite (`man`) `timidity.1` wird allerdings nicht automatisch in `/usr/man/man1` installiert.

### Woher bekommt man einen vollständigen Satz Patches?

&kmidi;/&timidity; kann zwei Arten von Patch-Sätzen benutzen: GUS-Patches und AWE32 SoundFonts (`sf2`). Ein Patch ist eine Menge von Samples und Parametern für ein einzelnes Instrument. Bei GUS befindet sich jeder Patch in einer eigenen Datei. AWE32 SoundFonts packen alles zusammen in eine einzige `.sf2-`-Datei (oder `.sbk`).

Der Autor empfiehlt `.sf2` SoundFonts, und davon besonders die bereits erwähnten Chaos-Fonts.

Im Einrichtungsdialog von &kmidi; finden Sie Hinweise zu Webseiten mit Patch-Sätzen. Hier sind einige zusätzliche Quellen:

Dan Hollis goemon@anime.net hat einen Patch-Satz zusammengestellt. Bitte besuchen Sie seine Seite auf http://www.anime.net/~goemon/timidity und helfen Sie ihm, diesen zum besten verfügbaren Satz zu machen.

Neu: Ich habe den oben erwähnten Patch-Satz auf ftp.kde.org hinaufgeladen. Der genaue Ort ist zur Zeit auf ftp://fiwi02.wiwi.uni-tuebingen.de/pub/kde/stable/Beta2/apps/multimedia/sound/. Diese Stelle kann sich allerdings noch ändern. Schauen Sie also auf ftp.kde.org ein wenig herum.

Patches können auch als .dep oder .rpm Module im Sunsite Archiv gefunden werden:

- Debian (.dep): timidity-patches_0.1.tar.gz

- RPM: timidity-patches-1-1.i386.rpm

- .srpm: timidity-patches-1-1.src.rpm-try2

Der Autor hat die oben genannten Patches (bis jetzt) nicht ausprobiert. Er selbst verwendet den Midia Patch-Satz sowie einige zusätzliche Patches und Schlagzeug-Sätze. Sie finden den Midia Patch-Satz auf ftp://archive.cs.umbc.edu/pub/midia/.

Weitere Patches finden Sie auf ftp://ftp.cdrom.com/pub/gus/sound/patches/files/. (Probieren Sie die gsdrum- und wow-Patches aus!)

Vincent Pagel hat eine Sammlung von Patches zusammengestellt. Dieser Link kann nur während der Nachtstunden in Paris erreicht werden: ftp://sig.enst.fr/pub/midi/instruments/ Sie finden die Konfigurationsdatei, die zu seinem Patch-Satz passt auf: ftp://sig.enst.fr/pub/midi/timidity_pagel.cfg

Besuchen Sie auch die TiMidity-Seite

und Takashis Homepage: http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/midi.html#TiMidity. Takashis Homepage empfiehlt den 8 MB AWE32 SoundFont `chaos8m.sf2` und den 12 MB großen AWE32 SoundFont `chaos12m.sf2`, welche ganz gut sind. Sie sind erhältlich unter http://soback.kornet.nm.kr/~chaos/sbawe32/sbawe32.htm, abgelegt als selbstextrahierende `.exe`-Datei.

#### Installation von Patch-Sätzen

Jeder der oben genannten Patch-Sätze (Sie benötigen nur einen) sollte eine `.cfg`-Datei enthalten, ähnlich jener, die in KMidi enthalten ist und sich in `KDEDIR/share/apps/kmidi/config` befindet. &kmidi; hat für eine Reihe von verbreiteten Patch-Sätzen, wie den Midia-Satz, fertige Konfigurationsdateien für Sie bereit. Für `.sf2` Soundfonts gibt es ein Hilfsprogramm, `sf2cfg`, das eine `cfg`-Datei aus einer `.sf2`-Datei erzeugt. Es wird zusammen mit &timidity; kompiliert.

Es ist nicht nötig, den Konfigurationsdateien die Endung `.cfg` geben. Es handelt sich um Textdateien, deren Struktur an einer anderen Stelle dieser Dokumentation beschrieben ist.

Zum Abschluss der Installation eines Patch-Satzes muss die Datei `timidity.cfg` geändert und die Konfigurationsdatei des heruntergeladenen Patch-Satzes eingebunden werden. Wenn Sie einen Blick in die `timidity.cfg`-Datei werfen, wird Ihnen völlig klar, was gemeint ist. Das war's. Jetzt können Sie auch die anderen MIDIs abspielen, die sich im &kmidi; Paket befinden (und natürlich alle anderen auch).

#### Verschiedenes

Gelegentlich werden Sie erleben, dass &kmidi; einen Patch für ein spezielles Instrument nicht findet. (Öffnen Sie das Informationsfenster, um eine Fehlermeldung zu sehen.) In diesem Fall müssen Sie sich nur den fehlenden Patch besorgen und ihn installieren, indem Sie ihn in das Verzeichnis `patch/` kopieren und Ihre Konfigurationsdatei bearbeiten, um &kmidi; anzuzeigen, dass der neue Patch nun verfügbar ist.

Manchmal klingt auch ein bestimmtes Instrument nicht besonders gut. In diesem Fall können Sie sich in einem der Ultrasound-Archive einen neuen Patch besorgen und damit den schlechteren ersetzen. Wie Sie feststellen werden, ist es völlig Ihnen überlassen, wie gut jedes Instrument klingt. Sie können sogar Ihre eigenen Patches mit dem `pat2wav` Programm herstellen, das in der &kmidi;-Distribution enthalten ist.