Guide pratique du MIDI sous Linux

  Version fran�aise de The Linux MIDI-HOWTO

  Phil Kerr

   <phil CHEZ plus24 POINT com>

  Jean-Marc Legrand

   <cjm POINT legrand CHEZ wanadoo POINT fr>

   Adaptation fran�aise

  �ric Madesclair

   <eric TIRET m CHEZ wanadoo POINT fr>

   Relecture de la version fran�aise

  Jean-Philippe Gu�rard

   <fevrier CHEZ tigreraye POINT org>

   Relecture rapide

  Jean-Philippe Gu�rard

   <fevrier CHEZ tigreraye POINT org>

   Pr�paration de la publication de la v.f.

   Version : 1.2.fr.1.0

   2004-04-04

   +------------------------------------------------------------------------+
   | Historique des versions                                                |
   |------------------------------------------------------------------------|
   | Version 1.20.fr.0.9         | 2004-04-04         | JML, �M, JPG        |
   |------------------------------------------------------------------------|
   | Premi�re traduction fran�aise.                                         |
   |------------------------------------------------------------------------|
   | Version 1.20                | 2002-05-24         | PK                  |
   |-----------------------------+--------------------+---------------------|
   | Version 1.10                | 2002-04-02         | PK                  |
   |-----------------------------+--------------------+---------------------|
   | Version 1.00                | 2002-01-25         | PK                  |
   +------------------------------------------------------------------------+

   R�sum�

   Ce document pr�sente, et explique comment utiliser le mat�riel et les
   logiciels permettant de jouer et de composer des fichier MIDI sous Linux.

   --------------------------------------------------------------------------

   Table des mati�res

   Introduction

   Droits d'utilisation (Copyright of this document)

   O� se procurer ce guide ?

   Remerciements

   Avertissement (Disclaimer)

   Histoire du MIDI

   Configurer ses p�riph�riques MIDI

                Installation rapide de ALSA 0.9

                Les probl�mes de latence

   Les logiciels

                Les pilotes

                Les lecteurs MIDI

                Les s�quenceurs

                Consoles de mixage MIDI

                �diteurs de rythmes

                �diteurs de timbres

                Synth�tiseurs virtuels

                Les modules d'extension (plugins)

                Partitions musicales

                D�veloppement

   Le d�veloppement MIDI

                Exemple 1

                Exemple 2

                Exemple 3

   Guide d'utilisation de s�quenceurs MIDI avec des synth�tiseurs virtuels

                Introduction

                param�trage du mat�riel

                Canalisation des �v�nements MIDI

                Tableaux de raccordement MIDI graphiques

                Applications

                Les s�quenceurs

                Synth�tiseurs virtuels

                Remerciements

   Liens Utiles

   Commentaires et corrections

Introduction

   Ce document traite des points suivants :

     * comment configurer votre interface MIDI ;

     * comment configurer et utiliser des synth�tiseurs logiciels ;

     * comment jouer des fichiers MIDI ;

     * comment utiliser un s�quenceur ;

     * comment contr�ler du mat�riel MIDI externe ;

     * logiciels MIDI bas�s sur la synth�se de sons ;

     * exemples de code MIDI.

Droits d'utilisation (Copyright of this document)

   Copyright � 2002 Phil Kerr.

   This HOWTO is copyrighted 2002 Phil Kerr.

   Copyright � 2002 Frank Barknecht pour la la section intitul�e �  Guide
   d'utilisation de s�quenceurs MIDI avec des synth�tiseurs virtuels  �.

   The "HOWTO Use MIDI Sequencers With Softsynths" is copyright 2002 Frank
   Barknecht.

   Copyright � 2004 Jean-Marc Legrand, �ric Madesclair, Jean-Philippe Gu�rard
   pour la version fran�aise.

   Ce guide pratique est distribu� sous la licence de documentation libre GNU
   (GFDL). Vous devriez avoir re�u une copie de cette licence avec celui-ci.
   Si tel n'est pas le cas, vous pouvez vous la procurer en version originale
   anglophone � cette adresse :

   This document is distributed under the terms of the GNU Free Documentation
   License. You should have received a copy along with it. If not, it is
   available from:

   http://www.fsf.org/licenses/fdl.html
   [http://www.fsf.org/licenses/fdl.html]

   Il en existe une version fran�aise non-officielle � cette adresse :

   http://cesarx.free.fr/gfdlf.html [http://cesarx.free.fr/gfdlf.html]

O� se procurer ce guide ?

   La derni�re version fran�aise officielle de ce guide est disponible sur :
   http://www.traduc.org/docs/howto/lecture/MIDI-HOWTO.html
   [http://www.traduc.org/docs/howto/lecture/MIDI-HOWTO.html].

   La derni�re version originale de ce guide pratique est publi�e sur :
   http://www.midi-howto.com [http://www.midi-howto.com].

Remerciements

   Ce guide est bas� sur le petit guide du MIDI-SB (MIDI-SB mini-HOWTO) �crit
   par Hideki Saito. Tous mes remerciements pour sa contribution � la
   communaut� Linux.

   Ce guide contient d�sormais le � Guide d'utilisation des S�quenceurs MIDI
   avec des Synth�tiseurs virtuels � �crit par Frank. Tous mes remerciements,
   Frank.

   Une grande partie des exemples de code contenus dans ce guide provient de
   la liste de discussions LAD (D�veloppeurs Audio Linux). Merci � eux pour
   m'avoir permis de les reprendre dans ce guide.

Avertissement (Disclaimer)

   L'utilisation des informations de ce document est de votre responsabilit�.

   Use the information in this document at your own risk.

   Je d�cline toute responsabilit� quant au contenu de ce document.

   I disavow any potential liability for the contents of this document.

   L'utilisation des principes, exemples, et autres contenus de ce document
   sera enti�rement de votre responsabilit�.

   Use of the concepts, examples, and/or other content of this document is
   entirely at your own risk.

   Tous les droits d'auteur et de copyright sont la propri�t� de leurs
   d�tenteurs respectifs, sauf indication contraire.

   All copyrights are owned by their owners, unless specifically noted
   otherwise.

   Aucune remarque contenue dans ce document ne pourra �tre consid�r�e comme
   un jugement de valeur contre telle ou telle marque.

   Use of a term in this document should not be regarded as affecting the
   validity of any trademark or service mark.

   Le fait de citer une marque ou un produit particulier ne saurait �tre
   consid�r�e comme une recommandation.

   Naming of particular products or brands should not be seen as
   endorsements.

   Il vous est fortement recommand� d'effectuer une sauvegarde de votre
   syst�me avant toute installation d'importance et de le sauvegarder
   r�guli�rement au cours de votre travail.

   You are strongly recommended to take a backup of your system before major
   installation and backups at regular intervals.

Histoire du MIDI

   Le MIDI est un ensemble de protocoles mat�riels et logiciels permettant �
   des instruments de musique �lectroniques de communiquer entre eux. Le MIDI
   est apparu pour la premi�re fois en 1982, et s'est impos� comme le
   standard de communication pour ce type d'instruments. Ce protocole fixe
   les param�tres physiques du mat�riel (connexions et interfaces
   mat�rielles), et permet de disposer d'un �ventail pr�cis de protocoles de
   communication pour l'�change de donn�es musicales et rythmiques.

   Avant le MIDI, il existait d'autres protocoles de connexion, tout d'abord
   analogiques, puis num�riques. Le plus ancien, au alentours de 1974,
   permettait de transmettre des informations musicales sous forme de tension
   �lectrique via les c�bles de liaison entre les diff�rents claviers. Plus
   tard, en 1980-1981, Roland cr�a un protocole num�rique de r�f�rence, le
   DCB. L'association des fabricants d'instruments MIDI (MIDI Manufacturers
   Association - MMA) a d�fini, � partir de leurs propres �quipements, un
   protocole et un c�blage standards pour des mat�riels compatibles, qui
   permettait � tous les mat�riels issus de fabricants adh�rent � ce standard
   de se connecter et de communiquer entre eux.

   � partir de 1985, les interfaces MIDI commenc�rent � appara�tre sur les PC
   personnels et peu apr�s apparurent les premiers s�quenceurs virtuels.

Configurer ses p�riph�riques MIDI

   Les p�riph�riques MIDI sont soit int�gr�s � la carte son, soit inclus dans
   un mat�riel s�par�. Les interfaces MIDI externes sont reli�es soit au port
   s�rie, soit � un port USB.

   La premi�re chose � faire -- et la plus importante -- est de v�rifier la
   compatibilit� de votre carte son !

   Les adresses suivantes peuvent vous y aider :

   http://www.alsa-project.org/alsa-doc/
   [http://www.alsa-project.org/alsa-doc/]

   http://www.4front-tech.com/osshw.html
   [http://www.4front-tech.com/osshw.html]

   La fa�on de configurer ses p�riph�riques MIDI varie d'une distribution
   Linux � l'autre. Normalement, une carte son compatible sera configur�e
   correctement � l'installation du syst�me d'exploitation.

   Le noyau Linux contient les pilotes OSS, et, depuis les versions 2.5, les
   pilotes ALSA. La plupart des distributions offrent un outil de
   configuration (essentiellement d�di� aux cartes son). Toutefois, si vous
   utilisez le port MIDI d'une carte son, il devra �tre configur�
   manuellement. Sous RedHat, il faut utiliser sndconfig, sous SuSE : yast,
   et sous Mandrake : DrakConf.

   Si aucun de ces outils n'est utilisable, ou si vous rencontrez des
   probl�mes, suivez les �tapes suivantes :

   Est-ce que la commande lsmod montre des modules sp�cifiques au MIDI ?
   Voici ce que l'on peut obtenir sur un syst�me bas� sur OSS :

 [root@beatbox]# lsmod
 Module                  Size  Used by
 lockd                  32208   1  (autoclean)
 sunrpc                 54640   1  (autoclean) [lockd]
 autofs                  9456   2  (autoclean)
 usb-ohci               12624   0  (unused)
 usbcore                43632   1  [usb-ohci]
 hisax                 470096   0  (autoclean) (unused)
 isdn                  104208   0  (autoclean) [hisax]
 slhc                    4544   0  (autoclean) [isdn]
 eepro100               16144   1  (autoclean)

 #---- modules de cartes son
     opl3                   11376   2
     mad16                   7968   1
     ad1848                 16848   1  [mad16]
     sb                     34752   1  [mad16]
     uart401                 6384   1  [mad16 sb]
     sound                  58368   0  [opl3 mad16 ad1848 sb uart401]

 soundlow                 464   0  [sound]
 soundcore               2800   6  [sb sound]
 nls_cp437               3952   2  (autoclean)
 vfat                    9408   1  (autoclean)
 fat                    30432   1  (autoclean) [vfat]
 ide-scsi                7664   0

   Recherchez les modules mpu401, olp3, uart401 et oss.

   Si vous utilisez une interface USB, n'oubliez pas de v�rifier que les
   modules USB correspondants apparaissent bien.

   Pour v�rifier la configuration, faites un cat du fichier sndstat :

 [root@beatbox]# cat /dev/sndstat
 OSS/Free:3.8s2++-971130
 Load type: Driver loaded as a module
 Kernel: Linux mega 2.2.17-21mdk #1 Thu Oct 5 13:16:08 CEST 2000 i686
 Config options: 0

 Installed drivers:

 Card config:

 Audio devices:
 0: MAD16 WSS (82C930) (DUPLEX)

 Synth devices:
 0: Yamaha OPL3

 Midi devices:
 0: Mad16/Mozart

 Timers:
 0: System clock

 Mixers:
 0: MAD16 WSS (82C930)

   Nous voyons ici que le p�riph�rique MIDI est mad16, ce qui correspond au
   lsmod effectu� plus haut.

   Si rien n'appara�t concernant le MIDI, v�rifiez le contenu de votre
   fichier /etc/modules.conf.

 [root@beatbox]# cat /etc/modules.conf
 alias net-pf-4 ipx
 pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start
 alias usb-interface usb-ohci
 alias parport_lowlevel parport_pc
 alias block-major-11 scsi_hostadapter
 pre-install plip modprobe parport_pc ; echo 7 > /proc/parport/0/irq
 alias scsi_hostadapter ide-scsi
 alias eth0 eepro100
 alias eth1 hisax

 #---- Carte Son
     alias sound-slot-0 mad16
     options sound dmabuf=1
     alias midi opl3
     options opl3 io=0x388
     options sb support=1
     options mad16 io=0x530 irq=5 dma=0 dma16=1 mpu_io=0x300 mpu_irq=7 joystick=1

   Voici les donn�es de sortie � v�rifier dans le module /proc/modules pour
   voir si les modules MIDI sont bien charg�s dans le noyau.

 [root@mega /proc]# cat modules
 0000-001f : dma1
 0020-003f : pic1
 0040-005f : timer
 0060-006f : keyboard
 0070-007f : rtc
 0080-008f : dma page reg
 00a0-00bf : pic2
 00c0-00df : dma2
 00f0-00ff : fpu
 0170-0177 : ide1
 01f0-01f7 : ide0
 02f8-02ff : serial(auto)

 #---- P�riph�rique MIDI
     0300-0303 : MPU-401 UART

 0376-0376 : ide1
 0388-038b : Yamaha OPL3
 03c0-03df : vga+
 03f6-03f6 : ide0
 03f8-03ff : serial(auto)
 0530-0533 : MAD16 WSS config
 0534-0537 : MAD16 WSS
 de00-de1f : Intel Speedo3 Ethernet
 f000-f007 : ide0
 f008-f00f : ide1

   Vous devriez trouver quelque chose ressemblant � cela. Si tel n'est pas le
   cas, vous devrez installer manuellement les pilotes MIDI.

   Si vous �tes amen�s � utiliser les pilotes ALSA 0.5x, -- ce que je vous
   d�conseille -- je vous sugg�re de lire auparavant le Petit guide du son
   avec ALSA (Alsa-sound-mini-HOWTO) de Valentijn Sessink que vous trouverez
   au lien suivant :

   http://www.traduc.org/docs/howto/lecture/Alsa-sound.html
   [http://www.traduc.org/docs/howto/lecture/Alsa-sound.html]

   Je vous recommande vivement d'utiliser des versions d'ALSA sup�rieures �
   la version 0.9. Pour des pilotes ALSA plus r�cents que les versions 0.9x,
   je vous conseille de lire le Guide ALSA (Alsa HOWTO) de Madhu Maddy.

   http://www.alsa-project.org/alsa-doc/alsa-howto/
   [http://www.alsa-project.org/alsa-doc/alsa-howto/]

  Installation rapide de ALSA 0.9

   Vous trouverez ci-dessous une m�thode d'installation rapide des pilotes et
   des biblioth�ques ALSA 9.0, ainsi que les configurations les plus
   r�pandues dans les applications MIDI.

 [root@beatbox] # tar jxvf alsa-driver....tar.bz2
 [root@beatbox] # cd alsa-driver.....
 [root@beatbox] # ./configure

 messages - no errors

 [root@beatbox] # make

 messages - no errors

 [root@beatbox] # make install

 messages - no errors

 [root@beatbox] # ./snddevices


   � ce stade, vous devez �diter le fichier /etc/modules.conf, ou, pour
   certaines distributions, le fichier ALSA de votre r�pertoire de modules.
   Il se pourrait que vous rencontriez des indications pour d'autres
   mat�riels, non MIDI : soyez prudent lors de l'�dition du fichier.

   Si il existe d�j� une ancienne configuration ALSA ou OSS dans ce fichier,
   vous devrez l'effacer ou, mieux encore, la commenter.

   Vous trouverez ci-dessous un exemple typique de fichier modules.conf,
   d�crivant une configuration ALSA sous OSS.

 alias char-major-116 snd
 alias char-major-14 soundcore

 alias snd-card-0 (carte son/MIDI)
 alias sound-slot-0 snd-card-0

 alias sound-service-0-0 snd-mixer-oss
 alias sound-service-0-1 snd-seq-oss
 alias sound-service-0-3 snd-pcm-oss
 alias sound-service-0-12 snd-pcm-oss

   Remplacez l'entr�e (carte son/MIDI) par la r�f�rence correcte � votre
   carte son. Vous trouverez normalement les informations n�cessaires sur le
   site web ALSA.

   Une fois les pilotes ALSA install�s, vous devrez installer les fichiers de
   biblioth�ques d'en-t�tes n�cessaires au fonctionnement des programmes
   bas�s sur ALSA. C'est ce que contient le paquet alsa-libs.

   Assurez-vous tout d'abord que votre paquet alsa-libs correspond bien � vos
   pilotes ALSA !

 [root@beatbox] # tar jxvf alsa-libs....tar.bz2
 [root@beatbox] # cd alsa-libs.....
 [root@beatbox] # ./configure

 messages - no errors

 [root@beatbox] # make

 messages - no errors

 [root@beatbox] # make install


   Votre syst�me devrait alors �tre configur� ! :o)

   Vous pouvez le v�rifier � l'aide d'un simple programme en C : si vous
   r�ussissez � le compiler et l'ex�cuter, c'est que votre syst�me fonctionne
   bien.

 // Compilez ce programme test ainsi : gcc alsatest.c -o alsatest -lasound

 #include <stdio.h>
 #include <alsa/asoundlib.h>

 int main (int argc, char *argv[])
 {
   snd_seq_t *seq_handle;

   if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) {
     fprintf(stderr, "Error opening ALSA sequencer.\n");
     exit(1);
   }

 printf("The ALSA libraries are installed.\n");
 return 0;
 }

  Les probl�mes de latence

   Le MIDI est un protocole temps-r�el et les r�glages de latence peuvent
   poser de s�rieux probl�mes.

   D�sormais, plusieurs d�veloppeurs travaillent sur l'am�lioration des temps
   de latence, et les progr�s r�alis�s sur le noyau font aujourd'hui de Linux
   une plateforme tout � fait efficace pour le MIDI.

   M�me si les distributions Linux fonctionnent correctement sur ce point,
   les utilisateurs avanc�s devront installer des correctifs noyau pour
   diminuer les temps de latence. Vous trouverez plus d'informations sur les
   sites suivants :

   http://www.gardena.net/benno/linux/audio/
   [http://www.gardena.net/benno/linux/audio/]

   http://www.linuxdj.com/audio/lad/resourceslatency.php3
   [http://www.linuxdj.com/audio/lad/resourceslatency.php3]

   Vous trouverez en outre le Petit guide de r�duction des temps de latence
   (Low Latency Mini Howto -- en anglais) � l'adresse suivante :

   http://web.archive.org/web/20021211025416/http://www.boosthardware.com/LAU/guide/Low_latency-Mini-HOWTO.html
   [http://web.archive.org/web/20021211025416/http://www.boosthardware.com/LAU/guide/Low_latency-Mini-HOWTO.html]

Les logiciels

   L'int�r�t pour des solutions MIDI bas�es sur Linux �tant croissant, la
   liste suivante ne sera probablement pas exhaustive, mais vous donnera un
   choix repr�sentatif d'applications MIDI.

   Si vous �tes d�veloppeur ou utilisateur d'autres applications MIDI non
   list�es, merci de m'en avertir par courrier �lectronique.

  Les pilotes

    Les pilotes ALSA

   ALSA (l'Architecture Sonore Linux Avanc�e -- Advanced Linux Sound
   Architecture ) est constitu�e de plusieurs �l�ments. Le premier est un
   pilote son totalement modulaire, compatible avec le chargement automatique
   des modules, l'utilisation de devfs, l'autoconfiguration isapnp, et
   permettant un acc�s complet aux composants audio analogique, audio
   num�rique, contr�les, mixage, synth�tiseur, DSP, MIDI et � la
   temporisation du mat�riel MIDI. Il comprend aussi un s�quenceur noyau
   complet, une couche de compatibilit� compl�te avec les applications libres
   bas�es sur OSS, une biblioth�que C orient�e objet permettant de traiter et
   am�liorer les fonctionnalit�s des pilotes ALSA pour certaines applications
   (client/serveur, modules d'extension, le partage et le mixage du son PCM,
   mesure du son PCM, et c�tera), une interface de configuration du pilote,
   ainsi que quelques autres outils simples pour la configuration et la
   maintenance.

   http://www.alsa-project.org/ [http://www.alsa-project.org/]

    OSS

   OSS, le Syst�me audio ouvert, fournit des pilotes de cartes son pour Linux
   et FreeBSD. Ces pilotes sont compatibles avec le son num�rique, le MIDI,
   les synth�tiseurs virtuels et les modules de mixage int�gr�s aux cartes
   son. Ces pilotes sonores sont conformes aux sp�cifications de la
   biblioth�que de programmation Syst�me audio ouvert (OSS -- Open Sound
   System). Le syst�me OSS est muni d'une interface graphique tr�s
   conviviale, qui rend tr�s simple l'installation des pilotes ainsi que la
   configuration de la carte son. Ces pilotes sont compatibles avec plus de
   200 cartes son de marque et permettent une d�tection automatique de la
   carte son, l'autoconfiguration (Plug-n-Play), l'utilisation des cartes son
   PCI et la capacit� de fonctionnement audio bidirectionnel.

   http://www.opensound.com/ [http://www.opensound.com/]

    Notemidi

   Notemidi est un pilote de p�riph�rique pour la sortie MIDI via le port
   s�rie RS-232 sur les PC portables. Notemidi peut �tre utilis� avec
   l'interface MIDIator MS-124W, les modules de son Roland Sound Canvas, ou
   les modules de son de la s�rie Yamaha MU-x.

   http://www.michaelminn.com/linux/notemidi
   [http://www.michaelminn.com/linux/notemidi]

  Les lecteurs MIDI

    KMid

   KMid est un lecteur MIDI bas� sur KDE (et donc X11) pour Linux et FreeBSD.
   Il permet le d�filement des textes de fichiers karaoke, et change la
   couleur du texte au fur et � mesure qu'il est jou�, ce qui permet de le
   suivre facilement. KMid utilise /dev/sequencer comme p�riph�rique de
   sortie compatible avec les synth�tiseurs externes, ainsi qu'avec les
   cartes AWE, FM et GUS.

   http://perso.wanadoo.es/antlarr/kmid.html
   [http://perso.wanadoo.es/antlarr/kmid.html]

    Pmidi

   Pmidi est un programme en lignes de commande qui permet de jouer des
   fichiers MIDI sur le s�quenceur ALSA.

   http://www.parabola.demon.co.uk/alsa/pmidi.html
   [http://www.parabola.demon.co.uk/alsa/pmidi.html]

    TiMidity++

   TiMidity est un convertisseur MIDI vers WAVE qui utilise des biblioth�ques
   de timbres dans un format compatible Gravis Ultrasound(*) afin de produire
   des donn�es audionum�riques � partir de fichiers General MIDI. Les donn�es
   audio peuvent alors �tre jou�es par n'importe quel p�riph�rique son ou
   stock�es sur disque. Sur une machine puissante, les donn�es peuvent �tre
   jou�es en temps r�el.

   http://timidity.sourceforge.net/ [http://timidity.sourceforge.net/]

  Les s�quenceurs

    Brahms

   Brahms est � la fois un s�quenceur et un �diteur de partitions, muni de
   plusieurs outils d'�dition comme Score-, Pianoroll-, Drum-, et Mastertrack
   Editor. Pour les d�veloppeurs C++, il est ais� de cr�er d'autres outils
   d'�dition � partir d'un module d'�dition g�n�rique. Ce programme poss�de
   aussi une fonction d'import et export MIDI. Combin� avec aRts-0.3.4, il
   est possible de jouer des fichiers WAVE et d'envoyer simultan�ment au
   synth�tiseur virtuel des �v�nements MIDI.

   Ce logiciel �tait autrefois connu sous l'appellation Koobase.

   http://brahms.sourceforge.net/ [http://brahms.sourceforge.net/]

    Anthem

   Anthem est un s�quenceur MIDI libre �volu�. Anthem vous permet
   d'enregistrer, d'�diter et de jouer de la musique, en utilisant une
   technologie musicale orient�e objet tr�s sophistiqu�e et tr�s appr�ci�e.

   http://anthem.sourceforge.net/ [http://anthem.sourceforge.net/]

    Jazz++

   JAZZ++ est un s�quenceur audio et MIDI complet, sous Linux et Windows.

   http://www.jazzware.com/cgi-bin/Zope.cgi/jazzware/
   [http://www.jazzware.com/cgi-bin/Zope.cgi/jazzware/]

    UltiMusE-LX

   UltiMusE-LX (the Ultimate Music Editor) est un logiciel de composition
   musicale. Non, non : il ne compose pas � votre place ! C'est un logiciel
   musical graphique. Vous composez votre partition � l'�cran � l'aide de la
   souris et/ou du clavier, jusqu'� 16 parties ou voix, avec jusqu'� 7
   port�es. Il permet d'utiliser quasiment toutes les notations standards,
   ainsi que les outils MIDI de changement d'instrument, d'�v�nement, et de
   gestion en temps r�el.

   http://hometown.aol.com/knudsenmj/myhomepage/umuselx.htm
   [http://hometown.aol.com/knudsenmj/myhomepage/umuselx.htm]

    Melys

   Melys est une application s�quenceur MIDI bas� sur ALSA. Melys utilise le
   s�quenceur ALSA et le combine avec les biblioth�ques GNOME pour produire
   un s�quenceur puissant et facile � utiliser.

   http://www.parabola.demon.co.uk/melys/
   [http://www.parabola.demon.co.uk/melys/]

    MidiMountain Sequencer

   MidiMountain est un s�quenceur qui permet d'�diter des fichiers MIDI
   standard. La facilit� d'utilisation de son interface devrait aider les
   d�butants � �diter et cr�er des s�quences MIDI. MidiMountain est con�u
   pour permettre de manipuler toutes les d�finitions connues des fichiers
   MIDI standards et du protocole de transfert MIDI, du simple rouleau de
   piano m�canique � la manipulation des messages exclusifs syst�mes
   binaires.

   http://www.midimountain.com/ [http://www.midimountain.com/]

    MusE

   MusE est un s�quenceur MIDI pour Linux, bas� sur Qt 2.1, avec fonctions
   d'�dition et d'enregistrement. Pendant que le s�quenceur joue, vous pouvez
   �diter des �v�nements MIDI en temps r�el � l'aide du rouleau de piano
   m�canique ou de l'�diteur de partition. Les �v�nements MIDI enregistr�s
   peuvent alors �tre trait�s � part avec le menu arrangeur.

   http://muse.seh.de/ [http://muse.seh.de/]

    Rosegarden

   Rosegarden est un s�quenceur MIDI int�gr� et un �diteur de partition.

   http://www.rosegardenmusic.com/ [http://www.rosegardenmusic.com/]

  Consoles de mixage MIDI

    tektracker

   ttrk (tektracker) est un s�quenceur MIDI muni d'une interface de type
   console de mixage. Il est fait pour �tre utilis� en temps r�el, notamment
   gr�ce � ses boutons de volume par piste et cr�ation de boucles. ttrk
   permet d'envoyer et de se synchroniser avec les pulsations d'horloge MIDI.

   http://vektor.ca/audio/ttrk/ [http://vektor.ca/audio/ttrk/]

    ShakeTracker

   ShakeTracker est un s�quenceur MIDI muni d'une interface de type console
   de mixage. Il fonctionne correctement et permet d'utiliser quasiment tous
   les effets de mixage habituels. Ceux d'entre vous qui auront utilis�
   Impulse Tracker auparavant se sentiront chez eux, et pour les nouveaux
   utilisateurs, ils b�n�ficieront d'un syst�me d'aide en ligne tr�s complet
   et tr�s simple d'utilisation. La plupart des commandes et raccourcis
   ressemblent � leur �quivalent sur une table de mixage.

   http://reduz.com.ar/shaketracker/ [http://reduz.com.ar/shaketracker/]

  �diteurs de rythmes

    DrumPatterns

   DrumPatterns est un g�n�rateur de rythmes, libre et orient� internet, dont
   l'objectif est d'apprendre � cr�er des motifs rythmiques. Il est capable
   de vous apprendre les bases rythmiques, aussi bien que les rythmes les
   plus compliqu�s. Il peut �diter des graphismes, des partitions, des
   �v�nements MIDI, et inclut des heures d'�chantillons d'exemples.

   http://www.linux-france.org/prj/drumpatterns/index-fr.html
   [http://www.linux-france.org/prj/drumpatterns/index-fr.html]

  �diteurs de timbres

    JSynthLib

   JSynthLib est un �diteur et conservateur libre de timbres, �crit en
   langage Java. Ce projet a pour but d'offrir une compatibilit� avec tous
   les synth�tiseurs existants, en fournissant aux utilisateurs des m�thodes
   et des documentations qui leur permette de d�velopper des pilotes et des
   �diteurs pour les synth�tiseurs non compatibles, et de les diffuser via le
   projet.

  Synth�tiseurs virtuels

    Spiral Synth

   Spiral Synth est un synth�tiseur polyphonique analogique virtuel. Il est
   capable de r�utiliser des sons fabriqu�s par des synth�tiseurs analogiques
   mat�riels, comme les bruits utilis�s dans la musique �lectronique. Vous
   pouvez aussi l'utiliser pour cr�er les sons les plus bizarres. Il est
   compatible MIDI et il utilise la sortie sonore standard du syst�me OSS
   libre (/dev/dsp).

   http://www.pawfal.org/SpiralSynth/ [http://www.pawfal.org/SpiralSynth/]

    UltraMaster Juno-6

   UltraMaster Juno-6 est une reproduction virtuelle fid�le du synth�tiseur
   polyphonique Roland Juno-6. Il int�gre la synth�se d'ondes ULTRANAMOG en
   temps-r�el et en 64 bit, permet de produire des accords et des ch�urs dans
   le style des ann�es 80. Tous les param�tres peuvent �tre contr�l�s en
   temps r�el, soit via une interface graphique, soit via des actions sur des
   contr�leurs MIDI externes.

   http://www.ultramaster.com/juno6/index.html
   [http://www.ultramaster.com/juno6/index.html]

    Pure-Data

   Pure-Data est un logiciel temps r�el pour l'ex�cution en direct de pi�ces
   musicales et multim�dia. Il est d�velopp� par Miller Puckette , sans doute
   en collaboration avec d'autres d�veloppeurs. Ce logiciel n'est pas encore
   abouti, mais peut tout � fait �tre utilis� dans le cadre de projets
   complexes. Il a �t� adapt� sur Linux, IRIX, et Windows.

   http://www.pure-data.org/ [http://www.pure-data.org/]

    Csound

   Csound est un synth�tiseur virtuel qui ne souffre pas des limitations des
   autres synth�tiseurs mat�riels ou logiciels de ce type. Le nombre
   d'oscillateurs ou de filtres utilisables est illimit�. Csound est aussi
   compl�tement modulable, de fa�on � ce que chaque fonction soit utilisable
   de plusieurs fa�ons diff�rentes.

   http://www.csound.org/ [http://www.csound.org/].

    �mulateur de Synth�tiseur Bristol

   Bristol est une collection d'�mulateurs de synth�tiseur. Il comprend Moog
   Mini, Moog Voyager, Hammond B3, Prophet 5, Juno 6, DX 7, ainsi que
   d'autres logiciels.

   http://www.slabexchange.org/index.cgi?DOWNLOAD
   [http://www.slabexchange.org/index.cgi?DOWNLOAD]

  Les modules d'extension (plugins)

    xmms-midi

   Il ajoute � x11amp la compatibilit� avec les fichiers MIDI (via timidity).
   Une interface de mixage simplifi�e est disponible par le menu de
   configuration.

   http://ban.joh.cam.ac.uk/~cr212/xmms-midi/
   [http://ban.joh.cam.ac.uk/~cr212/xmms-midi/]

  Partitions musicales

    Mup

   Mup prend des donn�es d'entr�e de type texte pour les transformer en
   donn�es Postcript imprimables. Les notations standards classiques et la
   notation en tablature sont toutes deux utilisables. MUP peut aussi
   produire des donn�es de sortie de type MIDI.

   http://www.arkkra.com/ [http://www.arkkra.com/]

    Lilypond

   LilyPond est un logiciel de composition musicale. Il permet de r�aliser de
   tr�s belles partitions, � partir de donn�es d'entr�e tr�s d�taill�es.
   LilyPond fait partie du projet GNU.

   http://www.lilypond.org/ [http://www.lilypond.org/]

  D�veloppement

    sfront

   Sfront convertit des flux de donn�es audio MP4-SA (MPEG 4 Structured
   Audio) en programmes C tr�s efficaces qui produisent de l'audio �
   l'ex�cution. MP4-SA est un format standard pour des algorithmes de son,
   combinant un langage de cr�ation de signaux audio (SAOL) avec un langage
   de notation musicale (SASL, et le traditionnel format de fichier MIDI).
   Sous Linux, sfront exploite le temps r�el, les entr�es-sorties audio �
   faible temps de latence, les entr�es MIDI � partir de cartes son, ainsi
   que les entr�es MIDI via internet utilisant le RTP et le SIP. Un serveur
   SIP h�berg� sur le campus de Berkeley organise des sessions de travail. Le
   site comprend aussi une aide en ligne � propos du MP4-SA.

   http://www.cs.berkeley.edu/~lazzaro/sa/index.html
   [http://www.cs.berkeley.edu/~lazzaro/sa/index.html]

    jMax

   jMax est un syst�me qui permet de dessiner des circuits de flux de
   donn�es. On peut y entrer des donn�es de type entier, symbole, liste, et
   c�tera. C'est un syst�me pilot� par les �v�nements. JMax est utilis� pour
   la cr�ation MIDI. Une autre partie de ce syst�me, DSP, permet de faire
   circuler un signal en continu dans le circuit, ce qui est le plus pratique
   pour les sons PCM (i. e. : micros, fichiers son, et c�tera). Ce syst�me
   est extensible avec des biblioth�ques partag�es, permettant l'utilisation
   de diff�rents types de gestion des donn�es, de p�riph�riques,
   d'interfaces, de mat�riels, et c�tera. Les modules de traitement de
   donn�es peuvent �tre trait�s comme des circuits et utilis�s en tant que
   tel.

   http://sourceforge.net/projects/jmax/
   [http://sourceforge.net/projects/jmax/]

    TSE3

   TSE3 est un puissant s�quenceur en mode texte, dont les sources sont
   publiques, �crit en C++. C'est un s�quenceur en mode texte parce qu'il
   pr�sente toutes les fonctionnalit�s d'un s�quenceur mais sans interface
   graphique. Diff�rentes applications s�quenceur ou multim�dia utilisent
   TSE3 derri�re leur interface graphique.

   http://TSE3.sourceforge.net/ [http://TSE3.sourceforge.net/]

    KeyKit

   KeyKit est un langage de programmation multi-t�ches (inspir� de awk),
   exclusivement r�serv� aux op�ration MIDI algorithmiques et temps r�el. Son
   interface graphique propose plusieurs douzaines d'outils pour exp�rimenter
   diff�rents algorithmes musicaux, y compris un s�quenceur multipistes et un
   �diteur de motifs rythmiques. L'interface et les outils sont compl�tement
   �crits dans le langage de KeyKit. Cela permet d'ajouter de nouveaux outils
   et nouvelles fonctionnalit�s � l'existant, tout en utilisant le syst�me.

   http://nosuch.com/keykit/ [http://nosuch.com/keykit/]

Le d�veloppement MIDI

   Ceux qui souhaitent d�velopper des applications MIDI ont souvent besoin de
   bons exemples pour d�marrer.

   Les exemples suivants proviennent de la liste de discussions LAD.

  Exemple 1

   Vous trouverez ci-dessous une fonction de s�quencement �crite par Dr.
   Matthias Nagorni. D'autres exemples sont disponibles sur son site (cf la
   section Liens).

   Vous le compilez de la fa�on suivante :

 [phil@beatbox] $ gcc seqdemo.c -o seqdemo -lasound


 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <alsa/asoundlib.h>

 snd_seq_t *open_seq();
 void midi_action(snd_seq_t *seq_handle);

 snd_seq_t *open_seq() {

   snd_seq_t *seq_handle;
   int portid;

   if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) {
     fprintf(stderr, "Error opening ALSA sequencer.\n");
     exit(1);
   }
   snd_seq_set_client_name(seq_handle, "ALSA Sequencer Demo");
   if ((portid = snd_seq_create_simple_port(seq_handle, "ALSA Sequencer Demo",
             SND_SEQ_PORT_CAP_WRITE|SND_SEQ_PORT_CAP_SUBS_WRITE,
             SND_SEQ_PORT_TYPE_APPLICATION)) < 0) {
     fprintf(stderr, "Error creating sequencer port.\n");
     exit(1);
   }
   return(seq_handle);
 }

 void midi_action(snd_seq_t *seq_handle) {

   snd_seq_event_t *ev;

   do {
     snd_seq_event_input(seq_handle, &ev);
     switch (ev->type) {
       case SND_SEQ_EVENT_CONTROLLER:
         fprintf(stderr, "Control event on Channel %2d: %5d       \r",
                 ev->data.control.channel, ev->data.control.value);
         break;
       case SND_SEQ_EVENT_PITCHBEND:
         fprintf(stderr, "Pitchbender event on Channel %2d: %5d   \r",
                 ev->data.control.channel, ev->data.control.value);
         break;
       case SND_SEQ_EVENT_NOTEON:
         fprintf(stderr, "Note On event on Channel %2d: %5d       \r",
                 ev->data.control.channel, ev->data.note.note);
         break;
       case SND_SEQ_EVENT_NOTEOFF:
         fprintf(stderr, "Note Off event on Channel %2d: %5d      \r",
                 ev->data.control.channel, ev->data.note.note);
         break;
     }
     snd_seq_free_event(ev);
   } while (snd_seq_event_input_pending(seq_handle, 0) > 0);
 }

 int main(int argc, char *argv[]) {

   snd_seq_t *seq_handle;
   int npfd;
   struct pollfd *pfd;

   seq_handle = open_seq();
   npfd = snd_seq_poll_descriptors_count(seq_handle, POLLIN);
   pfd = (struct pollfd *)alloca(npfd * sizeof(struct pollfd));
   snd_seq_poll_descriptors(seq_handle, pfd, npfd, POLLIN);
   while (1) {
     if (poll(pfd, npfd, 100000) > 0) {
       midi_action(seq_handle);
     }
   }
 }


  Exemple 2

   Vous trouverez ci-dessous un � aiguilleur � MIDI bas� sur ALSA 0.9 �crit
   par Nick Dowell.

 /* Aiguilleur pour s�quenceur ALSA.
    Aiguille les donn�es d'entr�e vers les sorties d�finies
    par le canal MIDI (� la demande de Nathaniel Virgo sur
    Linux-Audio-Dev ;o)). Est bas� sur l'exemple de fonction
    s�quenceur ALSA �crit par Dr. Matthias Nagorni.

    Nick Dowell <nixx CHEZ nixx POINT org POINT uk>    */

 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <alsa/asoundlib.h>

 int
 main()
 {
   snd_seq_t *seq_handle;
   snd_seq_event_t *ev;
   int i;
   int portid;              /* port d'entr�e (input) */
   int oportid[16];         /* ports de sortie (outputs) */
   int npfd;
   struct pollfd *pfd;
   char txt[20];

   if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) {
     fprintf(stderr, "Error opening ALSA sequencer.\n");
     exit(1);
   }

   snd_seq_set_client_name(seq_handle, "MIDI Redirect");

   /* open one input port */
   if ((portid = snd_seq_create_simple_port
        (seq_handle, "Input",
         SND_SEQ_PORT_CAP_WRITE | SND_SEQ_PORT_CAP_SUBS_WRITE,
         SND_SEQ_PORT_TYPE_APPLICATION)) < 0) {
     fprintf(stderr, "fatal error: could not open input port.\n");
     exit(1);
   }
   /* open 16 output ports for the MIDI channels */
   for (i=0; i<16; i++){
     sprintf( txt, "MIDI Channel %d", i );
     if ((oportid[i] = snd_seq_create_simple_port
          (seq_handle, txt,
           SND_SEQ_PORT_CAP_READ | SND_SEQ_PORT_CAP_SUBS_READ,
           SND_SEQ_PORT_TYPE_APPLICATION)) < 0) {
       fprintf(stderr, "fatal error: could not open output port.\n");
       exit(1);
     }
   }

   npfd = snd_seq_poll_descriptors_count(seq_handle, POLLIN);
   pfd = (struct pollfd *)alloca(npfd * sizeof(struct pollfd));
   snd_seq_poll_descriptors(seq_handle, pfd, npfd, POLLIN);

   while (1)  /* main loop */
     if (poll(pfd, npfd, 1000000) > 0){
       do {
         snd_seq_event_input(seq_handle, &ev);
         snd_seq_ev_set_source( ev, oportid[ev->data.control.channel] );
         snd_seq_ev_set_subs( ev );
         snd_seq_ev_set_direct( ev );
         snd_seq_event_output_direct( seq_handle, ev );
         snd_seq_free_event(ev);
       } while (snd_seq_event_input_pending(seq_handle, 0) > 0);
     }
   return 0;
 }


  Exemple 3

   Vous trouverez ci-dessous un exemple d'�criture de donn�es dans
   l'interface OSS /dev/midi par Craig Stuart Sapp.

   Vous pourrez trouver plus d'exemples sur son site (cf la section Liens).

 //
 // Programmeur:            Craig Stuart Sapp
 // Adresse �lectronique :  craig CHEZ ccrma POINT standford POINT edu
 // Date de Cr�ation :      Lundi 21 d�cembre 1998 18:00:42
 // Derni�re modification : Lundi 21 d�cembre 1998 18:00:42
 // Nom de fichier :      ...linuxmidi/output/method1.c
 // Langage :             C
 // $Smake: gcc -O -o devmidiout devmidiout.c && strip devmidiout
 //

 #include <linux/soundcard.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <stdio.h>

 int main(void) {
    char* device =  "/dev/midi" ;
    unsigned char data[3] = {0x90, 60, 127};

    // �tape 1: ouvre le module OSS pour �criture
    int fd = open(device, O_WRONLY, 0);
    if (fd < 0) {
       printf("Error: cannot open %s\n", device);
       exit(1);
    }

    // �tape 2: �crit les donn�es MIDI dans le module OSS
    write(fd, data, sizeof(data));

    // �tape 3: (en option) ferme le module OSS
    close(fd);

    return 0;
 }

Guide d'utilisation de s�quenceurs MIDI avec des synth�tiseurs virtuels

  Version fran�aise du guide pratique HOWTO Use MIDI Sequencers With Softsynths

  Frank Barknecht

   <barknech CHEZ ph TIRET cip POINT uni TIRET koeln POINT de>

   http://linux-sound.org/quick-toots/4-sequencers_and_softsynths/quick-toot-midisynth_howto.html
   [http://linux-sound.org/quick-toots/4-sequencers_and_softsynths/quick-toot-midisynth_howto.html]

   Ce guide d�crit les r�glages n�cessaires pour contr�ler un synth�tiseur
   MIDI virtuel � partir d'un s�quenceur MIDI et via une connexion MIDI
   virtuelle sous ALSA 0.9. Ce document peut �tre librement traduit et
   diffus�. Il est soumis � la licence de documentation libre GNU.

  Introduction

   Les synth�tiseurs virtuels, tels que Csound, Pure Data, jMax ou Spiral
   Synth Modular offrent des possibilit�s quasi infinies pour exp�rimenter
   les sons les plus usuels ou les plus inhabituels. Ils peuvent en outre
   remplacer les synth�tiseurs mat�riels, relativement chers, ou ceux,
   souvent de mauvaise qualit�, qui �quipent les cartes son, si tant est
   qu'ils soient compatibles avec Linux. En contrepartie, composer sur ces
   synth�tiseurs virtuels peut s'av�rer fastidieux, comme sur Csound o� l'on
   doit aligner des pages enti�res de chiffres pour composer, ce qui n'est
   pas l'id�al pour faire de la musique.

   Les logiciels s�quenceurs MIDI virtuels permettent de rendre la t�che plus
   agr�able. Ils sont munis d'une interface permettant d'ins�rer des notes et
   des �v�nements MIDI de fa�on pratique : soit par l'interm�diaire d'une
   vraie partition, soit par un rouleau de piano m�canique ou via une liste
   d'�v�nements MIDI, suivant vos pr�f�rences. D'autres types de s�quenceurs
   virtuels permettent d'entrer les notes en utilisant des morceaux de
   pistes, comme on le faisait dans le temps en direct. Dernier point, non
   des moindres, certains s�quenceurs MIDI vous permettent d'enregistrer vos
   propres musiques par l'interm�diaire d'un mat�riel externe (clavier ou
   autre), ce qui se r�v�le, pour certains musiciens, le moyen le plus
   naturel de faire de la musique.

   D'habitude, les s�quenceurs MIDI envoient leurs donn�es vers des
   p�riph�riques MIDI qui � leur tour vont r�orienter les donn�es vers
   l'ext�rieur, � savoir vers des synth�tiseurs et des �chantillonneurs
   mat�riels. Gr�ce aux outils MIDI virtuels, on peut garder au sein du PC
   toutes les donn�es MIDI et les faire contr�ler par un logiciel tournant
   sur la m�me machine. Ce guide d�crit tout ce qui est n�cessaire pour en
   arriver l�.

  param�trage du mat�riel

   Pour le param�trage, nous utiliserons les biblioth�ques et les pilotes
   d'ALSA, ce qui doit �tre le cas si l'on veut utiliser s�rieusement le son
   et le MIDI sous Linux. � partir de maintenant, nous supposerons que vous
   utilisez la version 0.9.0 d'ALSA. Toutefois, le module MIDI utilis� est
   aussi pr�sent dans la version 0.5.x, ce qui rend les explications � venir
   tout aussi valables. Sous les architectures son OSS/Free (avec les modules
   de son trouv�s dans les noyaux ant�rieurs � la version 2.5.x) et
   OSS/Linux, le module v_midi peut �tre utilis�, mais cela d�passe le cadre
   de ce guide.

   Pour utiliser la carte MIDI virtuelle d'ALSA, le module snd-card-virmidi
   doit �tre pr�sent. Avec la plupart des versions r�centes d'ALSA (ainsi que
   dans la version 2.5.x de d�veloppement de noyau), le nom de ce module a
   �t� renomm� � snd-virmidi �. Assurez-vous que vous avez bien pris en
   compte ce module : il pourrait vous manquer lors de la configuration
   d'ALSA, si vous n'avez pris en compte que les modules propres � votre
   carte son.

   Vous devez charger le module virmidi pour activer les ports MIDI. Vous
   pouvez les tester avec :

 $ modprobe snd-virmidi snd_index=1

   o� snd_index doit �tre adapt� au premier index de carte libre (= 1 si vous
   disposez uniquement d'une carte qui a d�j� l'index 0). Cela dit, il est
   plus pratique d'adapter la configuration de vos modules pour qu'ils soient
   disponible chaque fois que vous les utilisez. Pour cela, il faut ajouter �
   la section ALSA du fichier /etc/modules.conf (le chemin d�pend de votre
   distribution) les lignes suivantes :

 # Configure les supports pour OSS /dev/sequencer et
 # /dev/music (aussi appel� /dev/sequencer2)
 #
 # (Takashi Iwai nous indique qu'il n'est pas n�cessaire
 # de cr�er des alias pour des cartes au-del� de la premi�re
 # carte, i.e., la carte 0)
 #
 alias sound-service-0-1 snd-seq-oss
 alias sound-service-0-8 snd-seq-oss

 # Configure la carte 1 (deuxi�me carte) en tant que carte MIDI virtuelle
 alias sound-slot-1 snd-card-1
 alias snd-card-1 snd-virmidi

   D�sormais, votre carte MIDI virtuelle est configur�e en tant que carte
   d'index 1, ce qui suppose que vous poss�dez une carte son r�elle (ce qui
   peut s'av�rer tr�s utile). Si vous poss�dez comme moi une seconde carte
   son r�elle, modifiez la configuration ci-dessus comme suit :

 # Configure la carte d'index 2 (troisi�me carte) en tant que
 # carte MIDI virtuelle
 alias sound-slot-2 snd-card-2
 alias snd-card-2 snd-virmidi

   Si vous poss�dez plus de cartes son que cela, vous saurez s�rement vous
   adapter.

   Il se peut qu'il soit n�cessaire de red�marrer le syst�me ALSA, apr�s quoi
   vous devriez voir indiqu�e la carte son virtuelle dans le fichier
   /proc/asound/cards :

 $ cat /proc/asound/cards
 0 [card0          ]: ICE1712 - M Audio Audiophile 24/96
                      M Audio Audiophile 24/96 at 0xb800, irq 5
 1 [card1          ]: EMU10K1 - Sound Blaster Live!
                      Sound Blaster Live! at 0xc800, irq 11
 2 [card2          ]: VirMIDI - VirMIDI
                      Virtual MIDI Card 1

   Dans cet exemple tir� de mon propre PC, ma carte VirMIDI est la troisi�me,
   d'index 2. Cette configuration se retrouve dans le fichier
   /proc/asound/devices (seul les param�tres MIDI sont affich�s) :

 $ cat /proc/asound/devices
  8: [0- 0]: raw MIDI
 41: [1- 1]: raw MIDI
 42: [1- 2]: raw MIDI
 75: [2- 3]: raw MIDI
 74: [2- 2]: raw MIDI
 73: [2- 1]: raw MIDI
 72: [2- 0]: raw MIDI

   Les entr�es commen�ant par � 2- � correspondent � ma carte MIDI
   virtuelle . Si vous ne poss�dez qu'une seule carte r�elle, ces entr�es
   commenceront par � 1- �.

   Vous pouvez obtenir un affichage plus conviviale des param�tres avec
   l'outil aconnect. Il s'agit d'un outil propre � ALSA, dont vous aurez de
   toutes fa�ons besoin. Pour obtenir la liste des p�riph�riques MIDI
   utilisables en sortie, appelez-le avec l'option -o (ou -lo). Pour ceux
   utilisables en entr�e, appelez-le avec l'option -i.

 $ aconnect -o
 [...]
 client 80: 'Virtual Raw MIDI 2-0' [type=kernel]
     0 'VirMIDI 2-0     '
 client 81: 'Virtual Raw MIDI 2-1' [type=kernel]
     0 'VirMIDI 2-1     '
 client 82: 'Virtual Raw MIDI 2-2' [type=kernel]
     0 'VirMIDI 2-2     '
 client 83: 'Virtual Raw MIDI 2-3' [type=kernel]
     0 'VirMIDI 2-3     '
 $ aconnect -i
 [...]
 client 80: 'Virtual Raw MIDI 2-0' [type=kernel]
     0 'VirMIDI 2-0     '
 client 81: 'Virtual Raw MIDI 2-1' [type=kernel]
     0 'VirMIDI 2-1     '
 client 82: 'Virtual Raw MIDI 2-2' [type=kernel]
     0 'VirMIDI 2-2     '
 client 83: 'Virtual Raw MIDI 2-3' [type=kernel]
     0 'VirMIDI 2-3     '

   Les p�riph�riques affich�s correspondent aux p�riph�riques MIDI
   compatibles OSS propres � ALSA tels que d�finis dans le r�pertoire
   /proc/asound/dev. Par exemple, le p�riph�rique /proc/asound/dev/midiC2D0
   est le premier de notre carte MIDI virtuelle index�e 2, nomm�e Virtual Raw
   MIDI 2-0 par l'outil aconnect. Sous D�bian, ces p�riph�riques sont aussi
   visibles dans le r�pertoire /dev/snd/, et sont aussi li�s en interne aux
   anciens r�pertoires de p�riph�riques /dev/midiXX. Pour m'assurer que je
   pouvais acc�der aux ports MIDI d'ALSA � partir de /dev/midiXX, je les ai
   renomm�s ainsi :

 $ ln -s /dev/snd/midiC2D0 /dev/midi20
 $ ln -s /dev/snd/midiC2D1 /dev/midi21
 [...]

   mais cela n'est pas n�cessaire : ne le faites surtout pas chez vous !

   Maintenant que nous avons cr�� et configur� une carte MIDI virtuelle, nous
   pouvons l'utiliser dans nos applications comme tout autre p�riph�riques
   MIDI. Il vous suffit d'indiquer la r�f�rence du p�riph�rique MIDI, qu'il
   s'agisse d'une r�f�rence compatible OSS, comme /dev/midi20 ou d'un port
   MIDI ALSA comme 80:0, � l'endroit appropri� dans le param�trage de votre
   s�quenceur ou synth�tiseur pr�f�r�.

  Canalisation des �v�nements MIDI

    aconnect

   Sans autre manipulation, il ne vous sera pas possible d'envoyer des
   �v�nements MIDI � partir de votre s�quenceur vers le synth�tiseur virtuel.
   Pour ce faire, nous devons connecter deux ports avec, vous l'aurez devin�,
   l'outil aconnect. Cet outil permet de connecter deux ports ou plus. Les
   fichier obtenus avec -i ou -o plus haut nous ont d�j� indiqu� les ports
   disponibles. Maintenant, avec une syntaxe tr�s simple, ces ports peuvent
   �tre connect�s ainsi :

 $ aconnect port_d_envoi port_de_reception
 $ aconnect 80:0 81:0

   Cette manipulation permet d'aiguiller toutes les donn�es MIDI envoy�es sur
   le port 80:0 vers le port 80:1. Dans notre configuration, cela signifie
   que toute donn�e entrant sur le port /dev/midi20 est r�orient�e vers le
   port /dev/midi21, sur lequel elle peut �tre lue (� re�ue �) par une autre
   application.

   Si votre carte MIDI virtuelle est configur�e en tant que seconde carte
   (index 1), vous devez obtenir les ports suivants :

 $ aconnect -lo
 client 72: 'Virtual Raw MIDI 1-0' [type=kernel]
     0 'VirMIDI 1-0     '
 client 73: 'Virtual Raw MIDI 1-1' [type=kernel]
     0 'VirMIDI 1-1     '
 client 74: 'Virtual Raw MIDI 1-2' [type=kernel]
     0 'VirMIDI 1-2     '
 client 75: 'Virtual Raw MIDI 1-3' [type=kernel]
     0 'VirMIDI 1-3

   Ici, vous pouvez par exemple connecter le port 72:0 (/dev/midi10) au port
   73:0 (/dev/midi11) en tapant :

 $ aconnect 72:0 73:0

   aconnect peut nous montrer ce qui a �t� cr�e avec ses options -lo et -li :

 $ aconnect -lo
 client 72: 'Virtual Raw MIDI 1-0' [type=kernel]
     0 'VirMIDI 1-0     '
         Connecting To: 73:0
 client 73: 'Virtual Raw MIDI 1-1' [type=kernel]
     0 'VirMIDI 1-1     '
         Connected From: 72:0
 client 74: 'Virtual Raw MIDI 1-2' [type=kernel]
     0 'VirMIDI 1-2     '
 client 75: 'Virtual Raw MIDI 1-3' [type=kernel]
     0 'VirMIDI 1-3

   Vous constatez que le � Virtual Raw MIDI 1-0 � est maintenant connect� au
   � Virtual Raw MIDI 1-1 �. D�s lors, en fonction de vos applications, vous
   pourrez lire les donn�es MIDI envoy�es � votre port � Virtual Raw MIDI
   1-0 � � partir du port � Virtual Raw MIDI 1-1 �, ou, en reprenant le
   vocabulaire OSS : tout ce qui est envoy� sur le port /dev/midi10 est
   aiguill� sur le port /dev/midi11 et peut �tre lu � partir de l�.

   Vous pouvez aussi connecter plus d'un port sur un autre. Si vous faites
   aconnect une deuxi�me fois comme ceci :

  $ aconnect 72:0 73:0
  $ aconnect 72:0 74:0

   vous pouvez recevoir les m�mes donn�es envoy�es sur /dev/midi10, sur les
   ports /dev/midi11 et /dev/midi12. Et bien entendu, vous risquez vraiment
   de surcharger votre syst�me si vous cr�ez encore plus de cartes MIDI
   virtuelles et que vous les connectez entre elles. Mais rien n'emp�che de
   le faire.

   Pour d�connecter tous les ports, faites :

 $ aconnect -x

   Pour ne d�connecter qu'un seul port, faites :

 $ aconnect -d 72:0 74:0

  Tableaux de raccordement MIDI graphiques

   Le tableau de raccordement MIDI ALSA (Alsa Patch Bay) de Bob Ham est une
   interface graphique tr�s pratique pour la configuration MIDI d'ALSA sous
   Linux. Son utilisation est tr�s simple et intuitive : sur la gauche, vous
   disposez des ports MIDI capables d'envoyer des �v�nements MIDI, alors que
   sur la droite, vous avez les ports capables d'en recevoir. Si vous cliquez
   sur un port de gauche, cela le s�lectionne pour �tre connect� au port de
   droite sur lequel vous cliquez ensuite. Pour un port connect�, il suffit
   de cliquer sur le port de droite pour le d�connecter : un outil pr�cis
   facile � utiliser, qui aurait presque tendance � rendre inutile ce qui a
   �t� dit plus haut ! ;o)

    aseqview

   aseqview est un autre outil tr�s utile pour g�rer les flux MIDI. Il a �t�
   cr�� par Takashi Iwai, qui fait partie des d�veloppeurs d'ALSA. Vous
   pouvez le t�l�charger depuis la page web d'Iwai-sama
   http://members.tripod.de/iwai/alsa.html
   [http://members.tripod.de/iwai/alsa.html], mais il est souvent inclus dans
   les distributions. Cet outil graphique a �t� cr�� pour visualiser et
   modifier les �v�nements MIDI pendant qu'ils transitent par votre PC. Il
   peut aussi orienter les donn�es MIDI vers d'autres ports, tout comme
   aconnect. Cela peut s'av�rer utile lorsque vous devez utiliser le
   s�quenceur OSS, qu'aconnect est parfois incapable d'utiliser. Si vous
   lancez aseqview sans aucune option, vous obtenez une jolie interface
   graphique et un nouveau port MIDI. Le port par d�faut est nomm� 128:0, et
   il ressemble � cela :

 client 128: 'MIDI Viewer' [type=user]
    0 'Viewer Port 0 '

   Avec ce port, toutes les manipulations effectu�es plus haut avec aconnect
   sont possibles. Si vous souhaitez seulement connecter le port aseqview �
   un autre port, aseqview peut le faire par lui-m�me avec l'option -d :

 $ aseqview -d 73:0 &

   Cela connecte le port 128:0 au port 73:0 d�s le d�marrage d'aseqview.

   Il existe d'autre outils graphiques de connexion, avec des fonctions tr�s
   similaires. Maarten de Boer a utilis� la plupart des sources aconnect
   d'origine pour �crire une interface graphique appel�e � aconnectgui � �
   l'aide de l'outil FLTK. Vous pouvez la trouver � l'adresse
   http://www.iua.upf.es/~mdeboer/ [http://www.iua.upf.es/~mdeboer/]. C'est,
   � mon avis, l'interface la plus agr�able � utiliser.

   Personnellement, j'utilise kaconnect, sans doute parce son nom est court
   et donc plus rapide � taper. kaconnect a �t� d�velopp� par Dr. Matthias
   Nagorni de SuSE, au sein d'une s�rie d'outils et de synth�tiseurs virtuels
   pour ALSA, les kalsatools. Ne vous m�prenez pas sur le � k � : ce logiciel
   n'a pas besoin de KDE. Il utilise directement les biblioth�ques graphiques
   QT. kaconnect, et d'autres logiciels, sont disponibles sur
   http://www.suse.de/~mana/kalsatools.html
   [http://www.suse.de/~mana/kalsatools.html].

  Applications

   Dans ce dernier chapitre, je veux vous montrer quelques exemples
   d'utilisation des connections virtuelles MIDI dans diverses applications.
   Mettons que je dispose d'une carte VirMIDI, troisi�me sur mon syst�me,
   utilisant les ports MIDI ALSA 80:0 � 83:0, ce qui correspond aux
   p�riph�riques OSS MIDI : /dev/midi20 � /dev/midi23, et aux p�riph�riques
   ALSA MIDI : /dev/snd/midiC2D0 � /dev/snd/midiC2D3. Le deux premiers
   d'entre eux ont �t� connect�s de la fa�on suivante :

 $ aconnect 80:0 81:0

   Ce qui signifie que toutes les donn�es envoy�es au port /dev/midi20 (ou
   port 80:0 ou /dev/snd/midiC2D0) peuvent �tre maintenant lues sur le port
   /dev/midi21 (ou port 80:1 ou /dev/snd/midiC2D1).

  Les s�quenceurs

    MusE

   MusE est un s�quenceur virtuel complet �crit par Werner Schweer,
   disponible � l'adresse : http://muse.seh.de. [http://muse.seh.de.]. Nous
   devons configurer le port MIDI virtuel comme port de sortie (output) dans
   le menu � Config->MIDI Ports �. Avec MusE, les ports sont d�sign�s par
   leur d�nomination ALSA, du type � VirMIDI X-X �.

   Assurez-vous d'avoir bien s�lectionn� le bon port comme port de sortie
   pour le canal sur lequel vous souhaitez que le synth�tiseur oriente et
   joue les donn�es MIDI.

   Pour des raisons que j'ignore, je n'ai pas pu utiliser � VirMIDI 2-0 �
   comme sortie avec MusE 0.4.9. Ce devrait �tre pourtant la bonne sortie
   pour recevoir les donn�es sur le port � VirMIDI 2-1 �, mais j'ai d�
   l'utiliser d'une autre fa�on. Je ne sais pas pourquoi. On peut aussi
   utiliser les ports midi02 ou midi2.

    ttrk

   ttrk, d�velopp� par Billy Biggs, est un petit s�quenceur tr�s simple muni
   d'une interface de mixage. Il peut sortir toutes ses donn�es MIDI vers
   n'importe lequel des ports configur�s dans le fichier $HOME/.ttrkrc.

    Shaketracker

   Le Shaketracker de Juan Linietsky reprend une interface de mixage MIDI
   semblable � celle de ttrk, avec toutefois une transposition compl�te des
   effets classiques de mixage sur les donn�es MIDI. Malheureusement, il
   utilise comme sortie MIDI le s�quenceur d'OSS (/dev/sequencer), et non les
   p�riph�riques MIDI natifs (raw MIDI). Je n'ai pas pu le faire fonctionner
   avec aconnect. Toutefois, il poss�de un environnement qui inclut aseqview.
   Si l'on d�marre aseqview avant Shaketracker, le gestionnaire de piste
   reconna�tra et utilisera les ports de aseqview. Il suffit de le
   s�lectionner dans le menu � User Devices � de Shaketracker, o� il figure
   sous son nom ALSA � Viewer Port 0 �.

   Il peut �tre pratique de donner � ce p�riph�rique utilisateur un nom plus
   explicite que � Null Output �.

   Si nous d�marrons aseqview sans option, nous aurons besoin de connecter le
   port aseqview avec le port du synth�tiseur virtuel. Mais, comme dit
   pr�c�demment, nous pourrions aussi d�marrer directement aseqview avec un
   port de destination. N'oubliez pas d'utiliser le menu User Device pour
   chacune des pistes qui doit aller vers le synth�tiseur virtuel. Je fais
   toujours tourner Shaketracker avec un script qui d�marre aseqview, attend
   la cr�ation des ports, et d�marre enfin Shaketracker:

 #!/bin/sh
 aseqview -d 81:0 &
 # sleep 2 seconds to let aseqview do its work:
 sleep 2
 shaketracker

  Synth�tiseurs virtuels

    Pure Data

   Miller Puckette est le g�nie qui se cache derri�re Pure Data, un
   synth�tiseur logiciel libre et un environnement de d�veloppement
   multim�dia. Pure Data est issu de MAX et est � la base de l'extension MAX
   MSP. Pure Data peut aussi utiliser des p�riph�riques MIDI natifs pour lire
   les �v�nements MIDI. Il faut, pour cela, indiquer quels p�riph�riques
   utiliser avec l'option -midiindev num�ro_de_p�riph�rique. Cependant, la
   mani�re d'indiquer quel p�riph�rique utiliser est assez d�routante. Voici
   la fa�on de faire : pour utiliser /dev/midi0, d�marrez Pure Data avec
   -midiindev 1, pour utiliser /dev/midi1 d�marrez-le avec -midiindev 2 et
   ainsi de suite. Vous devez donc indiquer le num�ro de port + 1. Un autre
   exemple : pour /dev/midi21 d�marrez Pure Data avec l'option -midiindev 22.

   Pure Data offre aussi un guide d'aide : � Test audio and MIDI �, ce qui
   peut vraiment aider pour d�tecter le bon p�riph�rique MIDI.

    Csound

   Csound est l'anc�tre de quasiment tous les synth�tiseurs virtuels actuels,
   et il a contribu� � l'�volution du MIDI. Lancer csound --help vous
   indiquera comment configurer le port d'entr�e MIDI. Faites -M nom_du_port
   ou --midieventdev=nom_du_port et vous pourrez lire les donn�es MIDI en
   temps r�el.

   Ainsi, dans notre exemple, nous lancerons Csound de la fa�on suivante :

 $ csound -M /dev/midi22 -o devaudio midi.csd

    Conclusion

   Dor�navant, vous devriez pouvoir vous d�brouiller avec tous les
   synth�tiseurs virtuels pour orchestrer de la musique cr��e et jou�e par un
   s�quenceur MIDI. Bien s�r, des outils comme aconnect et aseqview ne sont
   pas n�cessaires pour utiliser un s�quenceur virtuel. Vous pouvez tout
   aussi bien rediriger les flux de donn�es MIDI qui arrivent sur votre PC �
   partir d'un s�quenceur externe ou d'un clavier MIDI directement vers le
   synth�tiseur virtuel sans passer par l'�tape du s�quenceur MIDI. Vous
   devez simplement � aconnecter � le mat�riel MIDI externe � votre
   synth�tiseur virtuel ou sur le synth�tiseur embarqu� sur votre carte son.
   Ou faire l'inverse : Pure Data, Csound ou des environnements comme KeyKit
   vous permettent de cr�er des �v�nements MIDI de fa�on algorithmique, ce
   qui est presque impossible avec des logiciel de type Cubase. Avec
   aconnect, vous pouvez aiguiller les �v�nements MIDI vers n'importe quel
   logiciel capable de les jouer.

  Remerciements

   L'auteur souhaite remercier Takashi Iwai pour son aide technique lors de
   l'�laboration de ce document et pour ses pr�cieux conseils en Japonais.
   Merci, Takashi !

Liens Utiles

   Vous trouverez ci-dessous une liste de liens vers des sites traitant du
   MIDI sous Linux.

   http://www.linux-sound.org/ [http://www.linux-sound.org/] Logiciels audio
   et MIDI sous Linux. Une mine de renseignements sur le MIDI et l'audio.

   http://www.linuxdj.com/audio/lad/ [http://www.linuxdj.com/audio/lad/] La
   liste de discussions des d�veloppeurs Audio sous Linux. Pour toute
   discussion sur le d�veloppement MIDI.

   http://www.linuxdj.com/audio/quality
   [http://www.linuxdj.com/audio/quality] Le guide Linux de la qualit� audio.
   Un bon chapitre sur les cartes MIDI, essentiel pour cr�er son studio
   Linux.

   http://www.alsa-project.org/ [http://www.alsa-project.org/] Le projet ALSA
   -- Pilotes audio et MIDI.

   http://www.4front-tech.com/ [http://www.4front-tech.com/] OSS -- Pilotes
   audio et MIDI.

   http://www.gardena.net/benno/linux/audio/
   [http://www.gardena.net/benno/linux/audio/] Correctif de minimisation des
   temps de latence.

   http://ccrma-www.stanford.edu/~craig/articles/linuxmidi/
   [http://ccrma-www.stanford.edu/~craig/articles/linuxmidi/] Introduction �
   la programmation MIDI sous Linux. Craig Stuart Sapp d�crit les outils de
   base pour �crire du MIDI en C ou C++ pour des pilotes OSS.

   http://www.suse.de/~mana [http://www.suse.de/~mana] Excellente collection
   de programmes C pour ALSA 0.9 MIDI et PCM, par Dr. Matthias Nagorni.

Commentaires et corrections

   Comme toujours, un guide �volue dans le temps. Je vous encourage � me
   transmettre (en anglais) vos suggestions ou informations sur les nouvelles
   applications et les d�veloppements int�ressants du MIDI sous Linux.

   Par leur grande vari�t�, les cartes son sont parfois difficiles �
   configurer, notamment parce qu'elles ont plusieurs niveaux de pilotes et
   d'options de configuration. Les meilleures sources de renseignement en cas
   de dysfonctionnement sont les sites web de ALSA et OSS, mais aussi les
   forums, ainsi que les listes de discussions consacr�es � l'audio sous
   Linux.

Adaptation fran�aise des guides pratiques Linux

   L'adaptation fran�aise de ce document a �t� r�alis�e dans le cadre du
   Projet de traduction des Guides pratiques Linux.

   Vous pourrez lire d'autres guides pratiques traduits et en apprendre plus
   sur ce projet en allant sur le site de l'association Traduc.org
   [http://wiki.traduc.org].

   Si vous souhaitez apporter votre contribution, n'h�sitez pas � nous
   rejoindre, nous serons heureux de vous accueillir.

   N'h�sitez pas � faire parvenir vos commentaires et suggestions concernant
   l'adaptation fran�aise de ce document � l'adresse : <commentaires CHEZ
   traduc POINT org>.