Guide pratique du MIDI sous Linux Version fran�aise de The Linux MIDI-HOWTO Phil Kerr <phil CHEZ plus24 POINT com> Jean-Marc Legrand <cjm POINT legrand CHEZ wanadoo POINT fr> Adaptation fran�aise �ric Madesclair <eric TIRET m CHEZ wanadoo POINT fr> Relecture de la version fran�aise Jean-Philippe Gu�rard <fevrier CHEZ tigreraye POINT org> Relecture rapide Jean-Philippe Gu�rard <fevrier CHEZ tigreraye POINT org> Pr�paration de la publication de la v.f. Version : 1.2.fr.1.0 2004-04-04 +------------------------------------------------------------------------+ | Historique des versions | |------------------------------------------------------------------------| | Version 1.20.fr.0.9 | 2004-04-04 | JML, �M, JPG | |------------------------------------------------------------------------| | Premi�re traduction fran�aise. | |------------------------------------------------------------------------| | Version 1.20 | 2002-05-24 | PK | |-----------------------------+--------------------+---------------------| | Version 1.10 | 2002-04-02 | PK | |-----------------------------+--------------------+---------------------| | Version 1.00 | 2002-01-25 | PK | +------------------------------------------------------------------------+ R�sum� Ce document pr�sente, et explique comment utiliser le mat�riel et les logiciels permettant de jouer et de composer des fichier MIDI sous Linux. -------------------------------------------------------------------------- Table des mati�res Introduction Droits d'utilisation (Copyright of this document) O� se procurer ce guide ? Remerciements Avertissement (Disclaimer) Histoire du MIDI Configurer ses p�riph�riques MIDI Installation rapide de ALSA 0.9 Les probl�mes de latence Les logiciels Les pilotes Les lecteurs MIDI Les s�quenceurs Consoles de mixage MIDI �diteurs de rythmes �diteurs de timbres Synth�tiseurs virtuels Les modules d'extension (plugins) Partitions musicales D�veloppement Le d�veloppement MIDI Exemple 1 Exemple 2 Exemple 3 Guide d'utilisation de s�quenceurs MIDI avec des synth�tiseurs virtuels Introduction param�trage du mat�riel Canalisation des �v�nements MIDI Tableaux de raccordement MIDI graphiques Applications Les s�quenceurs Synth�tiseurs virtuels Remerciements Liens Utiles Commentaires et corrections Introduction Ce document traite des points suivants : * comment configurer votre interface MIDI ; * comment configurer et utiliser des synth�tiseurs logiciels ; * comment jouer des fichiers MIDI ; * comment utiliser un s�quenceur ; * comment contr�ler du mat�riel MIDI externe ; * logiciels MIDI bas�s sur la synth�se de sons ; * exemples de code MIDI. Droits d'utilisation (Copyright of this document) Copyright � 2002 Phil Kerr. This HOWTO is copyrighted 2002 Phil Kerr. Copyright � 2002 Frank Barknecht pour la la section intitul�e � Guide d'utilisation de s�quenceurs MIDI avec des synth�tiseurs virtuels �. The "HOWTO Use MIDI Sequencers With Softsynths" is copyright 2002 Frank Barknecht. Copyright � 2004 Jean-Marc Legrand, �ric Madesclair, Jean-Philippe Gu�rard pour la version fran�aise. Ce guide pratique est distribu� sous la licence de documentation libre GNU (GFDL). Vous devriez avoir re�u une copie de cette licence avec celui-ci. Si tel n'est pas le cas, vous pouvez vous la procurer en version originale anglophone � cette adresse : This document is distributed under the terms of the GNU Free Documentation License. You should have received a copy along with it. If not, it is available from: http://www.fsf.org/licenses/fdl.html [http://www.fsf.org/licenses/fdl.html] Il en existe une version fran�aise non-officielle � cette adresse : http://cesarx.free.fr/gfdlf.html [http://cesarx.free.fr/gfdlf.html] O� se procurer ce guide ? La derni�re version fran�aise officielle de ce guide est disponible sur : http://www.traduc.org/docs/howto/lecture/MIDI-HOWTO.html [http://www.traduc.org/docs/howto/lecture/MIDI-HOWTO.html]. La derni�re version originale de ce guide pratique est publi�e sur : http://www.midi-howto.com [http://www.midi-howto.com]. Remerciements Ce guide est bas� sur le petit guide du MIDI-SB (MIDI-SB mini-HOWTO) �crit par Hideki Saito. Tous mes remerciements pour sa contribution � la communaut� Linux. Ce guide contient d�sormais le � Guide d'utilisation des S�quenceurs MIDI avec des Synth�tiseurs virtuels � �crit par Frank. Tous mes remerciements, Frank. Une grande partie des exemples de code contenus dans ce guide provient de la liste de discussions LAD (D�veloppeurs Audio Linux). Merci � eux pour m'avoir permis de les reprendre dans ce guide. Avertissement (Disclaimer) L'utilisation des informations de ce document est de votre responsabilit�. Use the information in this document at your own risk. Je d�cline toute responsabilit� quant au contenu de ce document. I disavow any potential liability for the contents of this document. L'utilisation des principes, exemples, et autres contenus de ce document sera enti�rement de votre responsabilit�. Use of the concepts, examples, and/or other content of this document is entirely at your own risk. Tous les droits d'auteur et de copyright sont la propri�t� de leurs d�tenteurs respectifs, sauf indication contraire. All copyrights are owned by their owners, unless specifically noted otherwise. Aucune remarque contenue dans ce document ne pourra �tre consid�r�e comme un jugement de valeur contre telle ou telle marque. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark. Le fait de citer une marque ou un produit particulier ne saurait �tre consid�r�e comme une recommandation. Naming of particular products or brands should not be seen as endorsements. Il vous est fortement recommand� d'effectuer une sauvegarde de votre syst�me avant toute installation d'importance et de le sauvegarder r�guli�rement au cours de votre travail. You are strongly recommended to take a backup of your system before major installation and backups at regular intervals. Histoire du MIDI Le MIDI est un ensemble de protocoles mat�riels et logiciels permettant � des instruments de musique �lectroniques de communiquer entre eux. Le MIDI est apparu pour la premi�re fois en 1982, et s'est impos� comme le standard de communication pour ce type d'instruments. Ce protocole fixe les param�tres physiques du mat�riel (connexions et interfaces mat�rielles), et permet de disposer d'un �ventail pr�cis de protocoles de communication pour l'�change de donn�es musicales et rythmiques. Avant le MIDI, il existait d'autres protocoles de connexion, tout d'abord analogiques, puis num�riques. Le plus ancien, au alentours de 1974, permettait de transmettre des informations musicales sous forme de tension �lectrique via les c�bles de liaison entre les diff�rents claviers. Plus tard, en 1980-1981, Roland cr�a un protocole num�rique de r�f�rence, le DCB. L'association des fabricants d'instruments MIDI (MIDI Manufacturers Association - MMA) a d�fini, � partir de leurs propres �quipements, un protocole et un c�blage standards pour des mat�riels compatibles, qui permettait � tous les mat�riels issus de fabricants adh�rent � ce standard de se connecter et de communiquer entre eux. � partir de 1985, les interfaces MIDI commenc�rent � appara�tre sur les PC personnels et peu apr�s apparurent les premiers s�quenceurs virtuels. Configurer ses p�riph�riques MIDI Les p�riph�riques MIDI sont soit int�gr�s � la carte son, soit inclus dans un mat�riel s�par�. Les interfaces MIDI externes sont reli�es soit au port s�rie, soit � un port USB. La premi�re chose � faire -- et la plus importante -- est de v�rifier la compatibilit� de votre carte son ! Les adresses suivantes peuvent vous y aider : http://www.alsa-project.org/alsa-doc/ [http://www.alsa-project.org/alsa-doc/] http://www.4front-tech.com/osshw.html [http://www.4front-tech.com/osshw.html] La fa�on de configurer ses p�riph�riques MIDI varie d'une distribution Linux � l'autre. Normalement, une carte son compatible sera configur�e correctement � l'installation du syst�me d'exploitation. Le noyau Linux contient les pilotes OSS, et, depuis les versions 2.5, les pilotes ALSA. La plupart des distributions offrent un outil de configuration (essentiellement d�di� aux cartes son). Toutefois, si vous utilisez le port MIDI d'une carte son, il devra �tre configur� manuellement. Sous RedHat, il faut utiliser sndconfig, sous SuSE : yast, et sous Mandrake : DrakConf. Si aucun de ces outils n'est utilisable, ou si vous rencontrez des probl�mes, suivez les �tapes suivantes : Est-ce que la commande lsmod montre des modules sp�cifiques au MIDI ? Voici ce que l'on peut obtenir sur un syst�me bas� sur OSS : [root@beatbox]# lsmod Module Size Used by lockd 32208 1 (autoclean) sunrpc 54640 1 (autoclean) [lockd] autofs 9456 2 (autoclean) usb-ohci 12624 0 (unused) usbcore 43632 1 [usb-ohci] hisax 470096 0 (autoclean) (unused) isdn 104208 0 (autoclean) [hisax] slhc 4544 0 (autoclean) [isdn] eepro100 16144 1 (autoclean) #---- modules de cartes son opl3 11376 2 mad16 7968 1 ad1848 16848 1 [mad16] sb 34752 1 [mad16] uart401 6384 1 [mad16 sb] sound 58368 0 [opl3 mad16 ad1848 sb uart401] soundlow 464 0 [sound] soundcore 2800 6 [sb sound] nls_cp437 3952 2 (autoclean) vfat 9408 1 (autoclean) fat 30432 1 (autoclean) [vfat] ide-scsi 7664 0 Recherchez les modules mpu401, olp3, uart401 et oss. Si vous utilisez une interface USB, n'oubliez pas de v�rifier que les modules USB correspondants apparaissent bien. Pour v�rifier la configuration, faites un cat du fichier sndstat : [root@beatbox]# cat /dev/sndstat OSS/Free:3.8s2++-971130 Load type: Driver loaded as a module Kernel: Linux mega 2.2.17-21mdk #1 Thu Oct 5 13:16:08 CEST 2000 i686 Config options: 0 Installed drivers: Card config: Audio devices: 0: MAD16 WSS (82C930) (DUPLEX) Synth devices: 0: Yamaha OPL3 Midi devices: 0: Mad16/Mozart Timers: 0: System clock Mixers: 0: MAD16 WSS (82C930) Nous voyons ici que le p�riph�rique MIDI est mad16, ce qui correspond au lsmod effectu� plus haut. Si rien n'appara�t concernant le MIDI, v�rifiez le contenu de votre fichier /etc/modules.conf. [root@beatbox]# cat /etc/modules.conf alias net-pf-4 ipx pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start alias usb-interface usb-ohci alias parport_lowlevel parport_pc alias block-major-11 scsi_hostadapter pre-install plip modprobe parport_pc ; echo 7 > /proc/parport/0/irq alias scsi_hostadapter ide-scsi alias eth0 eepro100 alias eth1 hisax #---- Carte Son alias sound-slot-0 mad16 options sound dmabuf=1 alias midi opl3 options opl3 io=0x388 options sb support=1 options mad16 io=0x530 irq=5 dma=0 dma16=1 mpu_io=0x300 mpu_irq=7 joystick=1 Voici les donn�es de sortie � v�rifier dans le module /proc/modules pour voir si les modules MIDI sont bien charg�s dans le noyau. [root@mega /proc]# cat modules 0000-001f : dma1 0020-003f : pic1 0040-005f : timer 0060-006f : keyboard 0070-007f : rtc 0080-008f : dma page reg 00a0-00bf : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : ide1 01f0-01f7 : ide0 02f8-02ff : serial(auto) #---- P�riph�rique MIDI 0300-0303 : MPU-401 UART 0376-0376 : ide1 0388-038b : Yamaha OPL3 03c0-03df : vga+ 03f6-03f6 : ide0 03f8-03ff : serial(auto) 0530-0533 : MAD16 WSS config 0534-0537 : MAD16 WSS de00-de1f : Intel Speedo3 Ethernet f000-f007 : ide0 f008-f00f : ide1 Vous devriez trouver quelque chose ressemblant � cela. Si tel n'est pas le cas, vous devrez installer manuellement les pilotes MIDI. Si vous �tes amen�s � utiliser les pilotes ALSA 0.5x, -- ce que je vous d�conseille -- je vous sugg�re de lire auparavant le Petit guide du son avec ALSA (Alsa-sound-mini-HOWTO) de Valentijn Sessink que vous trouverez au lien suivant : http://www.traduc.org/docs/howto/lecture/Alsa-sound.html [http://www.traduc.org/docs/howto/lecture/Alsa-sound.html] Je vous recommande vivement d'utiliser des versions d'ALSA sup�rieures � la version 0.9. Pour des pilotes ALSA plus r�cents que les versions 0.9x, je vous conseille de lire le Guide ALSA (Alsa HOWTO) de Madhu Maddy. http://www.alsa-project.org/alsa-doc/alsa-howto/ [http://www.alsa-project.org/alsa-doc/alsa-howto/] Installation rapide de ALSA 0.9 Vous trouverez ci-dessous une m�thode d'installation rapide des pilotes et des biblioth�ques ALSA 9.0, ainsi que les configurations les plus r�pandues dans les applications MIDI. [root@beatbox] # tar jxvf alsa-driver....tar.bz2 [root@beatbox] # cd alsa-driver..... [root@beatbox] # ./configure messages - no errors [root@beatbox] # make messages - no errors [root@beatbox] # make install messages - no errors [root@beatbox] # ./snddevices � ce stade, vous devez �diter le fichier /etc/modules.conf, ou, pour certaines distributions, le fichier ALSA de votre r�pertoire de modules. Il se pourrait que vous rencontriez des indications pour d'autres mat�riels, non MIDI : soyez prudent lors de l'�dition du fichier. Si il existe d�j� une ancienne configuration ALSA ou OSS dans ce fichier, vous devrez l'effacer ou, mieux encore, la commenter. Vous trouverez ci-dessous un exemple typique de fichier modules.conf, d�crivant une configuration ALSA sous OSS. alias char-major-116 snd alias char-major-14 soundcore alias snd-card-0 (carte son/MIDI) alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-12 snd-pcm-oss Remplacez l'entr�e (carte son/MIDI) par la r�f�rence correcte � votre carte son. Vous trouverez normalement les informations n�cessaires sur le site web ALSA. Une fois les pilotes ALSA install�s, vous devrez installer les fichiers de biblioth�ques d'en-t�tes n�cessaires au fonctionnement des programmes bas�s sur ALSA. C'est ce que contient le paquet alsa-libs. Assurez-vous tout d'abord que votre paquet alsa-libs correspond bien � vos pilotes ALSA ! [root@beatbox] # tar jxvf alsa-libs....tar.bz2 [root@beatbox] # cd alsa-libs..... [root@beatbox] # ./configure messages - no errors [root@beatbox] # make messages - no errors [root@beatbox] # make install Votre syst�me devrait alors �tre configur� ! :o) Vous pouvez le v�rifier � l'aide d'un simple programme en C : si vous r�ussissez � le compiler et l'ex�cuter, c'est que votre syst�me fonctionne bien. // Compilez ce programme test ainsi : gcc alsatest.c -o alsatest -lasound #include <stdio.h> #include <alsa/asoundlib.h> int main (int argc, char *argv[]) { snd_seq_t *seq_handle; if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) { fprintf(stderr, "Error opening ALSA sequencer.\n"); exit(1); } printf("The ALSA libraries are installed.\n"); return 0; } Les probl�mes de latence Le MIDI est un protocole temps-r�el et les r�glages de latence peuvent poser de s�rieux probl�mes. D�sormais, plusieurs d�veloppeurs travaillent sur l'am�lioration des temps de latence, et les progr�s r�alis�s sur le noyau font aujourd'hui de Linux une plateforme tout � fait efficace pour le MIDI. M�me si les distributions Linux fonctionnent correctement sur ce point, les utilisateurs avanc�s devront installer des correctifs noyau pour diminuer les temps de latence. Vous trouverez plus d'informations sur les sites suivants : http://www.gardena.net/benno/linux/audio/ [http://www.gardena.net/benno/linux/audio/] http://www.linuxdj.com/audio/lad/resourceslatency.php3 [http://www.linuxdj.com/audio/lad/resourceslatency.php3] Vous trouverez en outre le Petit guide de r�duction des temps de latence (Low Latency Mini Howto -- en anglais) � l'adresse suivante : http://web.archive.org/web/20021211025416/http://www.boosthardware.com/LAU/guide/Low_latency-Mini-HOWTO.html [http://web.archive.org/web/20021211025416/http://www.boosthardware.com/LAU/guide/Low_latency-Mini-HOWTO.html] Les logiciels L'int�r�t pour des solutions MIDI bas�es sur Linux �tant croissant, la liste suivante ne sera probablement pas exhaustive, mais vous donnera un choix repr�sentatif d'applications MIDI. Si vous �tes d�veloppeur ou utilisateur d'autres applications MIDI non list�es, merci de m'en avertir par courrier �lectronique. Les pilotes Les pilotes ALSA ALSA (l'Architecture Sonore Linux Avanc�e -- Advanced Linux Sound Architecture ) est constitu�e de plusieurs �l�ments. Le premier est un pilote son totalement modulaire, compatible avec le chargement automatique des modules, l'utilisation de devfs, l'autoconfiguration isapnp, et permettant un acc�s complet aux composants audio analogique, audio num�rique, contr�les, mixage, synth�tiseur, DSP, MIDI et � la temporisation du mat�riel MIDI. Il comprend aussi un s�quenceur noyau complet, une couche de compatibilit� compl�te avec les applications libres bas�es sur OSS, une biblioth�que C orient�e objet permettant de traiter et am�liorer les fonctionnalit�s des pilotes ALSA pour certaines applications (client/serveur, modules d'extension, le partage et le mixage du son PCM, mesure du son PCM, et c�tera), une interface de configuration du pilote, ainsi que quelques autres outils simples pour la configuration et la maintenance. http://www.alsa-project.org/ [http://www.alsa-project.org/] OSS OSS, le Syst�me audio ouvert, fournit des pilotes de cartes son pour Linux et FreeBSD. Ces pilotes sont compatibles avec le son num�rique, le MIDI, les synth�tiseurs virtuels et les modules de mixage int�gr�s aux cartes son. Ces pilotes sonores sont conformes aux sp�cifications de la biblioth�que de programmation Syst�me audio ouvert (OSS -- Open Sound System). Le syst�me OSS est muni d'une interface graphique tr�s conviviale, qui rend tr�s simple l'installation des pilotes ainsi que la configuration de la carte son. Ces pilotes sont compatibles avec plus de 200 cartes son de marque et permettent une d�tection automatique de la carte son, l'autoconfiguration (Plug-n-Play), l'utilisation des cartes son PCI et la capacit� de fonctionnement audio bidirectionnel. http://www.opensound.com/ [http://www.opensound.com/] Notemidi Notemidi est un pilote de p�riph�rique pour la sortie MIDI via le port s�rie RS-232 sur les PC portables. Notemidi peut �tre utilis� avec l'interface MIDIator MS-124W, les modules de son Roland Sound Canvas, ou les modules de son de la s�rie Yamaha MU-x. http://www.michaelminn.com/linux/notemidi [http://www.michaelminn.com/linux/notemidi] Les lecteurs MIDI KMid KMid est un lecteur MIDI bas� sur KDE (et donc X11) pour Linux et FreeBSD. Il permet le d�filement des textes de fichiers karaoke, et change la couleur du texte au fur et � mesure qu'il est jou�, ce qui permet de le suivre facilement. KMid utilise /dev/sequencer comme p�riph�rique de sortie compatible avec les synth�tiseurs externes, ainsi qu'avec les cartes AWE, FM et GUS. http://perso.wanadoo.es/antlarr/kmid.html [http://perso.wanadoo.es/antlarr/kmid.html] Pmidi Pmidi est un programme en lignes de commande qui permet de jouer des fichiers MIDI sur le s�quenceur ALSA. http://www.parabola.demon.co.uk/alsa/pmidi.html [http://www.parabola.demon.co.uk/alsa/pmidi.html] TiMidity++ TiMidity est un convertisseur MIDI vers WAVE qui utilise des biblioth�ques de timbres dans un format compatible Gravis Ultrasound(*) afin de produire des donn�es audionum�riques � partir de fichiers General MIDI. Les donn�es audio peuvent alors �tre jou�es par n'importe quel p�riph�rique son ou stock�es sur disque. Sur une machine puissante, les donn�es peuvent �tre jou�es en temps r�el. http://timidity.sourceforge.net/ [http://timidity.sourceforge.net/] Les s�quenceurs Brahms Brahms est � la fois un s�quenceur et un �diteur de partitions, muni de plusieurs outils d'�dition comme Score-, Pianoroll-, Drum-, et Mastertrack Editor. Pour les d�veloppeurs C++, il est ais� de cr�er d'autres outils d'�dition � partir d'un module d'�dition g�n�rique. Ce programme poss�de aussi une fonction d'import et export MIDI. Combin� avec aRts-0.3.4, il est possible de jouer des fichiers WAVE et d'envoyer simultan�ment au synth�tiseur virtuel des �v�nements MIDI. Ce logiciel �tait autrefois connu sous l'appellation Koobase. http://brahms.sourceforge.net/ [http://brahms.sourceforge.net/] Anthem Anthem est un s�quenceur MIDI libre �volu�. Anthem vous permet d'enregistrer, d'�diter et de jouer de la musique, en utilisant une technologie musicale orient�e objet tr�s sophistiqu�e et tr�s appr�ci�e. http://anthem.sourceforge.net/ [http://anthem.sourceforge.net/] Jazz++ JAZZ++ est un s�quenceur audio et MIDI complet, sous Linux et Windows. http://www.jazzware.com/cgi-bin/Zope.cgi/jazzware/ [http://www.jazzware.com/cgi-bin/Zope.cgi/jazzware/] UltiMusE-LX UltiMusE-LX (the Ultimate Music Editor) est un logiciel de composition musicale. Non, non : il ne compose pas � votre place ! C'est un logiciel musical graphique. Vous composez votre partition � l'�cran � l'aide de la souris et/ou du clavier, jusqu'� 16 parties ou voix, avec jusqu'� 7 port�es. Il permet d'utiliser quasiment toutes les notations standards, ainsi que les outils MIDI de changement d'instrument, d'�v�nement, et de gestion en temps r�el. http://hometown.aol.com/knudsenmj/myhomepage/umuselx.htm [http://hometown.aol.com/knudsenmj/myhomepage/umuselx.htm] Melys Melys est une application s�quenceur MIDI bas� sur ALSA. Melys utilise le s�quenceur ALSA et le combine avec les biblioth�ques GNOME pour produire un s�quenceur puissant et facile � utiliser. http://www.parabola.demon.co.uk/melys/ [http://www.parabola.demon.co.uk/melys/] MidiMountain Sequencer MidiMountain est un s�quenceur qui permet d'�diter des fichiers MIDI standard. La facilit� d'utilisation de son interface devrait aider les d�butants � �diter et cr�er des s�quences MIDI. MidiMountain est con�u pour permettre de manipuler toutes les d�finitions connues des fichiers MIDI standards et du protocole de transfert MIDI, du simple rouleau de piano m�canique � la manipulation des messages exclusifs syst�mes binaires. http://www.midimountain.com/ [http://www.midimountain.com/] MusE MusE est un s�quenceur MIDI pour Linux, bas� sur Qt 2.1, avec fonctions d'�dition et d'enregistrement. Pendant que le s�quenceur joue, vous pouvez �diter des �v�nements MIDI en temps r�el � l'aide du rouleau de piano m�canique ou de l'�diteur de partition. Les �v�nements MIDI enregistr�s peuvent alors �tre trait�s � part avec le menu arrangeur. http://muse.seh.de/ [http://muse.seh.de/] Rosegarden Rosegarden est un s�quenceur MIDI int�gr� et un �diteur de partition. http://www.rosegardenmusic.com/ [http://www.rosegardenmusic.com/] Consoles de mixage MIDI tektracker ttrk (tektracker) est un s�quenceur MIDI muni d'une interface de type console de mixage. Il est fait pour �tre utilis� en temps r�el, notamment gr�ce � ses boutons de volume par piste et cr�ation de boucles. ttrk permet d'envoyer et de se synchroniser avec les pulsations d'horloge MIDI. http://vektor.ca/audio/ttrk/ [http://vektor.ca/audio/ttrk/] ShakeTracker ShakeTracker est un s�quenceur MIDI muni d'une interface de type console de mixage. Il fonctionne correctement et permet d'utiliser quasiment tous les effets de mixage habituels. Ceux d'entre vous qui auront utilis� Impulse Tracker auparavant se sentiront chez eux, et pour les nouveaux utilisateurs, ils b�n�ficieront d'un syst�me d'aide en ligne tr�s complet et tr�s simple d'utilisation. La plupart des commandes et raccourcis ressemblent � leur �quivalent sur une table de mixage. http://reduz.com.ar/shaketracker/ [http://reduz.com.ar/shaketracker/] �diteurs de rythmes DrumPatterns DrumPatterns est un g�n�rateur de rythmes, libre et orient� internet, dont l'objectif est d'apprendre � cr�er des motifs rythmiques. Il est capable de vous apprendre les bases rythmiques, aussi bien que les rythmes les plus compliqu�s. Il peut �diter des graphismes, des partitions, des �v�nements MIDI, et inclut des heures d'�chantillons d'exemples. http://www.linux-france.org/prj/drumpatterns/index-fr.html [http://www.linux-france.org/prj/drumpatterns/index-fr.html] �diteurs de timbres JSynthLib JSynthLib est un �diteur et conservateur libre de timbres, �crit en langage Java. Ce projet a pour but d'offrir une compatibilit� avec tous les synth�tiseurs existants, en fournissant aux utilisateurs des m�thodes et des documentations qui leur permette de d�velopper des pilotes et des �diteurs pour les synth�tiseurs non compatibles, et de les diffuser via le projet. Synth�tiseurs virtuels Spiral Synth Spiral Synth est un synth�tiseur polyphonique analogique virtuel. Il est capable de r�utiliser des sons fabriqu�s par des synth�tiseurs analogiques mat�riels, comme les bruits utilis�s dans la musique �lectronique. Vous pouvez aussi l'utiliser pour cr�er les sons les plus bizarres. Il est compatible MIDI et il utilise la sortie sonore standard du syst�me OSS libre (/dev/dsp). http://www.pawfal.org/SpiralSynth/ [http://www.pawfal.org/SpiralSynth/] UltraMaster Juno-6 UltraMaster Juno-6 est une reproduction virtuelle fid�le du synth�tiseur polyphonique Roland Juno-6. Il int�gre la synth�se d'ondes ULTRANAMOG en temps-r�el et en 64 bit, permet de produire des accords et des ch�urs dans le style des ann�es 80. Tous les param�tres peuvent �tre contr�l�s en temps r�el, soit via une interface graphique, soit via des actions sur des contr�leurs MIDI externes. http://www.ultramaster.com/juno6/index.html [http://www.ultramaster.com/juno6/index.html] Pure-Data Pure-Data est un logiciel temps r�el pour l'ex�cution en direct de pi�ces musicales et multim�dia. Il est d�velopp� par Miller Puckette , sans doute en collaboration avec d'autres d�veloppeurs. Ce logiciel n'est pas encore abouti, mais peut tout � fait �tre utilis� dans le cadre de projets complexes. Il a �t� adapt� sur Linux, IRIX, et Windows. http://www.pure-data.org/ [http://www.pure-data.org/] Csound Csound est un synth�tiseur virtuel qui ne souffre pas des limitations des autres synth�tiseurs mat�riels ou logiciels de ce type. Le nombre d'oscillateurs ou de filtres utilisables est illimit�. Csound est aussi compl�tement modulable, de fa�on � ce que chaque fonction soit utilisable de plusieurs fa�ons diff�rentes. http://www.csound.org/ [http://www.csound.org/]. �mulateur de Synth�tiseur Bristol Bristol est une collection d'�mulateurs de synth�tiseur. Il comprend Moog Mini, Moog Voyager, Hammond B3, Prophet 5, Juno 6, DX 7, ainsi que d'autres logiciels. http://www.slabexchange.org/index.cgi?DOWNLOAD [http://www.slabexchange.org/index.cgi?DOWNLOAD] Les modules d'extension (plugins) xmms-midi Il ajoute � x11amp la compatibilit� avec les fichiers MIDI (via timidity). Une interface de mixage simplifi�e est disponible par le menu de configuration. http://ban.joh.cam.ac.uk/~cr212/xmms-midi/ [http://ban.joh.cam.ac.uk/~cr212/xmms-midi/] Partitions musicales Mup Mup prend des donn�es d'entr�e de type texte pour les transformer en donn�es Postcript imprimables. Les notations standards classiques et la notation en tablature sont toutes deux utilisables. MUP peut aussi produire des donn�es de sortie de type MIDI. http://www.arkkra.com/ [http://www.arkkra.com/] Lilypond LilyPond est un logiciel de composition musicale. Il permet de r�aliser de tr�s belles partitions, � partir de donn�es d'entr�e tr�s d�taill�es. LilyPond fait partie du projet GNU. http://www.lilypond.org/ [http://www.lilypond.org/] D�veloppement sfront Sfront convertit des flux de donn�es audio MP4-SA (MPEG 4 Structured Audio) en programmes C tr�s efficaces qui produisent de l'audio � l'ex�cution. MP4-SA est un format standard pour des algorithmes de son, combinant un langage de cr�ation de signaux audio (SAOL) avec un langage de notation musicale (SASL, et le traditionnel format de fichier MIDI). Sous Linux, sfront exploite le temps r�el, les entr�es-sorties audio � faible temps de latence, les entr�es MIDI � partir de cartes son, ainsi que les entr�es MIDI via internet utilisant le RTP et le SIP. Un serveur SIP h�berg� sur le campus de Berkeley organise des sessions de travail. Le site comprend aussi une aide en ligne � propos du MP4-SA. http://www.cs.berkeley.edu/~lazzaro/sa/index.html [http://www.cs.berkeley.edu/~lazzaro/sa/index.html] jMax jMax est un syst�me qui permet de dessiner des circuits de flux de donn�es. On peut y entrer des donn�es de type entier, symbole, liste, et c�tera. C'est un syst�me pilot� par les �v�nements. JMax est utilis� pour la cr�ation MIDI. Une autre partie de ce syst�me, DSP, permet de faire circuler un signal en continu dans le circuit, ce qui est le plus pratique pour les sons PCM (i. e. : micros, fichiers son, et c�tera). Ce syst�me est extensible avec des biblioth�ques partag�es, permettant l'utilisation de diff�rents types de gestion des donn�es, de p�riph�riques, d'interfaces, de mat�riels, et c�tera. Les modules de traitement de donn�es peuvent �tre trait�s comme des circuits et utilis�s en tant que tel. http://sourceforge.net/projects/jmax/ [http://sourceforge.net/projects/jmax/] TSE3 TSE3 est un puissant s�quenceur en mode texte, dont les sources sont publiques, �crit en C++. C'est un s�quenceur en mode texte parce qu'il pr�sente toutes les fonctionnalit�s d'un s�quenceur mais sans interface graphique. Diff�rentes applications s�quenceur ou multim�dia utilisent TSE3 derri�re leur interface graphique. http://TSE3.sourceforge.net/ [http://TSE3.sourceforge.net/] KeyKit KeyKit est un langage de programmation multi-t�ches (inspir� de awk), exclusivement r�serv� aux op�ration MIDI algorithmiques et temps r�el. Son interface graphique propose plusieurs douzaines d'outils pour exp�rimenter diff�rents algorithmes musicaux, y compris un s�quenceur multipistes et un �diteur de motifs rythmiques. L'interface et les outils sont compl�tement �crits dans le langage de KeyKit. Cela permet d'ajouter de nouveaux outils et nouvelles fonctionnalit�s � l'existant, tout en utilisant le syst�me. http://nosuch.com/keykit/ [http://nosuch.com/keykit/] Le d�veloppement MIDI Ceux qui souhaitent d�velopper des applications MIDI ont souvent besoin de bons exemples pour d�marrer. Les exemples suivants proviennent de la liste de discussions LAD. Exemple 1 Vous trouverez ci-dessous une fonction de s�quencement �crite par Dr. Matthias Nagorni. D'autres exemples sont disponibles sur son site (cf la section Liens). Vous le compilez de la fa�on suivante : [phil@beatbox] $ gcc seqdemo.c -o seqdemo -lasound #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <alsa/asoundlib.h> snd_seq_t *open_seq(); void midi_action(snd_seq_t *seq_handle); snd_seq_t *open_seq() { snd_seq_t *seq_handle; int portid; if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) { fprintf(stderr, "Error opening ALSA sequencer.\n"); exit(1); } snd_seq_set_client_name(seq_handle, "ALSA Sequencer Demo"); if ((portid = snd_seq_create_simple_port(seq_handle, "ALSA Sequencer Demo", SND_SEQ_PORT_CAP_WRITE|SND_SEQ_PORT_CAP_SUBS_WRITE, SND_SEQ_PORT_TYPE_APPLICATION)) < 0) { fprintf(stderr, "Error creating sequencer port.\n"); exit(1); } return(seq_handle); } void midi_action(snd_seq_t *seq_handle) { snd_seq_event_t *ev; do { snd_seq_event_input(seq_handle, &ev); switch (ev->type) { case SND_SEQ_EVENT_CONTROLLER: fprintf(stderr, "Control event on Channel %2d: %5d \r", ev->data.control.channel, ev->data.control.value); break; case SND_SEQ_EVENT_PITCHBEND: fprintf(stderr, "Pitchbender event on Channel %2d: %5d \r", ev->data.control.channel, ev->data.control.value); break; case SND_SEQ_EVENT_NOTEON: fprintf(stderr, "Note On event on Channel %2d: %5d \r", ev->data.control.channel, ev->data.note.note); break; case SND_SEQ_EVENT_NOTEOFF: fprintf(stderr, "Note Off event on Channel %2d: %5d \r", ev->data.control.channel, ev->data.note.note); break; } snd_seq_free_event(ev); } while (snd_seq_event_input_pending(seq_handle, 0) > 0); } int main(int argc, char *argv[]) { snd_seq_t *seq_handle; int npfd; struct pollfd *pfd; seq_handle = open_seq(); npfd = snd_seq_poll_descriptors_count(seq_handle, POLLIN); pfd = (struct pollfd *)alloca(npfd * sizeof(struct pollfd)); snd_seq_poll_descriptors(seq_handle, pfd, npfd, POLLIN); while (1) { if (poll(pfd, npfd, 100000) > 0) { midi_action(seq_handle); } } } Exemple 2 Vous trouverez ci-dessous un � aiguilleur � MIDI bas� sur ALSA 0.9 �crit par Nick Dowell. /* Aiguilleur pour s�quenceur ALSA. Aiguille les donn�es d'entr�e vers les sorties d�finies par le canal MIDI (� la demande de Nathaniel Virgo sur Linux-Audio-Dev ;o)). Est bas� sur l'exemple de fonction s�quenceur ALSA �crit par Dr. Matthias Nagorni. Nick Dowell <nixx CHEZ nixx POINT org POINT uk> */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <alsa/asoundlib.h> int main() { snd_seq_t *seq_handle; snd_seq_event_t *ev; int i; int portid; /* port d'entr�e (input) */ int oportid[16]; /* ports de sortie (outputs) */ int npfd; struct pollfd *pfd; char txt[20]; if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) { fprintf(stderr, "Error opening ALSA sequencer.\n"); exit(1); } snd_seq_set_client_name(seq_handle, "MIDI Redirect"); /* open one input port */ if ((portid = snd_seq_create_simple_port (seq_handle, "Input", SND_SEQ_PORT_CAP_WRITE | SND_SEQ_PORT_CAP_SUBS_WRITE, SND_SEQ_PORT_TYPE_APPLICATION)) < 0) { fprintf(stderr, "fatal error: could not open input port.\n"); exit(1); } /* open 16 output ports for the MIDI channels */ for (i=0; i<16; i++){ sprintf( txt, "MIDI Channel %d", i ); if ((oportid[i] = snd_seq_create_simple_port (seq_handle, txt, SND_SEQ_PORT_CAP_READ | SND_SEQ_PORT_CAP_SUBS_READ, SND_SEQ_PORT_TYPE_APPLICATION)) < 0) { fprintf(stderr, "fatal error: could not open output port.\n"); exit(1); } } npfd = snd_seq_poll_descriptors_count(seq_handle, POLLIN); pfd = (struct pollfd *)alloca(npfd * sizeof(struct pollfd)); snd_seq_poll_descriptors(seq_handle, pfd, npfd, POLLIN); while (1) /* main loop */ if (poll(pfd, npfd, 1000000) > 0){ do { snd_seq_event_input(seq_handle, &ev); snd_seq_ev_set_source( ev, oportid[ev->data.control.channel] ); snd_seq_ev_set_subs( ev ); snd_seq_ev_set_direct( ev ); snd_seq_event_output_direct( seq_handle, ev ); snd_seq_free_event(ev); } while (snd_seq_event_input_pending(seq_handle, 0) > 0); } return 0; } Exemple 3 Vous trouverez ci-dessous un exemple d'�criture de donn�es dans l'interface OSS /dev/midi par Craig Stuart Sapp. Vous pourrez trouver plus d'exemples sur son site (cf la section Liens). // // Programmeur: Craig Stuart Sapp // Adresse �lectronique : craig CHEZ ccrma POINT standford POINT edu // Date de Cr�ation : Lundi 21 d�cembre 1998 18:00:42 // Derni�re modification : Lundi 21 d�cembre 1998 18:00:42 // Nom de fichier : ...linuxmidi/output/method1.c // Langage : C // $Smake: gcc -O -o devmidiout devmidiout.c && strip devmidiout // #include <linux/soundcard.h> #include <unistd.h> #include <fcntl.h> #include <stdio.h> int main(void) { char* device = "/dev/midi" ; unsigned char data[3] = {0x90, 60, 127}; // �tape 1: ouvre le module OSS pour �criture int fd = open(device, O_WRONLY, 0); if (fd < 0) { printf("Error: cannot open %s\n", device); exit(1); } // �tape 2: �crit les donn�es MIDI dans le module OSS write(fd, data, sizeof(data)); // �tape 3: (en option) ferme le module OSS close(fd); return 0; } Guide d'utilisation de s�quenceurs MIDI avec des synth�tiseurs virtuels Version fran�aise du guide pratique HOWTO Use MIDI Sequencers With Softsynths Frank Barknecht <barknech CHEZ ph TIRET cip POINT uni TIRET koeln POINT de> http://linux-sound.org/quick-toots/4-sequencers_and_softsynths/quick-toot-midisynth_howto.html [http://linux-sound.org/quick-toots/4-sequencers_and_softsynths/quick-toot-midisynth_howto.html] Ce guide d�crit les r�glages n�cessaires pour contr�ler un synth�tiseur MIDI virtuel � partir d'un s�quenceur MIDI et via une connexion MIDI virtuelle sous ALSA 0.9. Ce document peut �tre librement traduit et diffus�. Il est soumis � la licence de documentation libre GNU. Introduction Les synth�tiseurs virtuels, tels que Csound, Pure Data, jMax ou Spiral Synth Modular offrent des possibilit�s quasi infinies pour exp�rimenter les sons les plus usuels ou les plus inhabituels. Ils peuvent en outre remplacer les synth�tiseurs mat�riels, relativement chers, ou ceux, souvent de mauvaise qualit�, qui �quipent les cartes son, si tant est qu'ils soient compatibles avec Linux. En contrepartie, composer sur ces synth�tiseurs virtuels peut s'av�rer fastidieux, comme sur Csound o� l'on doit aligner des pages enti�res de chiffres pour composer, ce qui n'est pas l'id�al pour faire de la musique. Les logiciels s�quenceurs MIDI virtuels permettent de rendre la t�che plus agr�able. Ils sont munis d'une interface permettant d'ins�rer des notes et des �v�nements MIDI de fa�on pratique : soit par l'interm�diaire d'une vraie partition, soit par un rouleau de piano m�canique ou via une liste d'�v�nements MIDI, suivant vos pr�f�rences. D'autres types de s�quenceurs virtuels permettent d'entrer les notes en utilisant des morceaux de pistes, comme on le faisait dans le temps en direct. Dernier point, non des moindres, certains s�quenceurs MIDI vous permettent d'enregistrer vos propres musiques par l'interm�diaire d'un mat�riel externe (clavier ou autre), ce qui se r�v�le, pour certains musiciens, le moyen le plus naturel de faire de la musique. D'habitude, les s�quenceurs MIDI envoient leurs donn�es vers des p�riph�riques MIDI qui � leur tour vont r�orienter les donn�es vers l'ext�rieur, � savoir vers des synth�tiseurs et des �chantillonneurs mat�riels. Gr�ce aux outils MIDI virtuels, on peut garder au sein du PC toutes les donn�es MIDI et les faire contr�ler par un logiciel tournant sur la m�me machine. Ce guide d�crit tout ce qui est n�cessaire pour en arriver l�. param�trage du mat�riel Pour le param�trage, nous utiliserons les biblioth�ques et les pilotes d'ALSA, ce qui doit �tre le cas si l'on veut utiliser s�rieusement le son et le MIDI sous Linux. � partir de maintenant, nous supposerons que vous utilisez la version 0.9.0 d'ALSA. Toutefois, le module MIDI utilis� est aussi pr�sent dans la version 0.5.x, ce qui rend les explications � venir tout aussi valables. Sous les architectures son OSS/Free (avec les modules de son trouv�s dans les noyaux ant�rieurs � la version 2.5.x) et OSS/Linux, le module v_midi peut �tre utilis�, mais cela d�passe le cadre de ce guide. Pour utiliser la carte MIDI virtuelle d'ALSA, le module snd-card-virmidi doit �tre pr�sent. Avec la plupart des versions r�centes d'ALSA (ainsi que dans la version 2.5.x de d�veloppement de noyau), le nom de ce module a �t� renomm� � snd-virmidi �. Assurez-vous que vous avez bien pris en compte ce module : il pourrait vous manquer lors de la configuration d'ALSA, si vous n'avez pris en compte que les modules propres � votre carte son. Vous devez charger le module virmidi pour activer les ports MIDI. Vous pouvez les tester avec : $ modprobe snd-virmidi snd_index=1 o� snd_index doit �tre adapt� au premier index de carte libre (= 1 si vous disposez uniquement d'une carte qui a d�j� l'index 0). Cela dit, il est plus pratique d'adapter la configuration de vos modules pour qu'ils soient disponible chaque fois que vous les utilisez. Pour cela, il faut ajouter � la section ALSA du fichier /etc/modules.conf (le chemin d�pend de votre distribution) les lignes suivantes : # Configure les supports pour OSS /dev/sequencer et # /dev/music (aussi appel� /dev/sequencer2) # # (Takashi Iwai nous indique qu'il n'est pas n�cessaire # de cr�er des alias pour des cartes au-del� de la premi�re # carte, i.e., la carte 0) # alias sound-service-0-1 snd-seq-oss alias sound-service-0-8 snd-seq-oss # Configure la carte 1 (deuxi�me carte) en tant que carte MIDI virtuelle alias sound-slot-1 snd-card-1 alias snd-card-1 snd-virmidi D�sormais, votre carte MIDI virtuelle est configur�e en tant que carte d'index 1, ce qui suppose que vous poss�dez une carte son r�elle (ce qui peut s'av�rer tr�s utile). Si vous poss�dez comme moi une seconde carte son r�elle, modifiez la configuration ci-dessus comme suit : # Configure la carte d'index 2 (troisi�me carte) en tant que # carte MIDI virtuelle alias sound-slot-2 snd-card-2 alias snd-card-2 snd-virmidi Si vous poss�dez plus de cartes son que cela, vous saurez s�rement vous adapter. Il se peut qu'il soit n�cessaire de red�marrer le syst�me ALSA, apr�s quoi vous devriez voir indiqu�e la carte son virtuelle dans le fichier /proc/asound/cards : $ cat /proc/asound/cards 0 [card0 ]: ICE1712 - M Audio Audiophile 24/96 M Audio Audiophile 24/96 at 0xb800, irq 5 1 [card1 ]: EMU10K1 - Sound Blaster Live! Sound Blaster Live! at 0xc800, irq 11 2 [card2 ]: VirMIDI - VirMIDI Virtual MIDI Card 1 Dans cet exemple tir� de mon propre PC, ma carte VirMIDI est la troisi�me, d'index 2. Cette configuration se retrouve dans le fichier /proc/asound/devices (seul les param�tres MIDI sont affich�s) : $ cat /proc/asound/devices 8: [0- 0]: raw MIDI 41: [1- 1]: raw MIDI 42: [1- 2]: raw MIDI 75: [2- 3]: raw MIDI 74: [2- 2]: raw MIDI 73: [2- 1]: raw MIDI 72: [2- 0]: raw MIDI Les entr�es commen�ant par � 2- � correspondent � ma carte MIDI virtuelle . Si vous ne poss�dez qu'une seule carte r�elle, ces entr�es commenceront par � 1- �. Vous pouvez obtenir un affichage plus conviviale des param�tres avec l'outil aconnect. Il s'agit d'un outil propre � ALSA, dont vous aurez de toutes fa�ons besoin. Pour obtenir la liste des p�riph�riques MIDI utilisables en sortie, appelez-le avec l'option -o (ou -lo). Pour ceux utilisables en entr�e, appelez-le avec l'option -i. $ aconnect -o [...] client 80: 'Virtual Raw MIDI 2-0' [type=kernel] 0 'VirMIDI 2-0 ' client 81: 'Virtual Raw MIDI 2-1' [type=kernel] 0 'VirMIDI 2-1 ' client 82: 'Virtual Raw MIDI 2-2' [type=kernel] 0 'VirMIDI 2-2 ' client 83: 'Virtual Raw MIDI 2-3' [type=kernel] 0 'VirMIDI 2-3 ' $ aconnect -i [...] client 80: 'Virtual Raw MIDI 2-0' [type=kernel] 0 'VirMIDI 2-0 ' client 81: 'Virtual Raw MIDI 2-1' [type=kernel] 0 'VirMIDI 2-1 ' client 82: 'Virtual Raw MIDI 2-2' [type=kernel] 0 'VirMIDI 2-2 ' client 83: 'Virtual Raw MIDI 2-3' [type=kernel] 0 'VirMIDI 2-3 ' Les p�riph�riques affich�s correspondent aux p�riph�riques MIDI compatibles OSS propres � ALSA tels que d�finis dans le r�pertoire /proc/asound/dev. Par exemple, le p�riph�rique /proc/asound/dev/midiC2D0 est le premier de notre carte MIDI virtuelle index�e 2, nomm�e Virtual Raw MIDI 2-0 par l'outil aconnect. Sous D�bian, ces p�riph�riques sont aussi visibles dans le r�pertoire /dev/snd/, et sont aussi li�s en interne aux anciens r�pertoires de p�riph�riques /dev/midiXX. Pour m'assurer que je pouvais acc�der aux ports MIDI d'ALSA � partir de /dev/midiXX, je les ai renomm�s ainsi : $ ln -s /dev/snd/midiC2D0 /dev/midi20 $ ln -s /dev/snd/midiC2D1 /dev/midi21 [...] mais cela n'est pas n�cessaire : ne le faites surtout pas chez vous ! Maintenant que nous avons cr�� et configur� une carte MIDI virtuelle, nous pouvons l'utiliser dans nos applications comme tout autre p�riph�riques MIDI. Il vous suffit d'indiquer la r�f�rence du p�riph�rique MIDI, qu'il s'agisse d'une r�f�rence compatible OSS, comme /dev/midi20 ou d'un port MIDI ALSA comme 80:0, � l'endroit appropri� dans le param�trage de votre s�quenceur ou synth�tiseur pr�f�r�. Canalisation des �v�nements MIDI aconnect Sans autre manipulation, il ne vous sera pas possible d'envoyer des �v�nements MIDI � partir de votre s�quenceur vers le synth�tiseur virtuel. Pour ce faire, nous devons connecter deux ports avec, vous l'aurez devin�, l'outil aconnect. Cet outil permet de connecter deux ports ou plus. Les fichier obtenus avec -i ou -o plus haut nous ont d�j� indiqu� les ports disponibles. Maintenant, avec une syntaxe tr�s simple, ces ports peuvent �tre connect�s ainsi : $ aconnect port_d_envoi port_de_reception $ aconnect 80:0 81:0 Cette manipulation permet d'aiguiller toutes les donn�es MIDI envoy�es sur le port 80:0 vers le port 80:1. Dans notre configuration, cela signifie que toute donn�e entrant sur le port /dev/midi20 est r�orient�e vers le port /dev/midi21, sur lequel elle peut �tre lue (� re�ue �) par une autre application. Si votre carte MIDI virtuelle est configur�e en tant que seconde carte (index 1), vous devez obtenir les ports suivants : $ aconnect -lo client 72: 'Virtual Raw MIDI 1-0' [type=kernel] 0 'VirMIDI 1-0 ' client 73: 'Virtual Raw MIDI 1-1' [type=kernel] 0 'VirMIDI 1-1 ' client 74: 'Virtual Raw MIDI 1-2' [type=kernel] 0 'VirMIDI 1-2 ' client 75: 'Virtual Raw MIDI 1-3' [type=kernel] 0 'VirMIDI 1-3 Ici, vous pouvez par exemple connecter le port 72:0 (/dev/midi10) au port 73:0 (/dev/midi11) en tapant : $ aconnect 72:0 73:0 aconnect peut nous montrer ce qui a �t� cr�e avec ses options -lo et -li : $ aconnect -lo client 72: 'Virtual Raw MIDI 1-0' [type=kernel] 0 'VirMIDI 1-0 ' Connecting To: 73:0 client 73: 'Virtual Raw MIDI 1-1' [type=kernel] 0 'VirMIDI 1-1 ' Connected From: 72:0 client 74: 'Virtual Raw MIDI 1-2' [type=kernel] 0 'VirMIDI 1-2 ' client 75: 'Virtual Raw MIDI 1-3' [type=kernel] 0 'VirMIDI 1-3 Vous constatez que le � Virtual Raw MIDI 1-0 � est maintenant connect� au � Virtual Raw MIDI 1-1 �. D�s lors, en fonction de vos applications, vous pourrez lire les donn�es MIDI envoy�es � votre port � Virtual Raw MIDI 1-0 � � partir du port � Virtual Raw MIDI 1-1 �, ou, en reprenant le vocabulaire OSS : tout ce qui est envoy� sur le port /dev/midi10 est aiguill� sur le port /dev/midi11 et peut �tre lu � partir de l�. Vous pouvez aussi connecter plus d'un port sur un autre. Si vous faites aconnect une deuxi�me fois comme ceci : $ aconnect 72:0 73:0 $ aconnect 72:0 74:0 vous pouvez recevoir les m�mes donn�es envoy�es sur /dev/midi10, sur les ports /dev/midi11 et /dev/midi12. Et bien entendu, vous risquez vraiment de surcharger votre syst�me si vous cr�ez encore plus de cartes MIDI virtuelles et que vous les connectez entre elles. Mais rien n'emp�che de le faire. Pour d�connecter tous les ports, faites : $ aconnect -x Pour ne d�connecter qu'un seul port, faites : $ aconnect -d 72:0 74:0 Tableaux de raccordement MIDI graphiques Le tableau de raccordement MIDI ALSA (Alsa Patch Bay) de Bob Ham est une interface graphique tr�s pratique pour la configuration MIDI d'ALSA sous Linux. Son utilisation est tr�s simple et intuitive : sur la gauche, vous disposez des ports MIDI capables d'envoyer des �v�nements MIDI, alors que sur la droite, vous avez les ports capables d'en recevoir. Si vous cliquez sur un port de gauche, cela le s�lectionne pour �tre connect� au port de droite sur lequel vous cliquez ensuite. Pour un port connect�, il suffit de cliquer sur le port de droite pour le d�connecter : un outil pr�cis facile � utiliser, qui aurait presque tendance � rendre inutile ce qui a �t� dit plus haut ! ;o) aseqview aseqview est un autre outil tr�s utile pour g�rer les flux MIDI. Il a �t� cr�� par Takashi Iwai, qui fait partie des d�veloppeurs d'ALSA. Vous pouvez le t�l�charger depuis la page web d'Iwai-sama http://members.tripod.de/iwai/alsa.html [http://members.tripod.de/iwai/alsa.html], mais il est souvent inclus dans les distributions. Cet outil graphique a �t� cr�� pour visualiser et modifier les �v�nements MIDI pendant qu'ils transitent par votre PC. Il peut aussi orienter les donn�es MIDI vers d'autres ports, tout comme aconnect. Cela peut s'av�rer utile lorsque vous devez utiliser le s�quenceur OSS, qu'aconnect est parfois incapable d'utiliser. Si vous lancez aseqview sans aucune option, vous obtenez une jolie interface graphique et un nouveau port MIDI. Le port par d�faut est nomm� 128:0, et il ressemble � cela : client 128: 'MIDI Viewer' [type=user] 0 'Viewer Port 0 ' Avec ce port, toutes les manipulations effectu�es plus haut avec aconnect sont possibles. Si vous souhaitez seulement connecter le port aseqview � un autre port, aseqview peut le faire par lui-m�me avec l'option -d : $ aseqview -d 73:0 & Cela connecte le port 128:0 au port 73:0 d�s le d�marrage d'aseqview. Il existe d'autre outils graphiques de connexion, avec des fonctions tr�s similaires. Maarten de Boer a utilis� la plupart des sources aconnect d'origine pour �crire une interface graphique appel�e � aconnectgui � � l'aide de l'outil FLTK. Vous pouvez la trouver � l'adresse http://www.iua.upf.es/~mdeboer/ [http://www.iua.upf.es/~mdeboer/]. C'est, � mon avis, l'interface la plus agr�able � utiliser. Personnellement, j'utilise kaconnect, sans doute parce son nom est court et donc plus rapide � taper. kaconnect a �t� d�velopp� par Dr. Matthias Nagorni de SuSE, au sein d'une s�rie d'outils et de synth�tiseurs virtuels pour ALSA, les kalsatools. Ne vous m�prenez pas sur le � k � : ce logiciel n'a pas besoin de KDE. Il utilise directement les biblioth�ques graphiques QT. kaconnect, et d'autres logiciels, sont disponibles sur http://www.suse.de/~mana/kalsatools.html [http://www.suse.de/~mana/kalsatools.html]. Applications Dans ce dernier chapitre, je veux vous montrer quelques exemples d'utilisation des connections virtuelles MIDI dans diverses applications. Mettons que je dispose d'une carte VirMIDI, troisi�me sur mon syst�me, utilisant les ports MIDI ALSA 80:0 � 83:0, ce qui correspond aux p�riph�riques OSS MIDI : /dev/midi20 � /dev/midi23, et aux p�riph�riques ALSA MIDI : /dev/snd/midiC2D0 � /dev/snd/midiC2D3. Le deux premiers d'entre eux ont �t� connect�s de la fa�on suivante : $ aconnect 80:0 81:0 Ce qui signifie que toutes les donn�es envoy�es au port /dev/midi20 (ou port 80:0 ou /dev/snd/midiC2D0) peuvent �tre maintenant lues sur le port /dev/midi21 (ou port 80:1 ou /dev/snd/midiC2D1). Les s�quenceurs MusE MusE est un s�quenceur virtuel complet �crit par Werner Schweer, disponible � l'adresse : http://muse.seh.de. [http://muse.seh.de.]. Nous devons configurer le port MIDI virtuel comme port de sortie (output) dans le menu � Config->MIDI Ports �. Avec MusE, les ports sont d�sign�s par leur d�nomination ALSA, du type � VirMIDI X-X �. Assurez-vous d'avoir bien s�lectionn� le bon port comme port de sortie pour le canal sur lequel vous souhaitez que le synth�tiseur oriente et joue les donn�es MIDI. Pour des raisons que j'ignore, je n'ai pas pu utiliser � VirMIDI 2-0 � comme sortie avec MusE 0.4.9. Ce devrait �tre pourtant la bonne sortie pour recevoir les donn�es sur le port � VirMIDI 2-1 �, mais j'ai d� l'utiliser d'une autre fa�on. Je ne sais pas pourquoi. On peut aussi utiliser les ports midi02 ou midi2. ttrk ttrk, d�velopp� par Billy Biggs, est un petit s�quenceur tr�s simple muni d'une interface de mixage. Il peut sortir toutes ses donn�es MIDI vers n'importe lequel des ports configur�s dans le fichier $HOME/.ttrkrc. Shaketracker Le Shaketracker de Juan Linietsky reprend une interface de mixage MIDI semblable � celle de ttrk, avec toutefois une transposition compl�te des effets classiques de mixage sur les donn�es MIDI. Malheureusement, il utilise comme sortie MIDI le s�quenceur d'OSS (/dev/sequencer), et non les p�riph�riques MIDI natifs (raw MIDI). Je n'ai pas pu le faire fonctionner avec aconnect. Toutefois, il poss�de un environnement qui inclut aseqview. Si l'on d�marre aseqview avant Shaketracker, le gestionnaire de piste reconna�tra et utilisera les ports de aseqview. Il suffit de le s�lectionner dans le menu � User Devices � de Shaketracker, o� il figure sous son nom ALSA � Viewer Port 0 �. Il peut �tre pratique de donner � ce p�riph�rique utilisateur un nom plus explicite que � Null Output �. Si nous d�marrons aseqview sans option, nous aurons besoin de connecter le port aseqview avec le port du synth�tiseur virtuel. Mais, comme dit pr�c�demment, nous pourrions aussi d�marrer directement aseqview avec un port de destination. N'oubliez pas d'utiliser le menu User Device pour chacune des pistes qui doit aller vers le synth�tiseur virtuel. Je fais toujours tourner Shaketracker avec un script qui d�marre aseqview, attend la cr�ation des ports, et d�marre enfin Shaketracker: #!/bin/sh aseqview -d 81:0 & # sleep 2 seconds to let aseqview do its work: sleep 2 shaketracker Synth�tiseurs virtuels Pure Data Miller Puckette est le g�nie qui se cache derri�re Pure Data, un synth�tiseur logiciel libre et un environnement de d�veloppement multim�dia. Pure Data est issu de MAX et est � la base de l'extension MAX MSP. Pure Data peut aussi utiliser des p�riph�riques MIDI natifs pour lire les �v�nements MIDI. Il faut, pour cela, indiquer quels p�riph�riques utiliser avec l'option -midiindev num�ro_de_p�riph�rique. Cependant, la mani�re d'indiquer quel p�riph�rique utiliser est assez d�routante. Voici la fa�on de faire : pour utiliser /dev/midi0, d�marrez Pure Data avec -midiindev 1, pour utiliser /dev/midi1 d�marrez-le avec -midiindev 2 et ainsi de suite. Vous devez donc indiquer le num�ro de port + 1. Un autre exemple : pour /dev/midi21 d�marrez Pure Data avec l'option -midiindev 22. Pure Data offre aussi un guide d'aide : � Test audio and MIDI �, ce qui peut vraiment aider pour d�tecter le bon p�riph�rique MIDI. Csound Csound est l'anc�tre de quasiment tous les synth�tiseurs virtuels actuels, et il a contribu� � l'�volution du MIDI. Lancer csound --help vous indiquera comment configurer le port d'entr�e MIDI. Faites -M nom_du_port ou --midieventdev=nom_du_port et vous pourrez lire les donn�es MIDI en temps r�el. Ainsi, dans notre exemple, nous lancerons Csound de la fa�on suivante : $ csound -M /dev/midi22 -o devaudio midi.csd Conclusion Dor�navant, vous devriez pouvoir vous d�brouiller avec tous les synth�tiseurs virtuels pour orchestrer de la musique cr��e et jou�e par un s�quenceur MIDI. Bien s�r, des outils comme aconnect et aseqview ne sont pas n�cessaires pour utiliser un s�quenceur virtuel. Vous pouvez tout aussi bien rediriger les flux de donn�es MIDI qui arrivent sur votre PC � partir d'un s�quenceur externe ou d'un clavier MIDI directement vers le synth�tiseur virtuel sans passer par l'�tape du s�quenceur MIDI. Vous devez simplement � aconnecter � le mat�riel MIDI externe � votre synth�tiseur virtuel ou sur le synth�tiseur embarqu� sur votre carte son. Ou faire l'inverse : Pure Data, Csound ou des environnements comme KeyKit vous permettent de cr�er des �v�nements MIDI de fa�on algorithmique, ce qui est presque impossible avec des logiciel de type Cubase. Avec aconnect, vous pouvez aiguiller les �v�nements MIDI vers n'importe quel logiciel capable de les jouer. Remerciements L'auteur souhaite remercier Takashi Iwai pour son aide technique lors de l'�laboration de ce document et pour ses pr�cieux conseils en Japonais. Merci, Takashi ! Liens Utiles Vous trouverez ci-dessous une liste de liens vers des sites traitant du MIDI sous Linux. http://www.linux-sound.org/ [http://www.linux-sound.org/] Logiciels audio et MIDI sous Linux. Une mine de renseignements sur le MIDI et l'audio. http://www.linuxdj.com/audio/lad/ [http://www.linuxdj.com/audio/lad/] La liste de discussions des d�veloppeurs Audio sous Linux. Pour toute discussion sur le d�veloppement MIDI. http://www.linuxdj.com/audio/quality [http://www.linuxdj.com/audio/quality] Le guide Linux de la qualit� audio. Un bon chapitre sur les cartes MIDI, essentiel pour cr�er son studio Linux. http://www.alsa-project.org/ [http://www.alsa-project.org/] Le projet ALSA -- Pilotes audio et MIDI. http://www.4front-tech.com/ [http://www.4front-tech.com/] OSS -- Pilotes audio et MIDI. http://www.gardena.net/benno/linux/audio/ [http://www.gardena.net/benno/linux/audio/] Correctif de minimisation des temps de latence. http://ccrma-www.stanford.edu/~craig/articles/linuxmidi/ [http://ccrma-www.stanford.edu/~craig/articles/linuxmidi/] Introduction � la programmation MIDI sous Linux. Craig Stuart Sapp d�crit les outils de base pour �crire du MIDI en C ou C++ pour des pilotes OSS. http://www.suse.de/~mana [http://www.suse.de/~mana] Excellente collection de programmes C pour ALSA 0.9 MIDI et PCM, par Dr. Matthias Nagorni. Commentaires et corrections Comme toujours, un guide �volue dans le temps. Je vous encourage � me transmettre (en anglais) vos suggestions ou informations sur les nouvelles applications et les d�veloppements int�ressants du MIDI sous Linux. Par leur grande vari�t�, les cartes son sont parfois difficiles � configurer, notamment parce qu'elles ont plusieurs niveaux de pilotes et d'options de configuration. Les meilleures sources de renseignement en cas de dysfonctionnement sont les sites web de ALSA et OSS, mais aussi les forums, ainsi que les listes de discussions consacr�es � l'audio sous Linux. Adaptation fran�aise des guides pratiques Linux L'adaptation fran�aise de ce document a �t� r�alis�e dans le cadre du Projet de traduction des Guides pratiques Linux. Vous pourrez lire d'autres guides pratiques traduits et en apprendre plus sur ce projet en allant sur le site de l'association Traduc.org [http://wiki.traduc.org]. Si vous souhaitez apporter votre contribution, n'h�sitez pas � nous rejoindre, nous serons heureux de vous accueillir. N'h�sitez pas � faire parvenir vos commentaires et suggestions concernant l'adaptation fran�aise de ce document � l'adresse : <commentaires CHEZ traduc POINT org>.