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]](../../common/images/Guido-S.gif) 
 
    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]](../../common/images/article259/miditux.gif) 
 
    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]](../../common/images/article259/alsamixer.gif) 
 
    
    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]](../../common/images/article259/kmid_th.gif) 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.
 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