                       Guide pratique du MIDI sous Linux

  Version franaise de The Linux MIDI-HOWTO

  Phil Kerr

   <phil CHEZ plus24 POINT com>

  Jean-Marc Legrand

   <cjm POINT legrand CHEZ wanadoo POINT fr>

   Adaptation franaise

  ric Madesclair

   <eric TIRET m CHEZ wanadoo POINT fr>

   Relecture de la version franaise

  Jean-Philippe Gurard

   <fevrier CHEZ tigreraye POINT org>

   Relecture rapide

  Jean-Philippe Gurard

   <fevrier CHEZ tigreraye POINT org>

   Prparation 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        |
   |------------------------------------------------------------------------|
   | Premire traduction franaise.                                         |
   |------------------------------------------------------------------------|
   | Version 1.20                | 2002-05-24         | PK                  |
   |-----------------------------+--------------------+---------------------|
   | Version 1.10                | 2002-04-02         | PK                  |
   |-----------------------------+--------------------+---------------------|
   | Version 1.00                | 2002-01-25         | PK                  |
   +------------------------------------------------------------------------+

   Rsum

   Ce document prsente, et explique comment utiliser le matriel et les
   logiciels permettant de jouer et de composer des fichier MIDI sous Linux.

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

   Table des matires

   Introduction

   Droits d'utilisation (Copyright of this document)

   O se procurer ce guide ?

   Remerciements

   Avertissement (Disclaimer)

   Histoire du MIDI

   Configurer ses priphriques MIDI

                Installation rapide de ALSA 0.9

                Les problmes de latence

   Les logiciels

                Les pilotes

                Les lecteurs MIDI

                Les squenceurs

                Consoles de mixage MIDI

                diteurs de rythmes

                diteurs de timbres

                Synthtiseurs virtuels

                Les modules d'extension (plugins)

                Partitions musicales

                Dveloppement

   Le dveloppement MIDI

                Exemple 1

                Exemple 2

                Exemple 3

   Guide d'utilisation de squenceurs MIDI avec des synthtiseurs virtuels

                Introduction

                paramtrage du matriel

                Canalisation des vnements MIDI

                Tableaux de raccordement MIDI graphiques

                Applications

                Les squenceurs

                Synthtiseurs virtuels

                Remerciements

   Liens Utiles

   Commentaires et corrections

Introduction

   Ce document traite des points suivants :

     * comment configurer votre interface MIDI ;

     * comment configurer et utiliser des synthtiseurs logiciels ;

     * comment jouer des fichiers MIDI ;

     * comment utiliser un squenceur ;

     * comment contrler du matriel MIDI externe ;

     * logiciels MIDI bass sur la synthse 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 intitule   Guide
   d'utilisation de squenceurs MIDI avec des synthtiseurs virtuels  .

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

   Copyright  2004 Jean-Marc Legrand, ric Madesclair, Jean-Philippe Gurard
   pour la version franaise.

   Ce guide pratique est distribu sous la licence de documentation libre GNU
   (GFDL). Vous devriez avoir reu 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 franaise non-officielle  cette adresse :

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

O se procurer ce guide ?

   La dernire version franaise 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 dernire version originale de ce guide pratique est publie 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 dsormais le  Guide d'utilisation des Squenceurs MIDI
   avec des Synthtiseurs 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 (Dveloppeurs 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 dcline 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 entirement 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 proprit de leurs
   dtenteurs respectifs, sauf indication contraire.

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

   Aucune remarque contenue dans ce document ne pourra tre considre 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
   considre 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
   systme avant toute installation d'importance et de le sauvegarder
   rgulirement 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 matriels et logiciels permettant 
   des instruments de musique lectroniques de communiquer entre eux. Le MIDI
   est apparu pour la premire fois en 1982, et s'est impos comme le
   standard de communication pour ce type d'instruments. Ce protocole fixe
   les paramtres physiques du matriel (connexions et interfaces
   matrielles), et permet de disposer d'un ventail prcis de protocoles de
   communication pour l'change de donnes musicales et rythmiques.

   Avant le MIDI, il existait d'autres protocoles de connexion, tout d'abord
   analogiques, puis numriques. Le plus ancien, au alentours de 1974,
   permettait de transmettre des informations musicales sous forme de tension
   lectrique via les cbles de liaison entre les diffrents claviers. Plus
   tard, en 1980-1981, Roland cra un protocole numrique de rfrence, le
   DCB. L'association des fabricants d'instruments MIDI (MIDI Manufacturers
   Association - MMA) a dfini,  partir de leurs propres quipements, un
   protocole et un cblage standards pour des matriels compatibles, qui
   permettait  tous les matriels issus de fabricants adhrent  ce standard
   de se connecter et de communiquer entre eux.

    partir de 1985, les interfaces MIDI commencrent  apparatre sur les PC
   personnels et peu aprs apparurent les premiers squenceurs virtuels.

Configurer ses priphriques MIDI

   Les priphriques MIDI sont soit intgrs  la carte son, soit inclus dans
   un matriel spar. Les interfaces MIDI externes sont relies soit au port
   srie, soit  un port USB.

   La premire chose  faire -- et la plus importante -- est de vrifier 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 faon de configurer ses priphriques MIDI varie d'une distribution
   Linux  l'autre. Normalement, une carte son compatible sera configure
   correctement  l'installation du systme 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 ddi 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
   problmes, suivez les tapes suivantes :

   Est-ce que la commande lsmod montre des modules spcifiques au MIDI ?
   Voici ce que l'on peut obtenir sur un systme 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 vrifier que les
   modules USB correspondants apparaissent bien.

   Pour vrifier 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 priphrique MIDI est mad16, ce qui correspond au
   lsmod effectu plus haut.

   Si rien n'apparat concernant le MIDI, vrifiez 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 donnes de sortie  vrifier dans le module /proc/modules pour
   voir si les modules MIDI sont bien chargs 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)

 #---- Priphrique 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 amens  utiliser les pilotes ALSA 0.5x, -- ce que je vous
   dconseille -- je vous suggre 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 suprieures 
   la version 0.9. Pour des pilotes ALSA plus rcents 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 mthode d'installation rapide des pilotes et
   des bibliothques ALSA 9.0, ainsi que les configurations les plus
   rpandues 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 rpertoire de modules.
   Il se pourrait que vous rencontriez des indications pour d'autres
   matriels, non MIDI : soyez prudent lors de l'dition du fichier.

   Si il existe dj 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,
   dcrivant 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'entre (carte son/MIDI) par la rfrence correcte  votre
   carte son. Vous trouverez normalement les informations ncessaires sur le
   site web ALSA.

   Une fois les pilotes ALSA installs, vous devrez installer les fichiers de
   bibliothques d'en-ttes ncessaires au fonctionnement des programmes
   bass 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 systme devrait alors tre configur ! :o)

   Vous pouvez le vrifier  l'aide d'un simple programme en C : si vous
   russissez  le compiler et l'excuter, c'est que votre systme 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 problmes de latence

   Le MIDI est un protocole temps-rel et les rglages de latence peuvent
   poser de srieux problmes.

   Dsormais, plusieurs dveloppeurs travaillent sur l'amlioration des temps
   de latence, et les progrs raliss sur le noyau font aujourd'hui de Linux
   une plateforme tout  fait efficace pour le MIDI.

   Mme si les distributions Linux fonctionnent correctement sur ce point,
   les utilisateurs avancs 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 rduction 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'intrt pour des solutions MIDI bases sur Linux tant croissant, la
   liste suivante ne sera probablement pas exhaustive, mais vous donnera un
   choix reprsentatif d'applications MIDI.

   Si vous tes dveloppeur ou utilisateur d'autres applications MIDI non
   listes, merci de m'en avertir par courrier lectronique.

  Les pilotes

    Les pilotes ALSA

   ALSA (l'Architecture Sonore Linux Avance -- Advanced Linux Sound
   Architecture ) est constitue de plusieurs lments. 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 accs complet aux composants audio analogique, audio
   numrique, contrles, mixage, synthtiseur, DSP, MIDI et  la
   temporisation du matriel MIDI. Il comprend aussi un squenceur noyau
   complet, une couche de compatibilit complte avec les applications libres
   bases sur OSS, une bibliothque C oriente objet permettant de traiter et
   amliorer les fonctionnalits des pilotes ALSA pour certaines applications
   (client/serveur, modules d'extension, le partage et le mixage du son PCM,
   mesure du son PCM, et ctera), 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 Systme audio ouvert, fournit des pilotes de cartes son pour Linux
   et FreeBSD. Ces pilotes sont compatibles avec le son numrique, le MIDI,
   les synthtiseurs virtuels et les modules de mixage intgrs aux cartes
   son. Ces pilotes sonores sont conformes aux spcifications de la
   bibliothque de programmation Systme audio ouvert (OSS -- Open Sound
   System). Le systme OSS est muni d'une interface graphique trs
   conviviale, qui rend trs 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 dtection 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 priphrique pour la sortie MIDI via le port
   srie 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 srie 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 dfilement 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 priphrique de
   sortie compatible avec les synthtiseurs 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 squenceur 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 bibliothques
   de timbres dans un format compatible Gravis Ultrasound(*) afin de produire
   des donnes audionumriques  partir de fichiers General MIDI. Les donnes
   audio peuvent alors tre joues par n'importe quel priphrique son ou
   stockes sur disque. Sur une machine puissante, les donnes peuvent tre
   joues en temps rel.

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

  Les squenceurs

    Brahms

   Brahms est  la fois un squenceur et un diteur de partitions, muni de
   plusieurs outils d'dition comme Score-, Pianoroll-, Drum-, et Mastertrack
   Editor. Pour les dveloppeurs C++, il est ais de crer d'autres outils
   d'dition  partir d'un module d'dition gnrique. Ce programme possde
   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 simultanment au
   synthtiseur virtuel des vnements MIDI.

   Ce logiciel tait autrefois connu sous l'appellation Koobase.

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

    Anthem

   Anthem est un squenceur MIDI libre volu. Anthem vous permet
   d'enregistrer, d'diter et de jouer de la musique, en utilisant une
   technologie musicale oriente objet trs sophistique et trs apprcie.

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

    Jazz++

   JAZZ++ est un squenceur 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
   portes. Il permet d'utiliser quasiment toutes les notations standards,
   ainsi que les outils MIDI de changement d'instrument, d'vnement, et de
   gestion en temps rel.

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

    Melys

   Melys est une application squenceur MIDI bas sur ALSA. Melys utilise le
   squenceur ALSA et le combine avec les bibliothques GNOME pour produire
   un squenceur puissant et facile  utiliser.

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

    MidiMountain Sequencer

   MidiMountain est un squenceur qui permet d'diter des fichiers MIDI
   standard. La facilit d'utilisation de son interface devrait aider les
   dbutants  diter et crer des squences MIDI. MidiMountain est conu
   pour permettre de manipuler toutes les dfinitions connues des fichiers
   MIDI standards et du protocole de transfert MIDI, du simple rouleau de
   piano mcanique  la manipulation des messages exclusifs systmes
   binaires.

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

    MusE

   MusE est un squenceur MIDI pour Linux, bas sur Qt 2.1, avec fonctions
   d'dition et d'enregistrement. Pendant que le squenceur joue, vous pouvez
   diter des vnements MIDI en temps rel  l'aide du rouleau de piano
   mcanique ou de l'diteur de partition. Les vnements MIDI enregistrs
   peuvent alors tre traits  part avec le menu arrangeur.

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

    Rosegarden

   Rosegarden est un squenceur MIDI intgr et un diteur de partition.

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

  Consoles de mixage MIDI

    tektracker

   ttrk (tektracker) est un squenceur MIDI muni d'une interface de type
   console de mixage. Il est fait pour tre utilis en temps rel, notamment
   grce  ses boutons de volume par piste et cration 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 squenceur 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 bnficieront d'un systme d'aide en ligne trs complet
   et trs 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 gnrateur de rythmes, libre et orient internet, dont
   l'objectif est d'apprendre  crer des motifs rythmiques. Il est capable
   de vous apprendre les bases rythmiques, aussi bien que les rythmes les
   plus compliqus. Il peut diter des graphismes, des partitions, des
   vnements 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 synthtiseurs existants, en fournissant aux utilisateurs des mthodes
   et des documentations qui leur permette de dvelopper des pilotes et des
   diteurs pour les synthtiseurs non compatibles, et de les diffuser via le
   projet.

  Synthtiseurs virtuels

    Spiral Synth

   Spiral Synth est un synthtiseur polyphonique analogique virtuel. Il est
   capable de rutiliser des sons fabriqus par des synthtiseurs analogiques
   matriels, comme les bruits utiliss dans la musique lectronique. Vous
   pouvez aussi l'utiliser pour crer les sons les plus bizarres. Il est
   compatible MIDI et il utilise la sortie sonore standard du systme OSS
   libre (/dev/dsp).

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

    UltraMaster Juno-6

   UltraMaster Juno-6 est une reproduction virtuelle fidle du synthtiseur
   polyphonique Roland Juno-6. Il intgre la synthse d'ondes ULTRANAMOG en
   temps-rel et en 64 bit, permet de produire des accords et des churs dans
   le style des annes 80. Tous les paramtres peuvent tre contrls en
   temps rel, soit via une interface graphique, soit via des actions sur des
   contrleurs MIDI externes.

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

    Pure-Data

   Pure-Data est un logiciel temps rel pour l'excution en direct de pices
   musicales et multimdia. Il est dvelopp par Miller Puckette , sans doute
   en collaboration avec d'autres dveloppeurs. 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 synthtiseur virtuel qui ne souffre pas des limitations des
   autres synthtiseurs matriels ou logiciels de ce type. Le nombre
   d'oscillateurs ou de filtres utilisables est illimit. Csound est aussi
   compltement modulable, de faon  ce que chaque fonction soit utilisable
   de plusieurs faons diffrentes.

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

    mulateur de Synthtiseur Bristol

   Bristol est une collection d'mulateurs de synthtiseur. 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 simplifie 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 donnes d'entre de type texte pour les transformer en
   donnes Postcript imprimables. Les notations standards classiques et la
   notation en tablature sont toutes deux utilisables. MUP peut aussi
   produire des donnes de sortie de type MIDI.

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

    Lilypond

   LilyPond est un logiciel de composition musicale. Il permet de raliser de
   trs belles partitions,  partir de donnes d'entre trs dtailles.
   LilyPond fait partie du projet GNU.

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

  Dveloppement

    sfront

   Sfront convertit des flux de donnes audio MP4-SA (MPEG 4 Structured
   Audio) en programmes C trs efficaces qui produisent de l'audio 
   l'excution. MP4-SA est un format standard pour des algorithmes de son,
   combinant un langage de cration de signaux audio (SAOL) avec un langage
   de notation musicale (SASL, et le traditionnel format de fichier MIDI).
   Sous Linux, sfront exploite le temps rel, les entres-sorties audio 
   faible temps de latence, les entres MIDI  partir de cartes son, ainsi
   que les entres MIDI via internet utilisant le RTP et le SIP. Un serveur
   SIP hberg 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 systme qui permet de dessiner des circuits de flux de
   donnes. On peut y entrer des donnes de type entier, symbole, liste, et
   ctera. C'est un systme pilot par les vnements. JMax est utilis pour
   la cration MIDI. Une autre partie de ce systme, 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 ctera). Ce systme
   est extensible avec des bibliothques partages, permettant l'utilisation
   de diffrents types de gestion des donnes, de priphriques,
   d'interfaces, de matriels, et ctera. Les modules de traitement de
   donnes peuvent tre traits comme des circuits et utiliss en tant que
   tel.

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

    TSE3

   TSE3 est un puissant squenceur en mode texte, dont les sources sont
   publiques, crit en C++. C'est un squenceur en mode texte parce qu'il
   prsente toutes les fonctionnalits d'un squenceur mais sans interface
   graphique. Diffrentes applications squenceur ou multimdia utilisent
   TSE3 derrire leur interface graphique.

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

    KeyKit

   KeyKit est un langage de programmation multi-tches (inspir de awk),
   exclusivement rserv aux opration MIDI algorithmiques et temps rel. Son
   interface graphique propose plusieurs douzaines d'outils pour exprimenter
   diffrents algorithmes musicaux, y compris un squenceur multipistes et un
   diteur de motifs rythmiques. L'interface et les outils sont compltement
   crits dans le langage de KeyKit. Cela permet d'ajouter de nouveaux outils
   et nouvelles fonctionnalits  l'existant, tout en utilisant le systme.

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

Le dveloppement MIDI

   Ceux qui souhaitent dvelopper des applications MIDI ont souvent besoin de
   bons exemples pour dmarrer.

   Les exemples suivants proviennent de la liste de discussions LAD.

  Exemple 1

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

   Vous le compilez de la faon 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 squenceur ALSA.
    Aiguille les donnes d'entre vers les sorties dfinies
    par le canal MIDI ( la demande de Nathaniel Virgo sur
    Linux-Audio-Dev ;o)). Est bas sur l'exemple de fonction
    squenceur 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'entre (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 donnes 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 Cration :      Lundi 21 dcembre 1998 18:00:42
 // Dernire modification : Lundi 21 dcembre 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 donnes 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 squenceurs MIDI avec des synthtiseurs virtuels

  Version franaise 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 dcrit les rglages ncessaires pour contrler un synthtiseur
   MIDI virtuel  partir d'un squenceur 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 synthtiseurs virtuels, tels que Csound, Pure Data, jMax ou Spiral
   Synth Modular offrent des possibilits quasi infinies pour exprimenter
   les sons les plus usuels ou les plus inhabituels. Ils peuvent en outre
   remplacer les synthtiseurs matriels, 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
   synthtiseurs virtuels peut s'avrer fastidieux, comme sur Csound o l'on
   doit aligner des pages entires de chiffres pour composer, ce qui n'est
   pas l'idal pour faire de la musique.

   Les logiciels squenceurs MIDI virtuels permettent de rendre la tche plus
   agrable. Ils sont munis d'une interface permettant d'insrer des notes et
   des vnements MIDI de faon pratique : soit par l'intermdiaire d'une
   vraie partition, soit par un rouleau de piano mcanique ou via une liste
   d'vnements MIDI, suivant vos prfrences. D'autres types de squenceurs
   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 squenceurs MIDI vous permettent d'enregistrer vos
   propres musiques par l'intermdiaire d'un matriel externe (clavier ou
   autre), ce qui se rvle, pour certains musiciens, le moyen le plus
   naturel de faire de la musique.

   D'habitude, les squenceurs MIDI envoient leurs donnes vers des
   priphriques MIDI qui  leur tour vont rorienter les donnes vers
   l'extrieur,  savoir vers des synthtiseurs et des chantillonneurs
   matriels. Grce aux outils MIDI virtuels, on peut garder au sein du PC
   toutes les donnes MIDI et les faire contrler par un logiciel tournant
   sur la mme machine. Ce guide dcrit tout ce qui est ncessaire pour en
   arriver l.

  paramtrage du matriel

   Pour le paramtrage, nous utiliserons les bibliothques et les pilotes
   d'ALSA, ce qui doit tre le cas si l'on veut utiliser srieusement 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 prsent 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 trouvs dans les noyaux antrieurs  la version 2.5.x) et
   OSS/Linux, le module v_midi peut tre utilis, mais cela dpasse le cadre
   de ce guide.

   Pour utiliser la carte MIDI virtuelle d'ALSA, le module snd-card-virmidi
   doit tre prsent. Avec la plupart des versions rcentes d'ALSA (ainsi que
   dans la version 2.5.x de dveloppement 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 dj 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 dpend 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 ncessaire
 # de crer des alias pour des cartes au-del de la premire
 # 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 (deuxime carte) en tant que carte MIDI virtuelle
 alias sound-slot-1 snd-card-1
 alias snd-card-1 snd-virmidi

   Dsormais, votre carte MIDI virtuelle est configure en tant que carte
   d'index 1, ce qui suppose que vous possdez une carte son relle (ce qui
   peut s'avrer trs utile). Si vous possdez comme moi une seconde carte
   son relle, modifiez la configuration ci-dessus comme suit :

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

   Si vous possdez plus de cartes son que cela, vous saurez srement vous
   adapter.

   Il se peut qu'il soit ncessaire de redmarrer le systme ALSA, aprs quoi
   vous devriez voir indique 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 troisime,
   d'index 2. Cette configuration se retrouve dans le fichier
   /proc/asound/devices (seul les paramtres MIDI sont affichs) :

 $ 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 entres commenant par  2-  correspondent  ma carte MIDI
   virtuelle . Si vous ne possdez qu'une seule carte relle, ces entres
   commenceront par  1- .

   Vous pouvez obtenir un affichage plus conviviale des paramtres avec
   l'outil aconnect. Il s'agit d'un outil propre  ALSA, dont vous aurez de
   toutes faons besoin. Pour obtenir la liste des priphriques MIDI
   utilisables en sortie, appelez-le avec l'option -o (ou -lo). Pour ceux
   utilisables en entre, 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 priphriques affichs correspondent aux priphriques MIDI
   compatibles OSS propres  ALSA tels que dfinis dans le rpertoire
   /proc/asound/dev. Par exemple, le priphrique /proc/asound/dev/midiC2D0
   est le premier de notre carte MIDI virtuelle indexe 2, nomme Virtual Raw
   MIDI 2-0 par l'outil aconnect. Sous Dbian, ces priphriques sont aussi
   visibles dans le rpertoire /dev/snd/, et sont aussi lis en interne aux
   anciens rpertoires de priphriques /dev/midiXX. Pour m'assurer que je
   pouvais accder aux ports MIDI d'ALSA  partir de /dev/midiXX, je les ai
   renomms ainsi :

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

   mais cela n'est pas ncessaire : 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 priphriques
   MIDI. Il vous suffit d'indiquer la rfrence du priphrique MIDI, qu'il
   s'agisse d'une rfrence compatible OSS, comme /dev/midi20 ou d'un port
   MIDI ALSA comme 80:0,  l'endroit appropri dans le paramtrage de votre
   squenceur ou synthtiseur prfr.

  Canalisation des vnements MIDI

    aconnect

   Sans autre manipulation, il ne vous sera pas possible d'envoyer des
   vnements MIDI  partir de votre squenceur vers le synthtiseur 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 dj indiqu les ports
   disponibles. Maintenant, avec une syntaxe trs simple, ces ports peuvent
   tre connects ainsi :

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

   Cette manipulation permet d'aiguiller toutes les donnes MIDI envoyes sur
   le port 80:0 vers le port 80:1. Dans notre configuration, cela signifie
   que toute donne entrant sur le port /dev/midi20 est roriente vers le
   port /dev/midi21, sur lequel elle peut tre lue ( reue ) par une autre
   application.

   Si votre carte MIDI virtuelle est configure 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 cre 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 . Ds lors, en fonction de vos applications, vous
   pourrez lire les donnes MIDI envoyes  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 deuxime fois comme ceci :

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

   vous pouvez recevoir les mmes donnes envoyes sur /dev/midi10, sur les
   ports /dev/midi11 et /dev/midi12. Et bien entendu, vous risquez vraiment
   de surcharger votre systme si vous crez encore plus de cartes MIDI
   virtuelles et que vous les connectez entre elles. Mais rien n'empche de
   le faire.

   Pour dconnecter tous les ports, faites :

 $ aconnect -x

   Pour ne dconnecter 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 trs pratique pour la configuration MIDI d'ALSA sous
   Linux. Son utilisation est trs simple et intuitive : sur la gauche, vous
   disposez des ports MIDI capables d'envoyer des vnements MIDI, alors que
   sur la droite, vous avez les ports capables d'en recevoir. Si vous cliquez
   sur un port de gauche, cela le slectionne 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 dconnecter : un outil prcis
   facile  utiliser, qui aurait presque tendance  rendre inutile ce qui a
   t dit plus haut ! ;o)

    aseqview

   aseqview est un autre outil trs utile pour grer les flux MIDI. Il a t
   cr par Takashi Iwai, qui fait partie des dveloppeurs d'ALSA. Vous
   pouvez le tlcharger 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 vnements MIDI pendant qu'ils transitent par votre PC. Il
   peut aussi orienter les donnes MIDI vers d'autres ports, tout comme
   aconnect. Cela peut s'avrer utile lorsque vous devez utiliser le
   squenceur 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 dfaut est nomm 128:0, et
   il ressemble  cela :

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

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

 $ aseqview -d 73:0 &

   Cela connecte le port 128:0 au port 73:0 ds le dmarrage d'aseqview.

   Il existe d'autre outils graphiques de connexion, avec des fonctions trs
   similaires. Maarten de Boer a utilis la plupart des sources aconnect
   d'origine pour crire une interface graphique appele  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 agrable  utiliser.

   Personnellement, j'utilise kaconnect, sans doute parce son nom est court
   et donc plus rapide  taper. kaconnect a t dvelopp par Dr. Matthias
   Nagorni de SuSE, au sein d'une srie d'outils et de synthtiseurs virtuels
   pour ALSA, les kalsatools. Ne vous mprenez pas sur le  k  : ce logiciel
   n'a pas besoin de KDE. Il utilise directement les bibliothques 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, troisime sur mon systme,
   utilisant les ports MIDI ALSA 80:0  83:0, ce qui correspond aux
   priphriques OSS MIDI : /dev/midi20  /dev/midi23, et aux priphriques
   ALSA MIDI : /dev/snd/midiC2D0  /dev/snd/midiC2D3. Le deux premiers
   d'entre eux ont t connects de la faon suivante :

 $ aconnect 80:0 81:0

   Ce qui signifie que toutes les donnes envoyes 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 squenceurs

    MusE

   MusE est un squenceur 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 dsigns par
   leur dnomination ALSA, du type  VirMIDI X-X .

   Assurez-vous d'avoir bien slectionn le bon port comme port de sortie
   pour le canal sur lequel vous souhaitez que le synthtiseur oriente et
   joue les donnes 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 donnes sur le port  VirMIDI 2-1 , mais j'ai d
   l'utiliser d'une autre faon. Je ne sais pas pourquoi. On peut aussi
   utiliser les ports midi02 ou midi2.

    ttrk

   ttrk, dvelopp par Billy Biggs, est un petit squenceur trs simple muni
   d'une interface de mixage. Il peut sortir toutes ses donnes MIDI vers
   n'importe lequel des ports configurs 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 complte des
   effets classiques de mixage sur les donnes MIDI. Malheureusement, il
   utilise comme sortie MIDI le squenceur d'OSS (/dev/sequencer), et non les
   priphriques MIDI natifs (raw MIDI). Je n'ai pas pu le faire fonctionner
   avec aconnect. Toutefois, il possde un environnement qui inclut aseqview.
   Si l'on dmarre aseqview avant Shaketracker, le gestionnaire de piste
   reconnatra et utilisera les ports de aseqview. Il suffit de le
   slectionner dans le menu  User Devices  de Shaketracker, o il figure
   sous son nom ALSA  Viewer Port 0 .

   Il peut tre pratique de donner  ce priphrique utilisateur un nom plus
   explicite que  Null Output .

   Si nous dmarrons aseqview sans option, nous aurons besoin de connecter le
   port aseqview avec le port du synthtiseur virtuel. Mais, comme dit
   prcdemment, nous pourrions aussi dmarrer 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 synthtiseur virtuel. Je fais
   toujours tourner Shaketracker avec un script qui dmarre aseqview, attend
   la cration des ports, et dmarre enfin Shaketracker:

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

  Synthtiseurs virtuels

    Pure Data

   Miller Puckette est le gnie qui se cache derrire Pure Data, un
   synthtiseur logiciel libre et un environnement de dveloppement
   multimdia. Pure Data est issu de MAX et est  la base de l'extension MAX
   MSP. Pure Data peut aussi utiliser des priphriques MIDI natifs pour lire
   les vnements MIDI. Il faut, pour cela, indiquer quels priphriques
   utiliser avec l'option -midiindev numro_de_priphrique. Cependant, la
   manire d'indiquer quel priphrique utiliser est assez droutante. Voici
   la faon de faire : pour utiliser /dev/midi0, dmarrez Pure Data avec
   -midiindev 1, pour utiliser /dev/midi1 dmarrez-le avec -midiindev 2 et
   ainsi de suite. Vous devez donc indiquer le numro de port + 1. Un autre
   exemple : pour /dev/midi21 dmarrez 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 dtecter le bon priphrique MIDI.

    Csound

   Csound est l'anctre de quasiment tous les synthtiseurs virtuels actuels,
   et il a contribu  l'volution du MIDI. Lancer csound --help vous
   indiquera comment configurer le port d'entre MIDI. Faites -M nom_du_port
   ou --midieventdev=nom_du_port et vous pourrez lire les donnes MIDI en
   temps rel.

   Ainsi, dans notre exemple, nous lancerons Csound de la faon suivante :

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

    Conclusion

   Dornavant, vous devriez pouvoir vous dbrouiller avec tous les
   synthtiseurs virtuels pour orchestrer de la musique cre et joue par un
   squenceur MIDI. Bien sr, des outils comme aconnect et aseqview ne sont
   pas ncessaires pour utiliser un squenceur virtuel. Vous pouvez tout
   aussi bien rediriger les flux de donnes MIDI qui arrivent sur votre PC 
   partir d'un squenceur externe ou d'un clavier MIDI directement vers le
   synthtiseur virtuel sans passer par l'tape du squenceur MIDI. Vous
   devez simplement  aconnecter  le matriel MIDI externe  votre
   synthtiseur virtuel ou sur le synthtiseur embarqu sur votre carte son.
   Ou faire l'inverse : Pure Data, Csound ou des environnements comme KeyKit
   vous permettent de crer des vnements MIDI de faon algorithmique, ce
   qui est presque impossible avec des logiciel de type Cubase. Avec
   aconnect, vous pouvez aiguiller les vnements 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 prcieux 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 dveloppeurs Audio sous Linux. Pour toute
   discussion sur le dveloppement 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 crer 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 dcrit 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 dveloppements intressants du MIDI sous Linux.

   Par leur grande varit, 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 consacres  l'audio sous
   Linux.

Adaptation franaise des guides pratiques Linux

   L'adaptation franaise de ce document a t ralise 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'hsitez pas  nous
   rejoindre, nous serons heureux de vous accueillir.

   N'hsitez pas  faire parvenir vos commentaires et suggestions concernant
   l'adaptation franaise de ce document  l'adresse : <commentaires CHEZ
   traduc POINT org>.

