A - Le son

Difficulté Facile
Note
Thématiques
OS, Unix
Mis à jour le mardi 8 janvier 2013

Vous commencez maintenant à bien connaître /boot/loader.conf. Les modules supplémentaires qu'il charge dans le noyau au démarrage aident FreeBSD à détecter vos périphériques. Pour savoir quels autres modules il peut charger, et donc quels pilotes de périphériques vous pouvez prendre en main, consultez un autre fichier : /boot/defaults/loader.conf.

% less /boot/defaults/loader.conf

Vous voyez que /boot/defaults/loader.conf ne veut rien charger du tout. Mais les instructions que vous saisirez dans /boot/loader.conf seront prioritaires sur celles-ci. Voici quelques lignes susceptibles de vous intéresser. Vous en trouverez peut-être d'autres :

  • sound_load : pour le son digital

  • snd_driver_load : charge tous les pilotes de cartes son.

  • snd_uaudio_load : pour les haut-parleurs USB

  • speaker_load : le petit bip de l'ordinateur (pas forcément indispensable).

Allons donc écrire ça (en root, bien sûr) dans le fichier /boot/loader.conf :

# emacs /boot/loader.conf

A vous d'écrire. Par exemple :

#Image d'accueil
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/monimage.bmp"
vesa_load="YES"

#Imprimante
usb_load="YES"
ulpt_load="YES"

#Son
sound_load="YES"
snd_driver_load="YES"
snd_uaudio_load="YES"
speaker_load="YES"

Sauvegardez et quittez emacs. Voici la méthode la plus rapide pour ça : placez votre annulaire gauche sur la touche Ctrl de gauche et appuyez successivement avec votre index gauche sur les touches X, S, X et C.

Lors du prochain démarrage, vous verrez passer de nouveaux messages, indiquant que ces modules supplémentaires sont chargés. Mais si vous ne voulez pas attendre jusque là, vous pouvez les charger immédiatement avec la commande kldload. Suivez le guide ;) :

cd /boot/kernel && ls

Voici /boot/kernel, un dossier particulièrement important puisque c'est celui du noyau de FreeBSD. Vous voyez tous ces fichiers en .ko ? Ce sont les modules disponibles. Faites votre marché et demandez à kldload de charger ceux qui vous intéressent. Vous indiquerez pour cela le nom de chaque module (sans son extension).

# kldload sound
# kldload snd_driver
# kldload snd_uaudio
# kldload speaker

Et tapez finalement kldstat pour vérifier la liste des modules chargés.

Pour tester immédiatement le son, allez à la racine et tapez :

% cat COPYRIGHT > /dev/dsp

o_O Je croyais que cat servait à lire un fichier texte. Quel rapport avec le son ?

cat sert bien à afficher le texte d'un fichier. Et vous reconnaissez certainement le symbole >, qui redirige ce texte vers le fichier /dev/dsp. Si /dev/dsp était un fichier ordinaire, le contenu de COPYRIGHT y serait recopié (en effaçant celui de dsp). Mais vous avez bien compris, maintenant, que les fichiers du dossier /dev/ sont en réalité des périphériques.

Le texte de COPYRIGHT est donc envoyé vers votre haut-parleur, où il provoque un grésillement. Si vous ne l'avez pas entendu, réessayez en augmentant le volume de votre haut-parleur (commande mixer 100:100 et tournez la molette de votre haut-parleur à fond).

Là, selon votre configuration matérielle, il y a deux cas possibles : soit vous entendez le grésillement, soit vous n'entendez toujours rien. Dans le second cas, essayez :

% cat /dev/sndstat

Vous verrez logiquement quelque chose comme ça :

FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <HDA ATI R6xx HDMI PCM #0 HDMI> (play) default
pcm1: <HDA IDT 92HD75BX PCM #0 Analog> (play/rec)
pcm2: <HDA IDT 92HD75BX PCM #1 Analog> (play/rec)
pcm3: <HDA IDT 92HD75BX PCM #2 Digital> (play)

FreeBSD a donc détecté quatre sorties audios sur votre machine. pcm0 est sélectionnée par défaut mais, puisque vous n'entendez rien, ce n'est visiblement pas la bonne. Pour en essayer une autre :

[Nom de l'ordinateur]# sysctl hw.snd.default_unit=1 && cat COPYRIGHT > /dev/dsp

Si vous n'entendez toujours rien, essayez de remplacer le 1 par un 2 (pour sélectionner pcm2) puis par un 3. Et une fois que vous avez trouvé la bonne valeur, indiquez-la dans le fichier /etc/sysctl.conf en ajoutant la ligne :

hw.snd.default_unit=1

(ou 2, ou 3)

D'accord, ça marche, mais on n'a pas de la vraie musique, plutôt ? >_

On va s'en occuper. Mais nous avons d'abord un autre problème à régler. En demandant le chargement du module snd_driver, vous n'avez pas fait qu'activer le support pour votre pilote de carte son. Vous avez activé le support pour tous les pilotes de toutes les cartes sons que FreeBSD connaît. Et un seul nous sert réellement. C'est du gaspillage ! :colere2:

Vous devez donc identifier quel pilote vous utilisez vraiment. Pour ça, votre allié est à nouveau le fichier /dev/sndstat. Relisez-le. Dans l'exemple ci-dessus, le pilote est HDA. Le module snd_hda remplacera donc avantageusement snd_driver.

Autre exemple :

%cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <ATI IXP 400> (play/rec) default

Cette fois, le module à utiliser est snd_atiixp.

Si vous hésitez, consultez à nouveau la liste des modules disponibles dans /boot/defaults/loader.conf :

% cat /boot/defaults/loader.conf | grep snd_

Ou, plus simplement :

%grep snd_ /boot/defaults/loader.conf

Vous pouvez maintenant retourner voir /boot/loader.conf et remplacer snd_driver_load par snd_atiixp_load ou snd_hda_load ou autre chose. C'est quand même plus propre comme ça. :)

Passons maintenant à la musique. Avec Firefox, vous trouverez facilement un morceau MP3 gratuit à télécharger depuis le web. :D Vous pouvez aussi, tout simplement, glisser un CD audio dans votre lecteur de CD-ROM.

Pour écouter ces morceaux, installez un logiciel de lecture audio : XMMS, MPlayer, Amarok, etc.

Image utilisateur

L'auteur