# Virtual MIDI Piano Keyboard

- Introduction
- Pour bien commencer
  - Concepts MIDI
  - Correspondance des touches du clavier et définition des instruments
  - Connection MIDI et câbles MIDI virtuels
- FAQ
- Téléchargement
- Installation
  - Configuration requise
  - Notes aux utilisateurs de Windows
  - Notes pour les utilisateurs de Mac OSX
  - Notes pour les utilisateurs avancés
- Remerciements

## Introduction

VMPK est un générateur et récepteur d'événements MIDI. Il ne produit aucun son par lui-même, mais peut être utilisé pour commander un synthétiseur MIDI (matériel ou logiciel, interne ou externe). Vous pouvez utiliser le clavier de l'ordinateur pour jouer des notes, mais aussi la souris. Vous pouvez utiliser le clavier virtuel pour visualiser les notes jouées par un autre instrument ou un lecteur de fichiers MIDI. Pour ce faire, connectez le port de sortie de votre instrument au port d'entrée de VMPK.

VMPK a été testé sur Linux, Windows et Mac OSX, mais doit pouvoir être compilé pour d'autres systèmes. Si vous compilez VMPK pour un autre système, faites le savoir à l'auteur.

Le Virtual Keyboard par Takashi Iway (vkeybd) a inspiré le développement de VMPK. C'est un logiciel formidable qui nous a servi pendant des années. Merci!

VMPK utilise un framework d'interface graphique moderne : Qt4, qui permet d'excellentes performances et fonctionnalités. RtMIDI fournit les fonctionnalités d'entrée/sortie MIDI. Ces deux frameworks sont libres et indépendants de la plateforme, disponible pour Linux, Windows et Mac OSX.

Les correspondances du clavier alphanumérique peuvent être configurées depuis l'interface du programme, et les paramètres sont stockés dans des fichiers XML. Quelques fichiers de correspondance pour les claviers espagnols, allemands, et français sont livrés avec VMPK, traduits depuis ceux de VKeybd.

VMPK peut envoyer des changements de programme et des controllers au synthétiseur MIDI. Les définitions pour différents standards et matériels peuvent être fournies grâce à des fichiers .INS, le même format utilisé par QTractor et TSE3. Ce format a été développé par Cakewalk et est utilisé par Sonar.

Ce logiciel est a un stade de développement alpha. Voir le fichier TODO pour une liste des fonctionnalités à venir. N'hésitez pas à contacter l'auteur pour poser des questions, rapporter des bugs ou proposer de nouvelles fonctionnalités. Vous pouvez utiliser le tracker sur le site du project SourceForge.

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

Virtual MIDI Piano Keyboard est un logiciel libre sous licence GPL v3.

## Pour commencer

### Concepts MIDI

MIDI est un standard industriel pour connecter des instruments de musique. Le principe est de transmettre les actions effectuées par un musicien jouant d'un instrument à un autre instrument. Les instruments de musique MIDI ont en général deux prises DIN nommées MIDI IN et MIDI OUT. Parfois il y a une troisième prise nommée MIDI THRU. Pour connecter un instrument MIDI à un autre, on utilise un câble MIDI branché sur la prise MIDI OUT de l'instrument qui envoie, et à la prise MIDI IN de l'instrument qui reçoit. Vous pouvez trouver plus d'informations et des tutoriels comme celui ci sur le Web.

Il y a aussi des interfaces MIDI matérielles pour les ordinateurs, fournissant des ports MIDI IN et MIDI OUT, auxquels vous pouvez attacher des câbles MIDI pour communiquer avec des instruments MIDI externes. Sans utiliser d'interface matérielle, un ordinateur peut aussi utiliser des logiciels MIDI. Par exemple, VMPK fournit un port MIDI IN et un port MIDI OUT. Vous pouvez brancher des câbles MIDI virtuels aux ports de VMPK pour connecter le programme à d'autres programmes ou aux ports MIDI physiques de l'ordinateur. Plus de détails seront donnés par la suite. D'ordinaire, vous voudrez connecter la sortie MIDI de VMPK à l'entrée d'un synthétiseur qui transforme du MIDI en son. Une autre destination peut être un moniteur MIDI qui traduit les événements MIDI en texte "lisible". Ceci peut vous aider à comprendre les informations transmises par le protocole MIDI. Sous Linux, vous pouvez utiliser KMidimon et sous Windows MIDIOX.

VMPK ne produit aucun son. Vous devez utiliser un synthétiseur pour entendre les notes jouées. Je recommende d'utiliser QSynth, une interface graphique pour Fluidsynth. Il est aussi possible d'utiliser "Microsoft GS Wavetable SW Synth" fournit sous Windows. Bien sûr, un synthétiseur MIDI externe est une approche encore meilleure.

### Correspondance des touches du clavier et définition des instruments

VMPK peut vous aider à changer les sons de votre synthéthiseur MIDI, mais seulement si vous fournissez une définition des sons du synthétiseur. Ces définitions sont des fichiers texte avec l'extension .INS, le format utilisé par Qtractor (Linux), et Sonar (Windows).

Quand vous lancez VMPK pour la première fois, vous pouvez ouvrir la boite de dialogue Préférences et choisir un fichier de définitions, puis choisir le nom de l'instrument parmi ceux fournis par le fichier de définitions. Un fichier de définitions est installé par défaut dans le répertoire data de VMPK ("/usr/share/vmpk" sous Linux, et "C:\Program Files\VMPK" sous Windows) nommé "gmgsxg.ins", qui contient les définitions pour les standards General MIDI, Roland GS et Yamaha XG. C'est un format très simple et vous pouvez utiliser un éditeur de texte, pour éditer ou créer un nouveau fichier. Vous pouvez trouver une liste de définitions sur le serveur FTP cakewalk.

Depuis la version 0.2.5, vous pouvez importer des fichiers Soundfont (au format .SF2 ou DLS) en tant que définition d'instruments, en utilisant le menu Fichier->Importer un SoundFont.

Vous pouvez aussi personnaliser la correspondance des touches du clavier alphanumérique. Par défaut, la correspondance couvre deux octaves et demi sur un clavier QWERTY, mais il y a des fichier de configuration adaptés à votre clavier dans le répertoire data. Vous pouvez aussi définir vos propres attributions des touches dans Edition->Attribution des touches. Vous pouvez aussi sauver et charger ces préférences dans des fichiers XML. Le dernier fichier utilisé sera chargé au prochain démarrage de VMPK. En fait, toutes vos préférences, la banque MIDI sélectionnée, le programme, les valeurs de controlleurs seront sauvés et restaurés au prochain démarrage.

### Connection MIDI et câbles MIDI virtuels

Pour connecter du matériel MIDI, vous utilisez des câbles MIDI physiques. Pour connecter des logiciels MIDI vous avez besoin de câbles virtuels. Sous Windows, vous pouvez utiliser des câbles virtuels tels que MIDI Yoke, Maple, LoopBe1 ou Sony Virtual MIDI Router.

MIDI Yoke installera le pilote et une interface pour changer le nombre de ports disponibles (vous devrez redémarrer l'ordinateur après avoir changer ce paramètre). MIDI Yoke fonctionne en envoyant chaque événement envoyé sur un port OUT au port IN correspondant. Par exemple, VMPK peut connecter le port OUT au port 1, et un autre programme comme QSynth peut lire l'événement sur le port 10 .

En utilisant MIDIOX, vous pouvez ajouter des routes entre les ports MIDI Yoke et les autres ports MIDI. Ce programme fournit aussi d'autres fonctions comme un lecteur de fichier MIDI. Vous pouvez écouter des morceaux joués par un synthétiseur MIDI et voir les notes jouées en même temps dans VMPK (un canal à la fois seulement). Pour ce faire, vous pouvez utiliser la fenêtre "Routes" de MIDIOX et connecter le port 1 IN au port du synthétiseur de Windows. Configurez aussi le lecteur MIDI pour envoyer ses événements sur le port 1 de MIDI Yoke. Enfin, configurez le port d'entrée de VMPK pour lire les événements depuis le port 1 de MIDI Yoke. Le lecteur va donc envoyer les événements sur le port OUT 1, qui seront routés à la fois sur le port IN 1 et sur le synthétiseur.

Sous Linux, le séquenceur ALSA fournit les câbles virtuels. Les ports sont créés dynamiquement lorsque vous démarrez un programme, il n'y en a donc pas un nombre fixe comme avec MIDI Yoke. L'utilitaire en ligne de command "aconnect" permet de connecter et déconnecter les câbles MIDI virtuels entre n'importe quel port, matériel ou applicatif. Un autre programme pour faire de même est QJackCtl. Le but de ce programme est de controller le démon Jackd (démarrer, arrêter et surveiller l'état). Jack fournit des cables virtuels pour connecter les ports de votre carter son et les programmes audio de la même façon que des câbles virtuels MIDI mais pour l'audio.

## Foire aux questions

### Comment afficher 88 touches sur le piano?

88 est un nombre de touches arbitraire utilisé par la plupart des constructeurs de piano modernes, mais les constructeurs d'orgues et de synthétiseurs ne respectent pas toujours cette convention. VMPK peut être personnalisé pour afficher de 1 à 10 octaves. En utilisant 7 octaves, il affiche 84 touches, et pour 8 octaves, il affiche 98 touches. On ne peut pas afficher 7 octaves et demi et exactement 88 touches.

### Il n'y a pas de son

VMPK ne produit pas de son par lui même. Vous devez utiliser un synthétiseur MIDI, et s'il vous plaît, lisez la documentation encore une fois.

### Certaines touches sont silencieuses

Lorsque vous sélectionnez le canal 10 sur un synthétiseur MIDI standard, il joue des sons de percussions associés à certaines touches seulement. Sur les canaux mélodiques, (pas le canal 10) vous pouvez sélectionner des instruments avec une certaine tessiture.

### L'option "Grab Keyboard" echoue

C'est un problème connu sous Linux. Cette fonctionnalité fonctionne sous KDE3/4 avec Kwin; elle fonctionne aussi avec Enlightenment et Window Maker, mais ne marche pas avec Metacity et Compiz utilisés souvent sous Gnome. Utiliser cette option ne permet pas d'utiliser le menu sous sous GTK2. Il n'y a pas de solution connue à ce problème excepté eviter les scénarios connus si vous avez vraiment besoin de cette fonctionnalité.

### Les noms d'instruments ne correspondent pas aux sons rééls

Vous devez fournir un fichier .INS qui décrit exactement les instruments de votre synthétiseur ou de votre soundfont. Le fichier inclu (gmgsxg.ins) contient des définitions pour les standards GM, GS et XG seulement. Si votre synthétiseur se comporte différement vous devez utiliser un autre fichier .INS ou le créer vous même.

### Syntaxe des fichiers de définitions d'instruments, fichiers (.INS) ?

Une explication du format INS est disponible à cette adresse.

### Puis je convertir mes définitions d'instruments pour vkeybd en fichier .INS ?

Bien sûr. Utilisez le script AWK "txt2ins.awk". Vous pouvez même utiliser l'utilitaire sftovkb livré avec vkeybd pour créer un fichier .INS depuis une soundfont, mais il y a aussi une fonction pour importer une liste d'instruments depuis une soundfont DF2 ou DLS dans VMPK.

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

Vous pouvez trouver le script AWK "txt2ins.awk" dans le répertoire data de VMPK

## Téléchargement

Les dernières sources ainsi que fichiers pour Windows et Mac OSX sont disponibles sur SourceForge.

Il y a aussi des paquets pour Linux :

- Debian
- Ubuntu
- UbuntuStudio (Tango Studio)
- Arch Linux (Aur)
- Pardus
- Gentoo
- Zenwalk
- Mandriva (Cooker)

Si vous distribuez un paquet VMPK pour une autre distribution, envoyez moi un email et j'ajouterai un lien vers votre site ici.

## Installation depuis les sources

Télécharger les sources depuis http://sourceforge.net/projects/vmpk/files. Détarrez et changez de répertoire.

    $ cd vmpk-x.y.z

Vous pouvez choisir CMake ou Qmake pour préparer votre système de build, mais qmake est destiné seulement au développement et au test.

    $ cmake .
    or
    $ ccmake .
    or
    $ qmake

Ensuite, compilez le programme :

    $ make

Si le programme compile correctement, vous pouvez l'installer :

    $ sudo make install

### Configuration requise

Pour compiler et utiliser VMPK, vous devez avoir Qt 4.6 ou plus récent. (installer le paquet -devel pour votre système, ou téléchargez l'édition Open Source depuis qt.nokia.com, anciennement Trolltech.)

RtMIDI est inclus dans les sources. Il utilise ALSA sous Linux, WinMM sous Windows et CoreMIDI sous Mac OSX, qui sont les systèmes MIDI natifs de chaque plateforme.

Le système de build est basé sur CMake.

Vous devez aussi avoir le compilateur GCC C++. MinGW est un portage pour Windows.

De manière optionnelle, vous pouvez créer un programme d'installation pour Windows en utilisant NSIS.

### Notes aux utilisateurs de Windows

pour compiler les sources sous Windows, vous devez télécharger le .bz2 ou le .gz et le décompresser avec un utilitaire tel que 7-Zip.

Pour configurer les sources, utilisez qmake (de Qt4) ou CMake. La variable d'environnement PATH doit contenir les répertoires des binaires de Qt4, des binaires de MinGW et aussi des binaires de CMake. Le programme CMakeSetup.exe est la version graphique de CMake pour Windows.

### Notes aux utilisateurs de Mac OSX

Vous pouvez télécharger un bundle précompilé, incluant Qt4, sur la page de téléchargement. Si vous préférez installer depuis les sources, CMake ou Qmake peuvent être utilisé pour compiler l'application liés aux librairies du système. Vous pouvez utiliser Qt4 de qtsoftware.com ou un paquet distribué par Fink.

Le système de build est configuré pour créer un Universal Binary (x86+ppc) dans un bundle d'application. Vous devez avoir les outils de développement Apple ainsi que le Qt4 SDK de Nokia.

Pour compiler VMPK en utilisant les Makefiles, générés par qmake :

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

Pour compiler VMPK en utilisant les Makefiles, générés par CMake :

    $ cmake -G "Unix Makefiles" .
    $ make

Pour créer le projet Xcode :

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

Si vous avez besoin de quelque chose pour produire du son, jettez un oeil sur SimpleSynth, FluidSynth (dans Fink). Et pour du routing MIDI, il y a aussi MIDI Patchbay.

### Notes aux utilisateurs avancés

Vous pouvez demander quelques optimisations au compilateur. Il y a deux façons. D'abord, utiliser un type de build prédéfini.

    $ cmake . -DCMAKE_BUILD_TYPE=Release

Le type CMake "Release" utilise les flags : "-O3 -DNDEBUG". Les autres types prédéfinis sont "Debug", "RelWithDebInfo", et "MinSizeRel". L'autre manière est de choisir vos flags vous même.

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

Vous devez choisir les meilleurs CXXFLAGS pour votre système.

Si vous souhaitez installer le programme à un autre endroit que le répertoire par défaut (/usr/local), utilisez l'option :

    $ cmake . -DCMAKE_INSTALL_PREFIX=/usr

## Remerciements

En plus des outils déjà cités, VMPK utilise le travail des projets libres suivants.

- de Qtractor, par Rui Nuno Capela
  Instrument definition data classes
- de QSynth, par Rui Nuno Capela
  Knob widget
- Icône et logo par Theresa Knott

Merci beaucoup !