# Virtual MIDI Piano Keyboard

- Einleitung

- Loslegen

  - Was ist MIDI?

  - Tastenlayouts und Instrumentendefinitionen

  - MIDI-Verbindungen und virtuelle MIDI-Kabel

- Häufig gestellte Fragen

- Download

- Installation aus Quellen

  - Systemvoraussetzungen

  - Hinweise für Windows-Benutzer

  - Hinweise für Mac OS X - Benutzer

  - Hinweise für Packager und fortgeschrittene Benutzer

- Danksagungen

## Einleitung

Virtual MIDI Piano Keyboard ist ein MIDI-Generator und –Empfänger. Er produziert selbst keinen Sound, aber kann genutzt werden, um einen MIDI-Synthesizer (Hard- oder Software, intern oder extern) anzusteuern. Sie können die Tastatur benutzen, um MIDI-Noten zu spielen, ebenso wie die Maus. Man kann Virtual MIDI Piano Keyboard benutzen, um gespielte MIDI-Tasten von anderen Instrumenten oder MIDI-Datei-Playern mit zu verfolgen. Verbinden Sie dazu einfach den anderen MIDI-Port mit dem Eingangs-Port des VMPK.

VMPK wurde in Linux, Windows und Mac OSX getestet, aber vielleicht können Sie es ja in andere Systeme einbauen? Wenn ja, schreiben Sie doch dem Entwickler eine E-Mail.

Das Virtual Keyboard von Takashi Iway (vkeybd) war die Inspiration hierfür. Es ist eine wunderbare Software und hat uns viele Jahre gut gedient. Danke!

VMPK basiert auf einer modernen Grafik-Oberfläche namens Qt4, die exzellente Eigenschaften und Leistung bietet. Die MIDI Input/Output-Features stammen aus RtMIDI. Beide Oberflächen sind frei und systemunabhängig, verfügbar für Linux, Windows und Mac OSX.

Das alphanumerische Tastaturlayout kann innerhalb des Programms konfiguriert werden, und die Einstellungen werden in XML-Dateien gespeichert. Einige Layouts für spanische, deutsche und französische Tastaturen – Übersetzungen aus VKeybd – liegen schon bei.

VMPK kann Programm-Änderungsbefehle und Controller an einen MIDI-Synthesizer senden. Die Definitionen verschiedener Standards und Geräte können als .INS – Dateien erstellt werden, dieses Format wird auch QTractor und TSE3 benutzt. Es wurde von Cakewalk entwickelt und auch in Sonar benutzt.

Diese Software befindet sich noch in einer sehr frühen Alpha-Phase. Schauen Sie in die TODO-Datei für eine Liste von unfertigen Features. Die Autoren würden sich über Fragen, Fehlermeldungen und Vorschläge sehr freuen. Sie können das Tracking-System der SourceForge Projektseite benutzen.

Copyright (C) 2008-2013, Pedro Lopez-Cabanillas <plcl AT users.sourceforge.net>

Virtual MIDI Piano Keyboard ist Libre-Software, lizensiert unter den Bedinungen der GPL v3 Lizenz.

## Loslegen

### Was ist MIDI?

MIDI ist ein Industriestandard zur Verbindung von Musikinstrumenten. Er basiert auf der Übertragung der Aktionen eines Musikers auf ein anderes Instrument. Musikinstrumente mit MIDI-Schnittstellen haben typischerweise zwei DIN-Steckplätze, die mit MIDI IN, beziehungsweise MIDI OUT bezeichnet sind. Manchmal gibt es auch einen dritten Steckplatz, MIDI THRU. Um MIDI-Instrumente zu verbinden braucht man ein MIDI-Kabel zwischen dem MIDI OUT des sendenden und dem MIDI IN des empfangenden Instruments. Mehr Informationen und Tutorials wie dieses finden sich überall im Netz.

Es gibt auch Hardware-Schnittstellen zur MIDI-Nutzung auf Computern, die MIDI IN und OUT zur Verfügung stellen, und an die dann MIDI-Kabel angeschlossen werden. Dies ermöglicht dem Computer die Kommunikation mit externen MIDI-Instrumenten. Auch ohne MIDI-Hardware können Computer MIDI-Software intern benutzen. VMPK ist ein Beispiel für die Bereitstellung von MIDI IN und MIDI OUT – Kanälen. VMKP bietet virtuelle MIDI-Kabel, mit denen das Programm mit anderer Software oder der MIDI-Hardware des Computers verbunden werden kann. Dazu später mehr. Normalerweise wird VMPKs MIDI OUT mit dem Eingang eines Synthesizers verbunden, der dann das MIDI-Signal in Töne umwandelt. Eine weitere übliche Verbindung wäre die mit einem MIDI-Monitor, der MIDI-Daten in lesbaren Text umwandelt. Dies ist nützlich, um die Information zu verstehen, die vom MIDI-Protokoll übertragen wird. Unter Linux können Sie KMidimon, ausprobieren, oder unter Windows MIDIOX .

VMPK produziert keine Töne. Für diese braucht man einen MIDI Software-Synthesizer, um die gespielten Noten zu hören. Ich empfehle QSynth, eine graphische Benutzeroberfläche für Fluidsynth. Es ist auch möglich, den „Microsoft GS Wavetable SW Synth“ zu benutzen, der in XP zu finden ist. Natürlich wäre ein externes MIDI Synthesizer-Gerät eine noch bessere Lösung.

### Tastaturlayouts und Instrumentendefinitionen

VMPK kann helfen, Sounds in deinem MIDI Synthesizer umzuschalten und zu verändern. Hierzu muß eine Instrumentdefinitionsdatei definiert sein. Diese Definitionen sind Textdateien mit .INS-Endung, dasselbe Dateiformat, das auch von Qtractor (Linux) und Sonar (Windows) verwendet wird.

Bei der ersten Benutzung von VMPK sollte der Einstellungen-Dialog geöffnet werden, um eine .INS Definitions-Datei auszuwählen. Damit kann man dann das Instrument unter den zur Verfügung stehenden Instrumenten aussuchen. Eine Instrumenten-Definitionsdatei sollte im VMPK-Installationsordner zu finden sein (normalerweise: "/usr/share/vmpk" in Linux, oder "C:\Program Files\VMPK" in Windows). Diese Datei namens gmgsx.ins beinhaltet Definitionen für General MIDI, Roland GS und Yamaha XG Standards. Es ist ein sehr einfaches Format, und man kann es mit jedem Textverarbeitungsprogramm ansehen, verändern oder neue Dateien erzeugen. Es gibt eine Bibliothek mit Instrumentendefinitionen auf dem cakewalk FTP-Server.

Seit der Version VMPK-0.2.5 können auch Sound Font – Dateien (.SF2 oder DLS –Dateiformat) als Instrumentendefinitionen importiert werden. Dazu benutzt man am besten den Menüpunkt Datei -> SoundFont importieren.

Eine weitere mögliche Personalisierung ist das Tastaturlayout. Das normale Layout deckt mit der QWERTY-Tastatur etwa zweieinhalb Oktaven ab, aber es gibt einige andere Definitionen im Installationsordner, die auf andere internationale Tastaturanordnungen angepasst sind. Man kann sogar seine eigenen Layouts erstellen, wenn man den Menüpunkt Edit -> Keyboard Map nutzt. Es gibt auch die Option, die Layouts als XML-Dateien zu laden und zu speichern. Alle persönlichen Einstellungen, die ausgewählte MIDI-Palette und das MIDI-Programm, sowie die Controller-Werte werden bei Programmschluss gespeichert und beim nächsten Programmstart wiederhergestellt.

### MIDI-Verbindungen und virtuelle MIDI-Kabel

Um MIDI-Geräte zu verbinden brauchst man richtige MIDI-Kabel. Um MIDI-Software zu verbinden, sind nur virtuelle Kabel nötig. Für Windows gibt es einiges an Software dafür, so zum Beispiel MIDI Yoke, Maple, LoopBe1 oder Sony Virtual MIDI Router.

MIDI Yoke installiert einen Treiber und ein Bedienfeld, mit dem die Anzahl der MIDI Ein- und Ausgänge verändert werden kann (der Computer muss nach der Änderung dieser Einstellung neu gestartet werden). MIDI Yoke funktioniert folgendermaßen: Jede MIDI-Aktion wird an einen AUSgang gesendet, der mit einem EINgang übereinstimmt. Man kann den VMPK Ausgang mit Buchse 1 verbinden, und ein anderes Programm wie QSynth kann genau diese Aktionen dann aus Buchse 1 ablesen.

MIDIOX kann mehr Routen zwischen MIDI Yoke-Buchsen und den MIDI-Buchsen anderer Systeme erstellen. Dieses Programm beinhaltet außerdem weitere interessante Funktionen, zum Beispiel einen MIDI-Player, mit dem man gleichzeitig Songs in MIDI Synth anhören und in VMPK die gespielten Noten sehen kann (jeweils nur ein Kanal). Dazu kann man das „Routen“ – Fenster von MIDIOX benutzen, um den EINgang 1 mit Windows Synth zu verbinden. Stell die MIDI-Buchse des Player so ein, dass sie an MIDI Yoke 1 sendet. Und stell den VMPK EINgang so ein, dass er von MIDI Yoke 1 gespeist wird. Der Player sendet die Aktionen an den AUSgang 1, der gleichzeitig mit dem EINgang 1 und der Synth-Buchse verbunden ist.

Für Linux gibt es den ALSA-Sequenzer, der virtuelle Kabel beinhaltet. Die Buchsen werden dynamisch erstellt, wenn das Programm startet, so dass es keine festgelegte Nummer wie in MIDI Yoke gibt. Das Befehlszeilen-Programm „aconnect“ ermöglicht die Verbindung und Trennung der virtuellen MIDI-Kabel zwischen den Buchsen, egal ob Hardware-Schnittstellen oder Programme. Eine hübsche grafische Oberfläche, die ebenfalls virtuelle MIDI-Verbindungen ermöglicht, ist QJackCtl. Der Hauptzweck dieses Programms ist die Verwaltung (Starten, Stoppen, Überwachen) des Jack daemon. Jack stellt virtuelle Audiokabel zur Verfügung, die die Soundkarte mit den Audioprogrammen verbinden, ähnlich wie die virtuellen MIDI-Kabel, aber für digitale Audiodaten.

## Häufig gestellte Fragen

### Wie stellt man 88 Tasten dar?

88 ist eine willkürlich gewählte Zahl an Tasten, die von den (meisten) modernen Pianoherstellern verwendet wird, der aber Orgel- und Synthesizerhersteller nicht folgen. VMPK kann so eingestellt werden, dass zwischen einer und zehn Oktaven dargestellt werden. Bei sieben Oktaven werden 84 Tasten dargestellt, bei 8 Oktaven sind es dann 98. Es gibt keine Möglichkeit, genau 7 ¼ Oktaven darzustellen.

### Es kommt kein Ton

VMPK erzeugt selbst keine Töne. Sie brauchen einen MIDI Synthesizer, und bitte lesen Sie diese Anleitung nocheinmal.

### Einige Tasten bleiben stumm

Wenn Kanal 10 auf einem Standard-MIDI-Synthesizer eingestellt ist, spielt er Percussion-Sounds auf einigen Tasten, aber nicht auf allen. Auf melodischen Kanälen (also allen außer Kanal 10) kann man verschiedene Töne innerhalb eines begrenzten Notenbereichs (patches) auswählen. In der Musik nennt sich das Tessitura.

### Die “Grab Keyboard” – Option versagt

Das kommt häufiger bei Linux-Nutzern vor. Die Option funktioniert gut bei KDE3/4 desktops, die den Standard-kwin Fenstermanager benutzen. Sie funktioniert auch mit Enlightenment und Window Maker, allerdings NICHT mit Metacity und Compiz, die häufig bei Gnome-Setups vorkommen. Es ist ausserdem bekannt, daß diese Option die normale Benutzung von Ausklappmenüs in GTK2-Anwendungen behindert. Es gibt keine bekannte Lösung für dieses Problem, außer die Fehlerentstehung zu vermeiden, wenn man diese Option wirklich unbedingt braucht.

### Patch-Namen stimmen nicht mit den wirklichen Sounds überein.

Es muß eine .INS-Datei angegeben werden, die das Sound Set oder den Soundfont des Synthesizers genau definiert. Die mitgelieferte Datei (gmgsx.ins) beinhaltet nur die Definitionen für Standard GM, GS und XG-Instrumente. Wenn der gespielte MIDI-Synthesizer nicht genau auf einen dieser Standards passt, muß man sich das entsprechende .INS-File besorgen, oder eines selbst erstellen.

### Wie sieht die Syntax der Instrumentendefinitionen (.INS) aus?

Eine Erklärung des INS-Formates gibt es hier.

### Kann ich meine Instrumentendefinition für vkeybd in ein .INS-File umwandeln?

Sicher. Hierzu benutzt man einfach das AWK-Script “txt2ins.awk” Es kann sogar die sftovkb-Anwendung von vkeybd benutzt werden, um aus jeder beliebigen SF2 SoundFont-Datei eine .INS-Datei zu erstellen, aber es gibt auch eine Funktion, um Instrumentennamen aus SF2 und DLS – Dateien in VMPK zu importieren.

    $ sftovkb SF2NAME.sf2 | sort -n -k1,1 -k2,2 > SF2NAME.txt
    $ awk -f txt2ins.awk SF2NAME.txt > SF2NAME.ins

Das AWK-Script “txt2ins.awk” befindet sich im VMPK-Installationsordner.

## Download

Die neuesten Quellen, Windows und Mac OSX – Pakete gibt es auf der SourceForge Projektseite.

Es gibt auch installationsfertige Linux-Pakete für:

- openSUSE, vom openSUSE Build Service

- Debian, Offizielle Repositories

- Ubuntu From Scratch

- Arch Linux

- Pardus

- Gentoo

- Zenwalk

## Installation aus Quellen

Die Quellen werden von http://sourceforge.net/projects/vmpk/files heruntergeladen. Man entpackt sie dann in das Benutzerverzeichnis und wechselt in das entpackte Verzeichnis.

    $ cd vmpk-x.y.z

Bei der Vorbereitung des Erstellungsprozesses kann zwischen Cmake und Qmake gewählt werden, dabei ist Qmake aber eher für Tests und Entwicklung vorgesehen.

    $ cmake .
    or
    $ ccmake .
    or
    $ qmake

Danach das Programm kompilieren:

    $ make

Sobald das Programm erfolgreich kompiliert wurde, kann es installiert werden:

    $ sudo make install

### Voraussetzungen

Um VMPK fehlerfrei kompilieren und benutzen zu können, benötigt man Qt 4.6 oder eine spätere Version, d.h. man installiert am besten die entsprechenden -devel Pakete, die von der Linuxdistribution bereitgestellt werden. Die Opensource Qt Pakete können auch direkt von qtsoftware.com (ehemals Trolltech) heruntergeladen werden.

RtMIDI ist in dem Quellpaket enthalten. Es basiert auf dem ALSA-Sequenzer in Linux, WinMM in Windows und CoreMIDI in Mac OSX, die die jeweils eigenen MIDI-Systeme in den Plattformen sind.

Das Erstellsystem basiert auf CMake.

Man braucht außerdem den GCC C++ - Compiler. MinGW ist eine Windows-Version davon.

Alternativ kann auch ein Windows Setup-Programm mit NSIS erstellt werden.

### Hinweise für Windows-Benutzer

Um die Quelldateien für Windows zu kompilieren, lädt man entweder das .bz2 oder das .gz Archiv herunter und entpackt es mit einem Hilfsprogram, das dieses Archivformat unterstützt, z.B. 7-Zip.

Vor dem Erstellen muß das Quellpaket konfiguriert werden, dies geschieht entweder mit qmake (von Qt4) oder CMake. Die Verzeichnisse für die Qt4 Binärdateien, MinGW Binärdateien und die CMake Binärdateien müssen der PATH Umgebungsvariable hinzugefügt werden, wenn dies nocht nicht der Fall ist. Das CMakeSetup.exe Programm ist eine graphische CMake Version für Windows.

### Hinweise für Mac OSX-Benutzer

Das Erstellungssystem ist so konfiguriert, daß es eine universelle Binärdatei (x86+ppc) in ein App-Paket umwandelt. Man braucht dazu die Apple Development Tools und Frameworks, außerdem den Qt4 SDK von Nokia oder Fink.

Um ein Makefile für VMPK zu erstellen, banutzt man entweder Qmake:

    $ qmake vmpk.pro -spec macx-g++
    $ make
    optionally:
    $ macdeployqt build/vmpk.app

oder CMake:

    $ cmake -G "Unix Makefiles" .
    $ make

Um Xcode Projektdateien zu erstellen:

    $ qmake vmpk.pro -spec macx-xcode
    or
    $ cmake -G Xcode .

Zur Klangerzeugung kann man zum Beispiel SimpleSynth oder FluidSynth benutzen. Für das MIDI-Routing gibt es auch MIDI Patchbay.

### Hinweise für Packager und fortgeschrittene Benutzer

Die Kompilierung kann mit Optimierungen geschehen. Dazu gibt es zwei Wege: Erstens, die Benutzung eines vordefinierten Erstelltyps.

    $ cmake . -DCMAKE_BUILD_TYPE=Release

Der Cmake “Release”-Typ nutzt die Compiler-Flags: „-O3-DNDEBUG“. Andere vordefinierte Erstelltypen sind „Debug“, „RelWithDebInfo“, und „MinSizeRel“. Der zweite Weg ist, die Compiler-Flags selbst zu wählen.

    $ export CXXFLAGS="-O2 -march=native -mtune=native -DNDEBUG"
    $ cmake .

Die besten CXXFLAGS sind vom jeweiligen System abhängig, und sollten dementsprechend ausgesucht werden.

Falls das Programm an einer anderen Stelle als dem Standardverzeichnis (/usr/local) installieren werden soll, benutzt man die folgende CMake option:

    $ cmake . -DCMAKE_INSTALL_PREFIX=/usr

## Danksagungen

Zusätzlich zu den bereits genannten Tools benutzt VMPK auch Teile der folgenden Open Source Projekte.

- Qtractor, Rui Nuno Capela Instrument definition data classes

- QSynth, Rui Nuno Capela Knob widget

- Icon and logo, Theresa Knott

Vielen Dank!