Midi avec alsa

ArticleCategory: [Choisir une cat�gorie, ne pas traduire]

Applications

AuthorImage:[Merci de mettre une petite photo de vous]

[Photo de l'auteur]

TranslationInfo:[Auteur + historique de la traduction. mailto: ou http://homepage]

original in en Guido Socher

en to fr H�l�ne Duwelz

AboutTheAuthor :[Petite biographie de l'auteur]

Guido aime Linux non seulement parce que c'est amusant de d�couvrir les nombreuses possibilit�es de ce systeme, mais aussi pour les personnes impliqu�es dans son d�veloppement.

Abstract:[Ecrire un petit r�sum�]

Midi est un format de fichier qui ne contient pas des �chantillons de sons digitaux mais une description sur la fa�on de cr�er les sons. Ceci est similaire aux partitions musicales o� chaque note est une repr�sentation symbolique d'un ton. Les fichiers Midi sont de ce fait de tr�s petites tailles, en comparaison des fichiers wav, par exemple.

Pour convertir le flux midi en sons r�els, il vous faut un synth�tiseur. Il s'agit d'un mat�riel ou d'un logiciel utilisant des �chantillons de son digital issus d'un instrument (tel un piano) pour g�n�rer des tons. Ces �chantillons sont connus sous le nom de "soundfont".

Cet article explique comment utiliser Alsa (advanced linux sound architecture) en tant qu'interface de synth�tiseur midi.

ArticleIllustration:[Ceci est le titre imag� de votre article]

[Illustration]

ArticleBody:[Corps de l'article]

Introduction

Il y a quelques ann�es � peine, vous pouviez trouver de c�l�bres cartes son telles que les "Gravis UltraSound" ou "SoundBlaster Gold" dans n'importe quel magasin d'informatique. Ces deux cartes avaient un synth�tiseur midi hardware interne. Malheureusement, ces cartes ne sont plus commercialis�es. Et m�me si vous le vouliez, elles ne pourraient plus �tre install�es dans un ordinateur moderne car c'�taient des cartes � bus ISA. Les ordinateurs actuels utilisent le bus PCI et poss�dent souvent d�j� un processeur de son dans le chipset de la carte m�re. La plupart de ces chipsets ne supportent pas la synth�se midi. Si vous regardez la liste des cartes son supportant alsa vous vous demanderez s�rement laquelle de ces cartes acheter. La r�ponse est malheureusement plus simple qu'il n'y para�t. Il n'existe actuellement qu'une seule carte supportant la synth�se midi, disponible dans les magasins d'informatique : la Soundblaster live.

Si vous ne poss�dez pas une carte Soundblaster live, vous pouvez utiliser une �mulation logicielle pour la synth�se midi et je vous expliquerai plus loin comment le faire.

Le n�cessaire

Alsa est actuellement dans une p�riode de transition. La version stable 0.5 est ancienne et la version 0.9 est toujours en cours de d�veloppement. En fait, si vous voulez utiliser les applications midi avec alsa, il vous faut la version 0.5 car il n'existe quasiment aucune application pour la version 0.9 et les interfaces entre les versions 0.5 et 0.9 sont incompatibles (NB: les �chantillons de son PCM, les fichiers wav, et les applications bas�es sur l'�chantillonage ne posent pas de probl�me avec la version 0.9. Je parle de midi.)
Les paquetages pour la version 0.5 sont: Des informations sur la mani�re de compiler alsa peuvent �tre trouv�es dans le fichier alsa howto (voir r�f�rences). Classiquement, vous devez ex�cuter

tar jxvf alsa-driver-0.5.12a.tar.bz2
cd alsa-driver-0.5.12a
./configure --with-sequencer=yes --with-oss=yes --with-isapnp=no
make
make install
./snddevices

pour le pilote et "./configure;make;make install" pour le reste.

Apr�s installation, vous pouvez charger les modules dans votre noyau. Pour soundblaster live (puce =emu10k1) taper :

modprobe snd-card-emu10k1
modprobe snd-synth-emu10k1
modprobe snd-seq-midi
modprobe snd-pcm-oss
modprobe snd-mixer-oss
modprobe snd-seq-oss

Pour d'autres cartes, remplacez les deux premi�res lignes par le module de votre carte (par exemple snd-card-via686a pour une carte son interne bas�e sur le chipset via 686). Mandrake et Suse supportent alsa et vous pouvez �galement utiliser dans ce cas le programme de d�tection et de configuration mat�rielle de la distribution linux (harddrake et yast2). Si vous n'avez pas la moindre id�e du type de chipset que vous poss�dez, tapez "lspci -v" (la commande lspci appartient au paquetage nomm� pciutils).

Il est temps maintenant de tester le son. Lancez le programme
alsamixer
et tapez "m" pour enlever la sourdine des volumes master et pcm, puis utilisez les touches fl�ch�es pour modifier le volume. Tapez Echap pour quitter alsamixer quand vous avez fini.

[alsamixer]

Pour sauvegarder les param�tres dans /etc/asound.conf, tapez la commande

/usr/sbin/alsactl store

Tapez maintenant

play flute.wav

et vous devriez entendre le son. Dans le cas contraire, allez dans le r�pertoire /proc/asound et contr�lez /proc/asound/devices et /proc/asound/oss-devices. Vous devriez y trouver "mixer" et "digital audio" (mes fichiers).

C'�tait le test pour v�rifier que l'�mulation pcm oss et le son en g�n�ral fonctionnent. Plus bas, j'expliquerai ce qu'il faut ajouter dans /etc/modules.conf pour tout faire de fa�on automatique, mais la prochaine �tape consiste � faire fonctionner midi.

midi

Si vous avez une carte son avec un synth�tiseur midi interne (sound blaster live), vous devez charger le "soundfont" (les �chantillons de son) dans la puce de votre carte son. Si votre carte est diff�rente, vous pouvez installer timidity (voir dans les r�f�rences l'URL pour le t�l�chargement) et l'utiliser en tant que synth�tiseur midi alsa. Les programmes fonctionnant au-dessus d'alsa ne feront pas la diff�rence.

Chargement du soundfont

V�rifier que le programme sfxload (/bin/sfxload) est install�. Dans le cas contraire, installez-le. Il fait partie du paquetage appel� awesfx (v�rifiez les CD de votre distribution linux ou allez sur http://mitglied.lycos.de/iwai/awedrv.html). Copiez ensuite le fichier 8MBGMSFX.SF2 de votre CD Soundblaster Live (/mnt/cdrom/AUDIO/Common/SFBANK/8MBGMSFX.SF2) dans /etc/midi/8MBGMSFX.SF2. Pour charger le soundfont, ex�cutez la commande :

/bin/sfxload /etc/midi/8MBGMSFX.SF2

Le programme pmidi (voir r�f�rences) est un bon programme de test. Tapez
pmidi -l
Ceci doit faire appara�tre le texte suivant :

Port Client name Port name
64:0 External MIDI 0 MIDI 0-0
65:0 Emu10k1 WaveTable Emu10k1 Port 0
65:1 Emu10k1 WaveTable Emu10k1 Port 1
65:2 Emu10k1 WaveTable Emu10k1 Port 2
65:3 Emu10k1 WaveTable Emu10k1 Port 3

Tapez maintenant

pmidi -p 65:0 test.mid

et vous devriez entendre le son midi. Chouette !

Utiliser TiMidity comme synth�tiseur logiciel

T�l�chargez le paquetage TiMidity++-2.11.3.tar.gz (voir r�f�rences � la fin) d�compressez-le (tar zxvf TiMidity++-2.11.3.tar.gz) et �ditez le fichier common.makefile.in. D�commentez la ligne CFLAGS pour pentium gcc:

CFLAGS = -O3 -mpentium -march=pentium -fomit-frame-pointer \
-funroll-all-loops -malign-double -ffast-math

Vous pouvez maintenant configuer timidity avec de nombreuses et agr�ables interfaces graphiques, mais nous nous int�resserons d'abord � l'option "--enable-alsaseq". Cependant, cela ne fait pas de mal d'activer une interface graphique :

./configure --enable-ncurses --enable-xaw --enable-spectrogram --enable-xaw=dynamic --enable-audio=oss,alsa --enable-alsaseq --prefix=/usr/local/timidity-2.11.3
make
make install

Ceci installe timidity dans /usr/local/timidity-2.11.3/bin pour ne pas �craser une installation timidity d�j� existante de votre distribution linux. Nous installons timidity car je n'ai jamais vu aucune distribution linux o� l'interface alsaseq �tait activ�e.
Pour timidity vous avez aussi besoin de soundfonts. Ils sont cette fois, appel�s fichiers instrument. Un bon jeu complet de fichiers instrument est assez gros (environ 10Mo). La mani�re la plus rapide de les obtenir consiste � installer les timidity++ � partir de votre distribution (CDrom) et de copier les fichiers � partir de l� (par exemple t�l�chargement de timidity++-2.11.3-1.i386.rpm pour redhat 7.3). Pour copier les fichiers � partir de /usr/share/timidity/instruments vers /usr/local/timidity-2.11.3/share/timidity/instruments tapez :

cd /usr
find share/timidity -print | cpio -dump /usr/local/timidity-2.11.3

Nous sommes maintenant pr�ts � tester notre d�marrage de timidity en tant que root:

/usr/local/timidity-2.11.3/bin/timidity -iA -B2,8 -Os -EFreverb=0
TiMidity starting in ALSA server mode
set SCHED_FIFO
Opening sequencer port: 128:0 128:1

puis pmidi -l:

Port Client name Port name
128:0 Client-128 TiMidity port 0
128:1 Client-128 TiMidity port 1

Voila, nous avons 2 ports avec le synth�tiseur TiMidity.
Tapez maintenant la commande

pmidi -p 128:0 test.mid

et vous devriez entendre le son midi.

/etc/modules.conf

Pour une configuration automatique et un chargement des modules, ajoutez ceci � votre fichier /etc/modules.conf si vous poss�dez une carte soundblaster live:

alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-card-emu10k1
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-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
alias midi snd-synth-emu10k1
below snd-seq-oss snd-synth-emu10k1
post-install snd-synth-emu10k1 /bin/sfxload /etc/midi/8MBGMSFX.SF2 ; alsactl restore
# d�commenter pour sauvegarder les param�tres de volume lors de l'arr�t de la machine:
#pre-remove snd-synth-emu10k1 alsactl store

Pour une carte diff�rente sans synth�tiseur midi, par exemple pour un chipset interne via686:

alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-card-via686a
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-12 snd-pcm-oss
# restore original mixer:
post-install snd-card-via686a alsactl restore
# d�commenter pour sauver les param�tres de volume lors de l'arr�t de la machine:
#pre-remove snd-synth-emu10k1 alsactl store

Pour lancer timidity automatiquement au d�marrage, je sugg�re d'ajouter la ligne suivante � votre fichier /etc/init.d/alsasound (ce script est install� avec le pilote mais n'est pas actif. Pour l'activer, utilisez la commande chkconfig)

echo "starting timidity"
timidity=/usr/local/timidity-2.11.3/bin/timidity # ne pas oublier le "&" � la ligne suivante:
$timidity -iA -B2,8 -Os -EFreverb=0 > /dev/null &

Utilisation de alsa et midi

[kmid] Vous avez utilis� le programme pmidi ci-dessus pour jouer les fichiers midi. KDE inclut un tr�s bon lecteur appel� kmid (ne pas confondre avec kmidi). Kmid peut �tre compil� avec ou sans support alsa. Redhat l'a compli� pour OSS. Mandrake et Suse utilisent Alsa. Il est possible d'utiliser les binaires Mandrake avec Redhat.
Cet article a �galement pour but d'expliquer l'installation alsa requise pour d'autres programmes qui seront pr�sent�s dans des articles � venir. Nous aurons par exemple un article sur Jazz. Jazz est un s�quenceur et un �diteur de fichiers midi. A la fin de l'article vous trouverez �galement des r�f�rences � d'autres applications.

Il existe aussi des programmes comme timidity (timidity -ig lancera l'interface graphique gtk) ou kmidi (et non pas kmid) qui contiennent d�j� le synth�tiseur midi logiciel. Dans ces cas-l�, vous n'avez pas besoin du support midi interne du noyau qu'il s'agisse de support mat�riel ou de l'�mulation logicielle timidity. En g�n�ral, il est pr�f�rable d'avoir une api midi commune plut�t que de red�finir un synth�tiseur midi dans chaque logiciel.

Alsa vit actuellement de grands changements. Comme mentionn� plus t�t, la version 0.9 n'est pas compatible avec la plupart des applications. Cependant la version 0.5 comme d�j� pr�cis� dans cet article, a �galement ses propres probl�mes. L'�mulation du s�quenceur OSS (/dev/sequencer) ne fonctionne pas (elle ne fonctionne qu'avec les vieilles cartes soundblaster awe qui ne sont plus disponibles dans le commerce). Ceci signifie que seuls les programmes midi compatibles alsa fonctionnent. Cela, esp�rons-le changera avec la version 0.9. Toutefois, cet article est �galement utile pour l'avenir, quand la version 0.9 sera mieux support�e, puisque seules des "petites" choses, tels les noms des modules, ont chang� entre les versions 0.5 et 0.9. Les principes de base seront toujours les m�mes.

R�f�rences