The Linux Sound HOWTO <author>Jeff Tranter, <tt>Jeff_Tranter@Mitel.COM</tt> <date>v1.6, 6 June 1994 <abstract> Ce document décrit comment le son est géré par Linux Il énumère les différents dispositifs matériels supportés, décrit comment configurer les pilotes dans le noyau, et répond au questions les plus fréquentes. Son but est de permettre aux nouveaux utilisateurs de profiter du son rapidement, et de désengorger le trafic des conférences usenet. </abstract> <toc> <sect>Introduction<p> Ceci est le document Linux Sound HOWTO. Il est concu pour être une référence rapide couvrant tout ce que vous avez besoin de savoir pour installer et configurer le support sonore de Linux. Des réponses sont données aux questions les plus fréquentes à propos du son sous Linux, et des références à d'autres informations sur le son et la musique de synthèse sont mentionnées. L'étude se limite aux aspects des cartes son qui concernent Linux. Pour des informations plus générales sur les cartes son, la musique et le son, consultez la section <em>Autres sources d'information</em>. <sect1>Remerciements<p> Beaucoup de ces informations proviennent des fichiers <tt>Readme</tt> fournis avec le code source du pilote son, écrit par Hannu Savolainen (<tt>hannu@voxware.pp.fi</tt>). Que Hannu et les nombreuses autres personnes ayant participé au développement des pilotes son du noyau Linux et des utilitaires associés soient donc remerciés. Merci au paquetage Linuxdoc-SGML de Matt Welsh, qui permet à ce HOWTO d'être disponible sous différents formats, émanants tous d'un même fichier source. <sect1>Versions antérieures<p> <descrip> <tag>Version 1.1</tag>première version; postée uniquement dans le canal SOUND de la linux activists mailing list. <tag>Version 1.2</tag>corrections mineures; première version disponible sur les sites d'archives. <tag>Version 1.3</tag>conversion au format SGML ; maintenant disponible sous plusieurs formats, grâce aux outils Linuxdoc-SGML de Matt Welsh; la présentation a changé à cause du nouveau format, mais peu de changements sur le fond. <tag>Version 1.4</tag>petites modifications de SGML; ajout de réponses à propos des incompatibilités entre la PAS16 et la carte SCSI Adaptec1542A. <tag>Version 1.5</tag>le pilote son 2.5a est maintenant dans la distribution du noyau 1.1; note sur le support GUS-MAX; quelques petites corrections. <tag>Version 1.6</tag>ajout d'information sur l'erreur <sq>no space on device</sq> ; notez que le Hacker's Guide est dans un répertoire caché ; ajout de questions à propos du mode bidirectionnel ; informations sur les erreurs <sq>device busy</sq> ; corrections diverses. </descrip> <sect1>Nouvelles versions de ce document<p> Les nouvelles versions de ce document seront périodiquement postées dans le groupe <tt>comp.os.linux.announce</tt>. Elles seront aussi envoyées à divers sites ftp qui archivent ce genre d'informations, notamment <tt>sunsite.unc.edu:/pub/Linux/docs/HOWTO</tt>. <sect1>Retour<p> Si vous avez des suggestions, des corrections, ou des commentaires à apporter à cette HOWTO, merci de bien vouloir les envoyer à l'auteur, et j'essaierai de les inclure dans la version suivante. <sect1>Autres sources d'information<p> <em>The Linux Sound User's Guide</em> couvre plus en détail (environ 40 pages) tous les aspects visibles par l'utilisateur de l'utilisation du son sous Linux. Si vous êtes intéressé par le sons sous Linux, vous devriez vous procurer ce document. La version actuelle est ALPHA 0.1, et est disponible sur <tt>tsx-11.mit.edu</tt> dans le répertoire <tt>/pub/linux/ALPHA/LDP</tt>. Je continuerai de maintenir la Sound-HOWTO comme un guide concis pour ceux qui veulent mettre en place rapidement le son, ou juste regarder quel est le matériel requis, sans avoir à consulter le guide de l'utilisateur complet. Hannu Savolainen a écrit une préversion du <em>Hacker's Guide to VoxWare</em>. La dernière version est draft 2, et peut être trouvée sur <tt>nic.funet.fin</tt> dans <tt>/pub/OS/linux/ALPHA/sound</tt>. Les FAQs suivantes sont régulièrement postées dans les conférences <tt>news.announce</tt> et simultanément archivées par le site <tt>rtfm.mit.edu</tt> dans le répertoire <tt>/pub/usenet/news.answers</tt> : <verb> PCsoundcards/generic-faq (FAQ génerale à propos des cartes son PC) PCsoundcards/soundcard-faq (FAQ de comp.sys.ibm.pc.soundcard) PCsoundcards/gravis-ultrasound/faq (FAQ Gravis UltraSound) audio-fmts/part1 (Descriptions de formats de fichiers audio) audio-fmts/part2 (Descriptions de formats de fichiers audio) </verb> Les FAQs énumèrent aussi plusieurs mailing lists et sites d'archive réservés à des produits spécifiques. Les conférences usenet suivantes discutent de sujets ayant trait au son et/ou à la musique : <verb> alt.binaries.sounds.* (diverses conférences pour poster des fichiers sonores) alt.binaries.multimedia (discussions sur le Multimédia) alt.sb.programmer (programmation Soundblaster) comp.multimedia (Multimedia) comp.music (théories et recherches sur la musique et les ordinateurs) comp.sys.ibm.pc.soundcard (discussions sur les cartes son PC) </verb> La Linux Activists mailing list a un canal SOUND. Pour savoir comment rejoindre la mailing list, envoyez un mail à <tt>linux-activists-request@joker.cs.hut.fi</tt>. Les fichiers <tt>Readme</tt>, <tt>Readme.linux</tt>, et <tt>CHANGELOG</tt> fournis avec le code source du pilote son du noyau contient des informations utiles à propos des pilotes de cartes sons. Ils peuvent être habituellement trouvés dans le répertoire <tt>/usr/src/linux/drivers/sound</tt>. La <em>Linux Software Map</em> (LSM) est une référence inestimable pour localiser les logiciels Linux. Chercher des mots-clefs comme <em>sound</em> dans la LSM est une manière efficace d'identifier les applications ayant rapport au son. La LSM peut être trouvée sur divers sites FTP, notamment <tt>sunsite.unc.edu:/pub/Linux/docs/LSM.gz</tt>. <sect1>Informations sur la version<p> Au moment de l'édition de ce document, la dernière version du pilote son Linux était 2.5a, et était incluse dans le noyau Linux version 1.1.10, et dans les suivantes. Vous pouvez aussi obtenir le pilote 2.5 séparément, et appliquer un patch aux noyaux plus anciens (par exemple 1.0). <sect>Matériel son supporté <sect1>Cartes son<p> Les cartes son suivantes sont supportées par le noyau de Linux: <itemize> <item>Roland MPU-401 MIDI interface <item>AdLib <item>SoundBlaster (versions 1 et 2) et compatibles, ThunderBoard et ATI Stereo F/X incluses <item>SoundBlaster Pro (versions 1 et 2) <item>SoundBlaster 16 <item>ProAudioSpectrum 16 (et la Logitech SoundMan 16, compatible) <item>Advanced Gravis UltraSound (GUS) </itemize> D'autres cartes soi-disant compatibles avec une des cartes supportées <em>peuvent</em> fonctionner, à la condition d'être compatibles au niveau matériel. La Sound Galaxy NX Pro est supportée comme une compatible Sound Blaster, à condition d'ajouter <tt>#define __SGNXPRO__</tt> au fichier <tt>local.h</tt> du pilote son. Le noyau Linux supporte le port SCSI fourni sur certaines cartes son (par exemple la ProAudioSpectrum 16). Il supporte aussi les lecteurs de CD-ROMs branchés sur les SoundBlaster Pro et SoundBlaster 16 (voir le fichier <tt>/usr/src/linux/drivers/block/README.sbpcd</tt>). Un patch pour le noyau permettant l'utilisation des ports joystick (y compris ceux de certaines cartes son) est aussi disponible. <sect1>Haut-parleur PC<p> Un autre pilote son est disponible, qui ne requiert aucun matériel supplémentaire; il utilise le haut-parleur interne du PC. Il est grosso-modo compatible au niveau logiciel avec le pilote de son, mais, comme on pourrait s'en douter, il ne fournit qu'une piètre qualité de sortie, et demande des ressources CPU importantes. Le résultat est variable, dépendant essentiellement des caractéristiques de votre haut-parleur. Pour plus d'informations, consultez la documentation fournie avec le pilote. La version courante est 0.6, et peut être trouvée sur <tt>sunsite.unc.edu </tt> dans le fichier <tt>pub/Linux/kernel/misc-patches/pcsndrv-0.6.tar.z</tt>. <sect1>Port parallèle<p> Une autre possibilité est de construire un convertisseur analogique en utilisant le port parallèle (port imprimante). Il fournit une qualité bien meilleure, mais toujours au prix d'une charge CPU importante. Le pilote son mentionné ci-dessus supporte ce système, et inclut des instructions pour construire le dispositif. <sect>Configurer Linux pour le support du son<p> Configurer Linux pour le support du son nécessite les étapes suivantes: <enum> <item>Installer la carte son. <item>Configurer et compiler le noyau avec le support son. <item>Créer le fichier de périphérique. <item>Tester l'installation. </enum> <sect1>Installer la carte son<p> Pour installer la carte, suivez les instructions fournies par le fabricant. N'oubliez pas de noter la configuration des cavaliers pour l'IRQ, le canal DMA, etc. En cas de doute, utilisez les valeurs d'usine. Essayez si possible d'éviter les conflits avec d'autres périphériques (comme les cartes ethernet, les adaptateurs SCSI). <sect1>Configurer le noyau<p> Si vous utilisez un noyau récent (0.99pl14 ou plus récent), les pilotes son sont déjà inclus dans la distribution du noyau. Suivez la procédure habituelle pour compiler le noyau. Quand vous exécuterez <tt>make config</tt>, un programme de configuration vous demandera quelles sont les différentes possibilités de cartes son. Lisez attentivement les informations affichées par ce programme. Si vous évoluez depuis un pilote son plus ancien, assurez-vous que les fichiers <tt>/usr/include/sys/soundcard.h</tt> et <tt>/usr/include/sys/ultrasound.h</tt> sont des liens symboliques correspondant aux fichiers dans <tt>/usr/include/linux</tt>. Il est recommandé de lire les fichiers <tt>Readme</tt> dans le répertoire <tt>drivers/sound</tt> du noyau, car ils pourraient contenir des informations de dernière minute. Le fichier <tt>CHANGELOG</tt> contient une liste des améliorations et des nouvelles fonctionnalités depuis la version précédente. <sect1>Créer le fichier de périphérique<p> La première fois que le pilote son est configuré, vous devez créer un fichier de périphérique. Le plus simple est de récupérer le petit script shell à la fin du fichier <tt>Readme.linux</tt> (ou peut-être <tt>Readme</tt>) dans le répertoire <tt>/usr/src/linux/drivers/sound</tt>, et de l'exécuter en root. Si votre fichier de périphérique existe déjà, vous devriez vérifier qu'il est correct, c'est-à-dire que <tt>/dev/audio</tt> a pour numéros de périphérique 14 et 4 (majeur et mineur, respectivement). Si ce n'est pas le cas, ou en cas de doute, exécutez le script ci-dessus et il les remplacera par les valeurs correctes. Certaines anciennes versions de Linux fournissaient des scripts d'installation qui créaient des fichiers de périphérique incorrects. Peut-être avez-vous aussi un fichier script <tt>/dev/MAKEDEV</tt> pour créer les fichiers de périphérique. L'utilisation du script fourni dans le pilote son du noyau est préférable, car il est toujours en phase avec la dernière version du pilote. <sect1>Tester l'installation<p> Vous pouvez maintenant effectuer les étapes suivantes pour vérifier votre configuration matérielle et logicielle : 1. Redémarrez avec le nouveau noyau. Suivez votre procédure habituelle pour installer et redémarrer le nouveau noyau (garder l'ancien à portée de main, en cas de problème). 2. Vérifiez que la carte son est reconnue durant l'initialisation du noyau. Essayez de repérer un message comme celui-ci lors du démarrage (s'il défile trop rapidement, utilisez la commande <sq>dmesg</sq> pour le revoir) : <tscreen><code> snd2 <SoundBlaster Pro 3.2> at 0x220 irq 5 drq 1 snd1 <Yamaha OPL-3 FM> at 0x388 irq 0 drq 0 </code></tscreen> Cela devrait correspondre à votre carte son et à sa configuration. Le pilote est aussi susceptible d'afficher certains messages d'erreur et de danger durant le démarrage. Prêtez-y attention lors du premier redémarrage après l'installation du pilote son. Si aucune carte son n'est détectée lors de l'initialisation, il y a deux possibilités : <itemize> <item>La configuration du pilote est incorrecte, et le pilote n'a pas été capable de détecter votre carte à l'adresse I/O indiquée, ou bien <item>Le pilote son a été désactivé, ou vous avez démarré avec un noyau ancien (une erreur courante). </itemize> 3. Vérifiez le fichier de périphérique <tt>/dev/sndstat</tt>. Lire le fichier de périphérique de status du pilote son peut vous fournir des informations supplémentaires pour savoir si la carte son s'est correctement initialisée. Le contenu devrait ressembler à quelque chose comme ça : <tscreen><code> % cat /dev/sndstat Sound Driver:2.5 (Wed Apr 20 19:57:25 EDT 1994 root@fizzbin) Config options: 1aa2 HW config: Type 2: SoundBlaster at 0x220 irq 5 drq 1 Type 1: AdLib at 0x388 irq 0 drq 0 PCM devices: 0: SoundBlaster Pro 3.2 Synth devices: 0: Yamaha OPL-3 Midi devices: 0: SoundBlaster Mixer(s) installed </code></tscreen> Si la commande cat affiche <sq>No such device</sq>, le pilote son n'est pas actif dans le noyau. Assurez-vous que vous avez démarré avec le noyau que vous venez de compiler. Si l'affichage ne contient pas de dispositif son (PCM, Synth ou MIDI), votre carte son n'a pas été détectée. Vérifier que la section <sq>HW config</sq> contient les bonne informations. 4. Jouez un fichier d'exemple. Trouvez un fichier échantillonné, et envoyez au fichier de périphérique son, pour tester la sortie son, par exemple: <tscreen><code> % cat bonjour >/dev/dsp % cat crash.au >/dev/audio </code></tscreen> Quelques fichiers son (échantillonnés) peuvent être trouvés dans le fichier <tt>snd-data-0.1.tar.Z</tt>. 5. Vérifiez l'enregistrement. Si votre carte peut enregistrer, vous pouvez faire un test rapide en utilisant les commandes suivantes: <tscreen><code> # enregistrement de 4 secondes de son depuis le microphone % dd bs=8k count=4 &etago;dev/audio >essai.au # jouer le son % cat essai.au >/dev/audio </code></tscreen> Si ces tests sont concluants, vous pouvez raisonnablement vous dire que le dispositif son fonctionne bien. Si vous avez des problèmes, lisez la section FAQ de ce document. <sect>Applications utilisant le son<p> <em>The Linux Sound User's Guide</em> décrit en détail les applications disponibles pour Linux en détail. Je ne donnerai ici que quelques exemples du type d'applications que vous pouvez utiliser si vous avez une carte son sous Linux. Au minimum, vous devriez vous équiper des applications suivantes: <itemize> <item>utilitaire de conversion de formats de fichiers audio (p.e. <tt>Sox</tt>) <item>utilitaire de mixage (p.e. <tt>aumix</tt> ou <tt>xmix</tt>) <item>enregistreur/diffuseur de fichiers numérisés (e.g. <tt>play</tt>) <item>diffuseur de fichiers MOD (e.g. <tt>tracker</tt>) <item>diffuseur de fichiers MIDI (e.g. <tt>mp</tt>) </itemize> La plupart de ces utilitaires existent aussi bien en version texte que graphique. Il existe aussi des applications plus ésotériques (comme la synthèse vocale) que vous pouvez aussi essayer. <sect>Réponses aux questions fréquemment posées<p> Cette section répond à quelques questions qui ont été fréquemment posées sur les conférences Usenet et les mailing lists. <sect1>Quels sont les divers fichiers de périphérique pour le son ?<p> <descrip> <tag>/dev/audio</tag>dispositif audio compatible avec les stations de travail Sun (implémentation partielle; par de support de l'interface ioctl de Sun, simplement l'encodage u-law) <tag>/dev/dsp</tag>dispositif d'échantillonnage numérique <tag>/dev/mixer</tag>mixeur son <tag>/dev/sequencer</tag>accès au MIDI, FM, et à la GUS <tag>/dev/midi</tag>dispositif MIDI (pas encore implémenté dans la version actuelle du pilote son) <tag>/dev/sndstat</tag>affiche le status du pilote son lorsqu'il est lu <tag>/dev/audio1</tag>pour la deuxième carte son <tag>/dev/dsp1</tag>pour la deuxième carte son </descrip> Le pilote pour haut-parleur PC fournit les fichiers de périphérique suivants : <descrip> <tag>/dev/pcaudio</tag>équivalent à /dev/audio <tag>/dev/pcsp</tag>équivalent à /dev/dsp <tag>/dev/pcmixer</tag>équivalent à /dev/mixer </descrip> <sect1>Comment puis-je jouer un échantillon sonore ?<p> Les fichiers son .au des stations Sun peuvent être joués en les envoyant sur le fichier de périphérique <tt>/dev/audio</tt>. Les échantillons bruts peuvent être envoyés à <tt>/dev/dsp</tt>. L'utilisation d'un programme comme <tt>play</tt> est recommandée, car il va reconnaître les plupart des formats de fichiers, et configurer la carte son à la bonne vitesse d'échantillonnage, etc. <sect1>Comment puis-je enregistrer un échantillon ?<p> La lecture de <tt>/dev/audio</tt> ou <tt>/dev/dsp</tt> retourne les données numérisées, qui peuvent être redirigées vers un fichier. Un programme tel que <tt>vrec</tt> rend plus faciles le contrôle de la vitesse d'échantillonnage, la durée, etc. Vous aurez peut-être aussi besoin d'un programme de mixage pour choisir la bonne entrée de la carte. <sect1>Puis-je avoir plus d'une carte son ?<p> Jusqu'à deux cartes son sont supportées. Il est possible d'installer une Gravis UltraSound ou une MPU-401 avec une SoundBlaster, une SoundBlaster Pro, une SoundBlaster16 ou une ProAudioSpectrum16. Il n'est <em>pas</em> possible d'avoir une ProAudioSpectrum16 et une SoundBlaster en même temps (la PAS16 contient une émulation SB). Il est aussi impossible d'avoir plus d'une carte du même type. Par exemple, la combinaison GUS + GUS n'est pas possible. Vous pouvez changer la configuration de la carte son au moment de démarrage en utilisant les options de ligne de commande grâce à un boot manager comme LILO. Voir le fichier <tt>Readme.linux</tt> du pilote son dans le noyau pour plus de détails. <sect1>Error: <tt>No such file or directory</tt> for sound devices<p> Vous devez créer les fichiers de périphérique du pilote son. Voir la section sur la création des fichiers de périphérique. Si vous avez des fichiers de périphérique, assurez-vous qu'ils ont les bons numéros (major et minor) de fichier de périphérique (certaines anciennes distributions de Linux sur CD-ROM ne créent pas les fichiers de périphérique corrects lors de l'installation). <sect1>Error: <tt>No such device</tt> for sound devices<p> Vous avez démarré avec un noyau contenant le pilote son, ou l'adresse I/O de la carte ne correspond pas au matériel. Vérifiez que vous faites tourner le noyau récemment compilé, et vérifiez les paramètres entrés lors de la configuration du pilote son. <sect1>Error: <tt>No space left on device</tt> for sound devices<p> Cela se produit si vous essayez d'enregistrer des données sur /dev/audio ou /dev/dsp sans créer les fichiers de périphérique nécessaires. Le fichier de périphérique son est maintenant un fichier normal, et a rempli votre partition. Vous devez exécuter le script décrit dans la section <em>Créer le fichier de périphérique</em> dans ce document. <sect1>Error: <tt>device busy</tt> for sound devices<p> Le fichier de périphérique ne peut être ouvert que par un processus à la fois. Le fichier de périphérique est probablement utilisé par un autre processus. On peut le vérifier en utilisant la commande fuser: <tscreen><code> % fuser -v /dev/dsp /dev/dsp: USER PID ACCESS COMMAND tranter 265 f.... tracker </code></tscreen> Dans l'exemple ci-dessus, la commande fuser montre que le processus 265 a ouvert le fichier de périphérique. Pour utiliser le fichier de périphérique à nouveau, il faut attendre que le processus s'achève ou le tuer. <sect1>J'ai toujours les erreurs <tt>device busy</tt> !<p> (L'explication suivante a été fournie par Harald Albrecht <tt>albrecht@igpm.rwth-aachen.de</tt>) Quelques cartes son supportent l'utilisation du canal DMA 0. La configuration du pilote son l'autorise, et le noyau se compile correctement, mais l'accès au fichier de périphérique son se solde par des messages d'erreur <sq>device busy</sq>. La raison est que le noyau de Linux réserve le canal DMA 0 pour le rafraîchissement des DRAMs. Ce n'est plus vrai pour les cartes mères 386/486 modernes qui utilisent leur propre logique. Vous pouvez corriger cela en changeant cette ligne dans le fichier /usr/src/linux/kernel/dma.c: <tscreen><code> static volatile unsigned int dma_chan_busy[MAX_DMA_CHANNELS] = { 1, 0, 0, 0, 1, 0, 0, 0 }; </code></tscreen> Remplacez le premier 1 par un 0; cela libère le canal DMA 0. Ne faites pas la même chose pour le canal 4, car c'est le canal de chainage, et cela ne fonctionnera pas ! Le code devrait maintenant ressembler à quelque chose comme ca : <tscreen><code> static volatile unsigned int dma_chan_busy[MAX_DMA_CHANNELS] = { 0, 0, 0, 0, 1, 0, 0, 0 }; </code></tscreen> Recompilez et redémarrez avec le nouveau noyau. <sect1>Diffusion partielle des fichiers sons numérisés<p> Le symptôme est habituellement qu'un son se joue environ une seconde et s'arrête complètement ou affiche une erreur comme <sq>missing IRQ</sq> ou <sq>DMA timeout</sq>. Vous avez certainement une mauvaise configuration IRQ ou DMA. Vérifier que la configuration du noyau correspond aux cavaliers sur la carte son, et qu'il n'y a pas de conflit avec une autre carte. <sect1>Il y des pauses lors de la diffusion de fichiers MOD<p> La diffusion de fichiers MOD requiert une puissance CPU considérable. Vous avez peut-être trop de processus qui s'exécutent, ou votre ordinateur est peut-être trop lent pour jouer en temps réel. Vous pouvez: <itemize> <item>essayer de jouer à une vitesse d'échantillonnage plus basse, ou en mode mono <item>éliminer les autres processus <item>acheter un ordinateur plus rapide <item>acheter une carte son plus puissante (p.e. une Gravis UltraSound) </itemize> <sect1>Erreur de compilation lors de la compilation d'applications son<p> La version 1.0c du pilote son, comme les précédentes, utilisait un système <tt>ioctl()</tt> incompatible. Procurez-vous un code source plus récent, ou faites les changements nécessaires pour l'adapter au nouveau pilote. Voyez le fichier <tt>Readme</tt> du pilote son pour plus de détails. Assurez-vous aussi que vous utilisez la dernière version de <tt>soundcard.h</tt> et de <tt>ultrasound.h</tt> lors de la compilation de l'applications. Voir les instructions d'installation au début de ce texte. <sect1>SEGV lors de l'exécution de programmes son qui s'exécutaient bien auparavant<p> Le problème est probablement le même qu'à la question précédente. <sect1>Quels sont les bogues connus ou les limitations du pilote son ?<p> Voir les fichiers <tt>Readme</tt> et <tt>CHANGELOG</tt> inclus avec le source du pilote son dans le noyau. <sect1>Quelle version du pilote son devrais-je utiliser ?<p> Si vous utilisez la version 1.0c ou plus ancienne, vous devez impérativement effectuer une mise à jour. La version 1.0c n'est pas compatible avec les applications écrites pour la version 2.0 et plus récentes. Il n'y a pas eu de changement importants après la version 2.0, donc si vous n'avez pas de problème et que votre version convient à vos besoins, il n'y a pas de raison particulière pour changer de version (cela devrait être vrai au moins jusqu'en septembre 1994). La dernière version officielle est dans la dernière distribution de noyau Linux. Il peut aussi y avoir des versions de test et des prototypes alentour. Si le numéro de version est inférieur à 2.9, la version est probablement sûre. Une version ayant un numéro de version de la forme 2.99.XX est incomplète; c'est une version expérimentale de test. Si vous êtes intéressé par le développement du pilote son, rejoignez le SOUND channel des linux activists. <sect1>Que signifient toutes les options de configuration du pilote son ?<p> Pendant la configuration du pilote son, un programme <tt>configure</tt> est compilé puis exécuté. Ce programme vous pose quelques questions, et génère le fichier d'en-tête <tt>local.h</tt> qui définit la configuration de la carte son. Le fichier configuration définit (ou redéfinit) les symboles suivants: <verb> Symbole Action ====== ======= KERNEL_SOUNDCARD active/désactive le pilote son CONFIGURE_SOUNDCARD active/désactive le pilote son EXCLUDE_PAS support ProAudioSpectrum EXCLUDE_SB support SoundBlaster EXCLUDE_ADLIB support AdLib EXCLUDE_GUS support Gravis UltraSound EXCLUDE_MPU401 support interface MIDI MPU-401 EXCLUDE_SBPRO support SoundBlaster Pro EXCLUDE_SB16 support SoundBlaster 16 EXCLUDE_AUDIO support numérisation EXCLUDE_MIDI support interface MIDI EXCLUDE_YM3812 support synthétiseur FM (YM3812/OPL-3) EXCLUDE_SEQUENCER support séquenceur MIDI EXCLUDE_PRO_MIDI support SoundBlaster Pro MIDI EXCLUDE_CHIP_MIDI support MIDI on CHIP SBC_IRQ numéro IRQ SoundBlaster SBC_DMA canal DMA SoundBlaster SB16_DMA canal DMA SoundBlaster 16 SB16_MIDI_BASE adresse de base du port MIDI SoundBlaster 16 PAS_IRQ numéro IRQ ProAudioSpectrum PAS_DMA canal DMA ProAudioSpectrum GUS_IRQ numéro IRQ Gravis UltraSound GUS_DMA canal DMA Gravis UltraSound GUS_BASE adresse de base Gravis UltraSound MPU_IRQ numéro IRQ MPU-401 MPU_BASE adresse de base MPU-401 DSP_BUFFSIZE taille du tampon DMA </verb> Plusieurs autres symboles sont aussi créés, pour définir des paramètres comme la révision du pilote son, et l'heure et la date d'exécution de configure. Il y a d'autres paramètres qui ne sont pas fixés par le programme configure (p.e. l'adresse de base de la SoundBlaster). Si vous avez besoin de les changer, éditez le fichier <tt>sound_config.h</tt>. Pour désactiver le pilote son, exécutez <tt>make config</tt> et répondez <sq>no</sq> à la question <sq>Sound card support?</sq>. <sect1>Quelles améliorations futures sont prévues pour le pilote son ?<p> Le pilote son n'est pas uniquement pour Linux ; il supporte aussi d'autres systèmes Unix à plate-formes Intel. Le paquetage est maintenant appelé <sq>VoxWare</sq>. Certaines améliorations à l'étude sont: <itemize> <item>implémenter un support MIDI complet <item>supporter patch manager <item>documenter le pilote son (Hacker's Guide) <item>supporter quelques nouvelles cartes son <item>diverses corrections de bugs </itemize> <sect1>Où sont documentés les ioctls() du pilote son ?<p> Ils sont documentés dans le <em>Hacker's Guide to VoxWare</em>, disponible actuellement sous forme de brouillon. La dernière version est draft 2, et peut être trouvée sur <tt>nic.funet.fi</tt> dans <tt>/pub/OS/linux/ALPHA/sound</tt>. Notez que ce répertoire est <sq>caché</sq> et n'apparaîtra pas dans les listings de répertoires. Si vous faites <sq>cd</sq> dans le répertoire et utilisez la commande <sq>dir</sq> de FTP, les fichier <em>sont</em> là. <sect1>Quelles sont les ressources CPU requises pour jouer et enregistrer sans pauses ?<p> Il n'y a pas de réponse évidente à cette question. Cela dépend : <itemize> <item>de l'utilisation de l'échantillonnage PCM ou de la synthèse FM <item>de la vitesse d'échantillonnage et de la taille d'un échantillon <item>de l'application à utiliser pour jouer ou enregistrer <item>du type de carte son <item>de la vitesse du disque et de la CPU, de la taille du cache, etc. </itemize> D'une façon générale, n'importe quel 386 devrait être capable de jouer des échantillons ou de la musique en synthèse FM sur une carte son 8 bit sans problème. La diffusion de fichiers MOD, cependant, requiert des ressources CPU considérables. Des mesures expérimentales montrent que jouer à 44kHz requiert plus de 40% de la vitesse d'un 486/50 et un 386/25 peut difficilement jouer à plus de 22kHz (mesures avec une carte son 8 bit de type Sound Blaster). Une carte telle que la Gravis UlraSound effectue plus de calculs d'elle-même, et réduit d'autant les ressources CPU requises. Ces remarques supposent que l'ordinateur n'effectue aucune autre tâche intensive durant la diffusion. La conversion de fichiers son ou l'ajout d'effets en utilisant un outil comme Sox sont aussi beaucoup plus rapides si vous avez un coprocesseur. Le pilote son n'effectue cependant aucune opération en virgule flottante. <sect1>Problèmes avec une PAS16 et une Adaptec 1542 SCSI<p> (L'explication suivante a été fournie par <tt>seeker@indirect.com</tt>) Linux ne sait reconnaître la 1542 qu'à l'adresse 330 (défaut) ou 333, et la PAS n'autorise que l'émulation MPU-401 à l'adresse 330. Même si vous désactivez la MPU-401 par logiciel, quelque chose entrera en conflit avec la 1542 si elle est à son adresse par défaut. Déplacer la 1542 en 333 contentera tout le monde.<P> De plus, la 1542 et la PAS-16 font toutes deux appel au DMA 16-bit, donc si vous échantillonnez à 16-bit 44kHz en stéreo et que vous sauvez le fichier sur un disque SCSI contrôlé par la 1542, vous allez peut-être avoir des problèmes. Les DMAs se recouvrent, et il n'y a pas assez de temps pour le rafraîchissment de la RAM, et vous obtenez le message <sq>PARITY ERROR - SYSTEM HALTED</sq>, avec aucun indice sur ce qui a pu le causer. C'est encore pire à cause de quelques vendeurs de backups QIC-117 qui recommandent de changer la durée du on/off sur le bus, qui fait que la 1542 est encore plus longue. Procurez-vous le programme SCSISEL.EXE depuis le BBS Adaptec ou un autre endroit sur l'Internet, et réduisez la durée BUS ON ou augmentez la durée BUS OFF jusqu'à ce que la problème disparaisse. SCSISEL change les valeurs dans l'EEPROM, donc c'est un changement plus permanent qu'un patch au pilote DOS du CONFIG.SYS, et fonctionnera si vous démarrez directement Linux (pas comme le patch DOS). Le problème est alors résolu.<P> Dernier problème - les vieux chipsets Symphony réduisaient énormément les durées des cylces d'I/O opur accélérer l'accès au bus. <em>Aucune</em> des cartes que j'ai testé n'avait de problème avait la réduction de durée, sauf la PAS-16. Le BBS de Media Vision propose SYMPFIX.EXE qui est censé réparer le problème et changeant le bit de diagnostic dans le contrôleur de bus Symphony, mais c'est n'est pas une garantie. Vous aurez peut-être à : <itemize> <item>retourner chez le revendeur de la carte mère pour remplacer le contrôleur de bus, <item>remplacer la carte mère, ou <item>acheter une autre marque de carte son. </itemize> Young Microsystems mettront à jour les cartes qu'ils importent pour environ $30 (US); d'autres vendeurs peuvent proposer des offres similaires si vous pouvez identifier qui a fabriqué ou importé la carte mère (bonne chance). Le problème est dans l'interface bus de la ProAudio pour ce que j'en sais ; <em>personne</em> n'achète une carte son à $120 pour la mettre dans un AT à 6MHz. La plupart l'utilisent dans des 386/486 entre 25 et 40 MHz, et la carte devrait être capable de supporter <em>au moins</em> une vitesse de bus de 12MHz si les contrôleurs étaient bien conçus. Fin de parenthèse.<P> Le premier problème dépend du chipset utilisé sur la carte mère, de la vitesse de bus et autre paramètres du BIOS, et de la phase de la Lune. Le deuxième problème dépend de vos options de rafraîchissment (caché (<sq>hidden</sq>) ou synchrone), la vitesse de DMA de la 1542 et (peut-être) de la vitesse d'I/O du bus. Le troisième peut être déterminé en appelant Media Vision et en leur demandant quels sont les chipsets Symphony incompatibles avec la lenteur de leur contrôleur. Soyez prévenus, les 3 ou 4 techniciens auxquels j'ai parlé semblaient réellement atteints. Et je serais vraiment naïf de croire ce qu'ils disent à propos d'un matériel qui leur est étranger, car ils ne connaissent déjà pas bien le leur.<P> <sect1>Problèmes avec le synthétiseur FM sur une Sound Blaster Pro 1<p> Les SB Pro récentes ont un chip FM OPL-3, mais les versions 1 utilisaient l'OPL2-2. Le pilote son suppose la présence d'un OPL-3. La version 2.5 du pilote son corrige ce problème. <sect1>La GUS-MAX est-elle supportée?<p> La GUX-MAX n'est pas encore explicitement supportée, mais elle marche partiellement avec le pilote actuel. Le pilote ne sait pas utiliser le mixer ni l'échantillonnage 16 bit. L'initialisation de la carte sous MS-DOS avant de démarrer Linux (en utilisant ctrl-alt-del) devrait la faire fonctionner. Le support complet de la GUS-MAX (et la GUS + carte fille 16 bit) devrait être fourni dans le pilote dans un futur proche. <sect1>Que faire si ma carte son n'est pas supportée ?<p> D'abord, assurez-vous que votre carte n'est vraiment pas supportée. Quelques cartes sont compatibles avec des cartes supportées (p.e. la Logitech SoundMan 16 est compatible avec la ProAudioSpectrum 16). Posez votre question dans les conférences appropriées, ou dans le SOUND channel de la Linux activists mailing list. Si votre carte n'est vraiment pas supportée, voilà quelques options : <itemize> <item> remplacez-la par une carte son supportée <item> écrivez votre pilote vous-même <item> demandez à Hannu Savolainen d'ajouter le support dans le pilote son </itemize> Le <em>Hacker's Guide to Voxware</em> contient quelques commentaires sur la nature des cartes son qui pourraient être supportées dans le futur. <sect1>Est-il possible de lire et écrire des échantillons simultanément?<p> A cause de limitations matérielles, ce n'est pas possible avec la plupart des cartes son. La seule carte supportée qui peut le faire est la ProAudioSpectrum16. Voir la section sur <sq>bidirectional mode</sq> dans le <em>Hacker's Guide to Voxware</em> pour plus d'information. </article>