このページは大阪弁化フィルタによって翻訳生成されたんですわ。

翻訳前ページへ


Guide pratique du MIDI sous Linux

Guide pratique du MIDI sous Linux

Version fran?aise de The Linux MIDI-HOWTO

Jean-Marc Legrand

Adaptation fran?aise

?ric Madesclair

Relecture de la version fran?aise

Jean-Philippe Gu?rard

Relecture rapide

Jean-Philippe Gu?rard

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.92004-04-04JML, ?M, JPG
Premi?re traduction fran?aise.
Version 1.202002-05-24PK
Version 1.102002-04-02PK
Version 1.002002-01-25PK

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

Ce document traite des points suivants?:

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

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

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

La derni?re version fran?aise officielle de ce guide est disponible sur?: 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.

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.

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.

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.

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.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

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/

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;
}

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.

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.

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);
    }  
  }
}

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;
}

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.

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?.

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?.

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

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 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, 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/. 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.

MusE est un s?quenceur virtuel complet ?crit par Werner Schweer, disponible ? l'adresse?: 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.

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

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/ La liste de discussions des d?veloppeurs Audio sous Linux. Pour toute discussion sur le d?veloppement MIDI.

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/ Le projet ALSA ― Pilotes audio et MIDI.

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

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

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 Excellente collection de programmes C pour ALSA 0.9 MIDI et PCM, par Dr. Matthias Nagorni.

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.

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?: .