5. Réponses aux questions fréquemment posées

Contenu de cette section

Cette section répond à quelques questions qui ont été fréquemment posées sur les conférences Usenet et les mailing lists.

5.1 Quels sont les divers fichiers de périphérique pour le son ?

/dev/audio

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)

/dev/dsp

dispositif d'échantillonnage numérique

/dev/mixer

mixeur son

/dev/sequencer

accès au MIDI, FM, et à la GUS

/dev/midi

dispositif MIDI (pas encore implémenté dans la version actuelle du pilote son)

/dev/sndstat

affiche le status du pilote son lorsqu'il est lu

/dev/audio1

pour la deuxième carte son

/dev/dsp1

pour la deuxième carte son

Le pilote pour haut-parleur PC fournit les fichiers de périphérique suivants :

/dev/pcaudio

équivalent à /dev/audio

/dev/pcsp

équivalent à /dev/dsp

/dev/pcmixer

équivalent à /dev/mixer

5.2 Comment puis-je jouer un échantillon sonore ?

Les fichiers son .au des stations Sun peuvent être joués en les envoyant sur le fichier de périphérique /dev/audio. Les échantillons bruts peuvent être envoyés à /dev/dsp. L'utilisation d'un programme comme play 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.

5.3 Comment puis-je enregistrer un échantillon ?

La lecture de /dev/audio ou /dev/dsp retourne les données numérisées, qui peuvent être redirigées vers un fichier. Un programme tel que vrec 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.

5.4 Puis-je avoir plus d'une carte son ?

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 pas 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 Readme.linux du pilote son dans le noyau pour plus de détails.

5.5 Error: No such file or directory for sound devices

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

5.6 Error: No such device for sound devices

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.

5.7 Error: No space left on device for sound devices

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 Créer le fichier de périphérique dans ce document.

5.8 Error: device busy for sound devices

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:


% fuser -v /dev/dsp
/dev/dsp:             USER       PID ACCESS COMMAND
                      tranter    265 f....  tracker

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.

5.9 J'ai toujours les erreurs device busy !

(L'explication suivante a été fournie par Harald Albrecht albrecht@igpm.rwth-aachen.de)

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 "device busy".

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:


static volatile unsigned int dma_chan_busy[MAX_DMA_CHANNELS] = {
                1, 0, 0, 0, 1, 0, 0, 0
};

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 :


static volatile unsigned int dma_chan_busy[MAX_DMA_CHANNELS] = {
                0, 0, 0, 0, 1, 0, 0, 0
};

Recompilez et redémarrez avec le nouveau noyau.

5.10 Diffusion partielle des fichiers sons numérisés

Le symptôme est habituellement qu'un son se joue environ une seconde et s'arrête complètement ou affiche une erreur comme "missing IRQ" ou "DMA timeout". 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.

5.11 Il y des pauses lors de la diffusion de fichiers MOD

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:

5.12 Erreur de compilation lors de la compilation d'applications son

La version 1.0c du pilote son, comme les précédentes, utilisait un système ioctl() incompatible. Procurez-vous un code source plus récent, ou faites les changements nécessaires pour l'adapter au nouveau pilote. Voyez le fichier Readme du pilote son pour plus de détails.

Assurez-vous aussi que vous utilisez la dernière version de soundcard.h et de ultrasound.h lors de la compilation de l'applications. Voir les instructions d'installation au début de ce texte.

5.13 SEGV lors de l'exécution de programmes son qui s'exécutaient bienauparavant

Le problème est probablement le même qu'à la question précédente.

5.14 Quels sont les bogues connus ou les limitations du pilote son ?

Voir les fichiers Readme et CHANGELOG inclus avec le source du pilote son dans le noyau.

5.15 Quelle version du pilote son devrais-je utiliser ?

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.

5.16 Que signifient toutes les options de configuration du pilote son ?

Pendant la configuration du pilote son, un programme configure est compilé puis exécuté. Ce programme vous pose quelques questions, et génère le fichier d'en-tête local.h qui définit la configuration de la carte son.

Le fichier configuration définit (ou redéfinit) les symboles suivants:

Symbole                 Action
======                  =======
KERNEL_SOUNDCARD        active/desactive le pilote son
CONFIGURE_SOUNDCARD     active/desactive 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 numerisation
EXCLUDE_MIDI            support interface MIDI
EXCLUDE_YM3812          support synthetiseur FM (YM3812/OPL-3)
EXCLUDE_SEQUENCER       support sequenceur MIDI
EXCLUDE_PRO_MIDI        support SoundBlaster Pro MIDI
EXCLUDE_CHIP_MIDI       support MIDI on CHIP
SBC_IRQ                 numero 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                 numero IRQ ProAudioSpectrum
PAS_DMA                 canal DMA ProAudioSpectrum
GUS_IRQ                 numero IRQ Gravis UltraSound
GUS_DMA                 canal DMA Gravis UltraSound
GUS_BASE                adresse de base Gravis UltraSound
MPU_IRQ                 numero IRQ MPU-401
MPU_BASE                adresse de base MPU-401
DSP_BUFFSIZE            taille du tampon DMA

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

Pour désactiver le pilote son, exécutez make config et répondez "no" à la question "Sound card support?".

5.17 Quelles améliorations futures sont prévues pour le pilote son ?

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é "VoxWare". Certaines améliorations à l'étude sont:

5.18 Où sont documentés les ioctls() du pilote son ?

Ils sont documentés dans le Hacker's Guide to VoxWare, disponible actuellement sous forme de brouillon. La dernière version est draft 2, et peut être trouvée sur nic.funet.fi dans /pub/OS/linux/ALPHA/sound. Notez que ce répertoire est "caché" et n'apparaîtra pas dans les listings de répertoires. Si vous faites "cd" dans le répertoire et utilisez la commande "dir" de FTP, les fichier sont là.

5.19 Quelles sont les ressources CPU requises pour jouer et enregistrersans pauses ?

Il n'y a pas de réponse évidente à cette question. Cela dépend :

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.

5.20 Problèmes avec une PAS16 et une Adaptec 1542 SCSI

(L'explication suivante a été fournie par seeker@indirect.com)

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.

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 "PARITY ERROR - SYSTEM HALTED", 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.

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. Aucune 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 à :

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 ; personne 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 au moins une vitesse de bus de 12MHz si les contrôleurs étaient bien conçus. Fin de parenthèse.

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é ("hidden") 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.

5.21 Problèmes avec le synthétiseur FM sur une Sound Blaster Pro 1

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.

5.22 La GUS-MAX est-elle supportée?

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.

5.23 Que faire si ma carte son n'est pas supportée ?

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 :

Le Hacker's Guide to Voxware contient quelques commentaires sur la nature des cartes son qui pourraient être supportées dans le futur.

5.24 Est-il possible de lire et écrire des échantillons simultanément?

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 "bidirectional mode" dans le Hacker's Guide to Voxware pour plus d'information.


Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre