Ardour3_Gentoo_new_bpier.jpg

Préalable

Je donnerai donc toutes les étapes à franchir pour configurer Gentoo pour la MAO. Je n'entrerai cependant pas dans le détail de l'installation de base de cette distrib', sauf quand les procédures nécessaires à la MAO l'imposent. Pour être franc, l'installation ne sera pas "user friendly" !

La version de Gentoo utilisée ici est basée sur la dernière Stage 3 installée à partir d'un CD minimal d'une centaine de mégas qui contient juste les outils de base. L'objectif était de se concocter une Gentoo légère, véloce avec une interface graphique LXDE combinée à Openbox (rien de Gnome, rien de KDE). Le serveur son est évidemment alsa, surtout pas pulseaudio.

Les phases indispensables

Premier point S'il n'est pas question de détailler l'installation de base, pour faire de la MAO, il est toutefois préférable de configurer sa distrib dès son installation. Donc, pour un tas de raisons sur lesquelles je ne m'étendrai pas, j'ai fait le choix de rester en 32bits. Pour info, mon ordi est un assemblage de pièces achetées ici et là. Elles commencent à être anciennes. Ainsi, ma motherboard est une Gigabyte GA-EP41-UD3L, le processeur un Pentium Q6600, plus 4Go de RAM DDR2, une carte graphique Nvidia Gforce GT630, plusieurs disques durs Sata et USB2, une carte audio Echo Layla 24, une interface Midisport 4x4, une Midisport 2x2.

Au moment d'installer le kernel, j'ai opté pour un noyau classique, le gentoo-sources-3.14.16 à l'heure où j'écris. Je l'ai configuré en lowlatency-pae avec ces options :

make_menuconfig_lowlatency.png

timer_frequency.png

J'ai également tenu compte de mes besoins : ainsi, ma carte Nvidia fonctionne avec le module libre nouveau, la carte Layla24 avec le module snd-layla24 du noyau, etc.
 

Le CPU Frequency scaling


Deuxième point majeur pour la MAO : faire en sorte que le kernel tire le maximum du processeur. Ainsi, toujours pendant la config du noyau, lors du make menuconfig, allez dans "Power management and ACPI options/CPU Frequency scaling" et choisissez "Default CPUFreq governor (performance)".

frequency_scaling.png
Quand le kernel est configuré, et que vous l'avez installé, n'oubliez pas d'ajouter dans le fichier /etc/conf.d/modules les modules que montera votre kernel_tel_version. Voir les trois dernières lignes, correspondant à trois noyaux différents :

etc_conf_d_modules.png

 

Le choix du profile

Troisième point important Lors de la première installation, il est également nécessaire de choisir un profile Gentoo, via la commande eselect profile list. Choisissez ici un simple profile desktop, ni desktop/gnome, ni desktop/kde. Motif : vous éviterez de ce fait d'installer des couches inutiles. De plus, en écartant gnome, vous ferez l'économie d'un tas d'heures passées à tenter (en vain) de désinstaller le serveur son pulseaudio, servi d'office avec Gnome, mais à proscrire en MAO. Sur une première install, j'avais retenu l'option desktop/gnome comme profile. Je m'en suis mordu les doigts, car je n'ai jamais réussi à désinstaller proprement pulseaudio.... Le profile Desktop permet donc d'utiliser un serveur graphique léger, en fait LXDE/openbox, et d'installer le serveur son alsa, dont on se sert en priorité en MAO.

eselect_profile_list_gentoo_bpier.png
Pour tout un tas d'éléments de  configuration liés à la spécificité de votre machine, référez-vous également au Handbook de Gentoo, ici.

 

Installer le serveur son alsa

A ce stade, je présuppose que vous avez installé Gentoo correctement, et son serveur X : LXDE/Openbox, que tout fonctionne à merveille. Il faut donc maintenant installer alsa.

Sur mes précédentes installations de Gentoo, c'était on ne peut plus simple. Mais les bonnes choses ont toujours une fin ! Hélas. Pour cette install-ci, ça a été beaucoup plus laborieux.

On y va : installez alsa-lib, alsa-oss, alsa-tools, alsa-utils, alsa-firmware, alsa-plugins, plus pyalsa.

 

 

Vérifiez maintenant que votre carte audio est reconnue en passant cette commande :

cat /proc/asound/cards

Quand tout va bien, la console vous retourne un truc de ce type :

cat_proc_asound_cards_gentoo_new.png

Si votre carte n'est pas vue, tapez la commande lspci

Regardez du coup si votre carte est reconnue par la machine. Exemple pris avec mon Echo layla :

lspci_echo_layla24.png

Si la vôtre est reconnue, rien n'est perdu. Mais, comme je ne connais pas la carte de chacun de mes lecteurs, je ne rentrerai pas dans le détail pour chacune d'elles (j'en serai bien incapable d'ailleurs). Alors, un seul conseil dans ce cas :rendez-vous sur les forums pour trouver de l'aide. Moi, je ne peux que rester dans les généralités, excepté mon matos.

Justement, en parlant de mon matériel, j'ai rencontré une sévère galère avec ma carte Layla... Pour que Gentoo voie la layla comme ma carte par défaut, j'ai dû créé un fichier /home/mon_user/.asoundrc, contenant ces lignes :

# pcm.layla24 {
#          type hw
#          card 1
#       }
#      
#      ctl.layla24 {
#        type hw
#       card 1
#     }

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw          
    card 1
}

card 1 correspond à la place qui revient à ma Layla dans le /proc/asound/cards.

A SUIVRE....

Cela étant fait, mettez alsa en service au boot :

/etc/init.d/alsasound start
rc-update add alsasound boot

rc_update_show.png

Installer Echomixer (chapitre pour les propriétaires de carte Echo)

L'utilitaire Echomixer, appartenant au paquet alsa-tools, peut être mis en raccourci sur le bureau ou même dans la barre des tâches de LXDE. Pour cela,commencez par créer un fichier Echomixer.desktop. Copiez dedans le texte ci-dessous et placez ce fichier dans votre $home dans le dossier /.local/share/applications/echomixer.desktop. Vous pouvez aussi le copier dans le dossier /usr/share/applications :

[Desktop Entry]
Encoding=UTF-8
Name=Echomixer
Name[fr]=Echomixer
Comment=Mixer and GUI control utility for Echo Digital Audio sound cards
Comment[fr]=Contrôle des cartes audio Echo
Exec=/usr/local/bin/echomixer
Terminal=false
Type=Application
Icon=/usr/share/icons/Mixer-128.png
Categories=Application;AudioVideo;Audio

Désormais un raccourci Echomixer doit apparaître dans le menu de la barre des tâches, rubrique son et vidéo. Vous pouvez, à ce stade, créer un raccourci directement dans la barre des tâches (lxpanel). Ainsi, ouvrez toujours dans votre $home le fichier .config/lxpanel/LXDE/panels/panel et créez votre nouveau raccourci sous cette forme dans la rubrique Plugin/launchbar, sans tenir compte du gras toutefois :

Plugin {
       type = launchbar
       Config {
             Button {
                    id=pcmanfm.desktop
             }
             Button {
                    id=firefox.desktop
            }
            Button  {
                   id=echomixer.desktop
            }

            Button  {
                   id=qjackctl.desktop
            }
            Button  {
                   id=thunderbird.desktop
            }
     }
}

Installer les interfaces Midisport (autre rubrique propriétaire)

A SUIVRE.... Et retour à l'ancien post ... ci-dessous

D'abord : Gentoo en action

Une petite vidéo d'une belle compo, Guardian Angel, enregistrée sur Ardour.

Et puis une autre vidéo, toujours en flash, pour voir ce que ça donne en MIDI avec la banque de sons Crisis sur le séquenceur Rosegarden via le lecteur/synthé Virtuel Qsynth (faite également avec la même ancienne Gentoo) :

 

Le groupe audio

On suppose désormais Ajoutez vous aux groupes audio et realtime :

 # groupadd realtime
 # groupadd audio (normalement il existe, mais bétonnons)
# gpasswd -a votre_username realtime
# gpasswd -a votre_username audio

Principaux fichiers de conf

Pour information, voici donc mes fichiers de conf. Ils sont configurés pour la MAO, notamment. Tenez compte des USEFLAGS, ils sont importants lors de la compilation des softs. Chez Gentoo, ce sont eux qui déterminent la personnalisation de votre config. Le premier fichier de conf est, je viens de le signaler, le plus important: le /etc/make.conf. Inspirez-vous du mien pour les USEFLAGS (USE) principalement. Pour le reste, adaptez en fonction de ce que votre configuration, votre matériel, votre machine :

# These settings were set by the catalyst build script that automatically

# built this stage.

# Please consult /usr/share/portage/config/make.conf.example for a more # detailed example.

USE="-openmp mmx sse sse2 sse3 ssse3 objc objc++ objc-gc aac aalib a52 acpi alsa -pulseaudio -arts autoipd automount bash-completion -berkdb bison -bluetooth cleartype corefonts cpudetection device-mapper dbus divx dvb dvd dvdr dvdread dts emerald encode esd exif -extras faac fbcon fbcondecor ffmpeg flac fuse g3dvl gallium gnome gnome-keyring gnomecd gnutls gtk -hal howl-compat introspection ipv6 jack jackmidi java java6 jpeg ladspa lame libass lash libsamplerate live lua lv2 mad mdnsresponder-compat matroska midi mono mp2 mp3 mp4 mpeg musepack ncurses nls nss ntfs -nvidia ogg opengl quicktime qt3 qt4 pam pdf png policykit postscript posix python real skins sqlite sqlite3 startup-notification svg symlink taglib tiff theora truetype type1 udev unicode usb v4l v4l2 vim-syntax vorbis vst wavpack win32codecs wxwindows wma wmf x264 xorg xosd xanim X xvg xv xvid xvmc xpm zeroconf"

HOSTNAME="your_login_name" ## mettez votre login

ALSA_CARDS="your_audio_card" ## mettez votre carte audio

LINGUAS="fr fr_FR" ## mettez ici votre langue par défaut

VIDEO_CARDS="nouveau"

INPUT_DEVICES="evdev"

CFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer"  ## éviter ici de mettre -O3, c'est trop agressif ; sur -march, choisissez votre proc

CXXFLAGS="${CFLAGS}"

# WARNING: Changing your CHOST is not something that should be done lightly.

# Please consult https://www.gentoo.org/doc/en/change-chost.xml before changing.

CHOST="i686-pc-linux-gnu"

MAKEOPTS="-j5" ## mettez -J3 pour un Core Duo

FEATURES="parallel-fetch ccache "

CCACHE_SIZE="2G"

PORTDIR="/usr/portage"

DISTDIR="${PORTDIR}/distfiles"

PKGDIR="${PORTDIR}/packages"

LIBQTDIR="/usr/lib/qt4"

AUTOCLEAN="yes"

USE_PYTHON="2.7 3.2"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

## rsync://rsync.de.gentoo.org/gentoo-portage

GENTOO_MIRRORS="ftp://ftp.free.fr/mirrors/ftp.gentoo.org/ ftp://de-mirror.org/gentoo/ https://de-mirror.org/gentoo/ rsync://de-mirror.org/gentoo/ ftp://ftp.wh2.tu-dresden.de/pub/mirrors/gentoo https://gentoo.mneisen.org/ rsync://mirror.netcologne.de/gentoo/ https://mirror.netcologne.de/gentoo/ ftp://mirror.netcologne.de/gentoo/"

# Layman

source /var/lib/layman/make.conf

Voici cette fois mon fichier /var/lib/layman/make.conf :

PORTDIR_OVERLAY="
/var/lib/layman/pro-audio
$PORTDIR_OVERLAY"

A SAVOIR : quand vous modifié vos fichiers de conf, notamment les USEFLAGS, tapez en console et toujours en root pour mettre à jour votre environnement :

dispatch-conf && env-update && source /etc/profile

Installer les softs de MAO

Maintenant, installez via un emerge les softs (les paquets) pour la MAO. Vous pouvez pour vous faciliter une partie de la tâche, en récupérant mon fichier world, copier son contenu, le mettre dans votre propre fichier world qui se trouve dans le répertoire /var/lib/portage/. Le voilà : world.txt. Ce fichier contient la grande majorité des softs (paquets) qui composent ma Gentoo, celle de ce post. Commencez, ensuite, par l'indispensable : les paquets alsa (dont les alsa-tools, alsa-utils et alsa-firmware), qjackctl et jack-audio-connection-kit.

=> EDIT d'août 2014 : ayant rencontré des problèmes de reconnaissance de ma carte Layla24 avec alsa, j'ai directemet compilé à la main les paquets sources alsa-firmware et alsa-tools (echomixer) récupérés sur le site d'alsa.

Une fois que vous avez compilé les paquets nommés ci-dessus, passez ensuite aux logiciels avec lesquels vous jouerez : ardour, rosegarden, hydrogen..., enfin tous ceux que vous souhaitez utiliser. Ajoutez Yoshimi, plus a2jmidid, Linuxsampler et ses dépendances. Plus Audacity, Jamin, Patchage...

A SIGNALER_2 : si vous souhaitez installer une version bien précise d'un soft, exemple ardour-2.8.12, et qu'Emerge refuse de l'installer, en indiquant "All ebuilds that could satisfy "=media-sound/ardour-2.8.12" have been masked". Alors, contournez la difficulté en tapant en root :  echo ">=media-sound/ardour-2.8.12 ~x86" >> /etc/portage/package.accept_keywords. Suivi d'un env-update && source /etc/profile && dispatch-conf. Puis lancez l'installation du soft.

Enfin, je conseille vivement d'installer Yoshimi. C'est un super synthé, très très complet et qui sonne. Il fonctionne avec jackmidi. Pour le contrôler via  les ports Alsa MIDI, utilisez la commande : yoshimi -a. Image qui en dit long sur les possibilités du synthé :

yoshimi.png

Une démo de ce synthé : https://www.musically.me.uk/music/Ride_With_Yoshimi.mp3

Retour au post. Maintenant que vous avez installé les paquets qui vous intéressaient, choisissez de bétonner, en tapant en console l'une de ces lignes de commandes. Choisissez en fonction de l'option qui vous intéresse le plus (elles sont indiquées après les commandes). J'ai ajouté à chaque fois l'argument -a (pour ask)  :

  # emerge -a --update --newuse --deep --with-bdeps=y @world [Mise à jour complète]

  # emerge -a --update --deep --with-bdeps=y world [Mise à jour du système entier]

Une précaution : par la suite, ne modifiez pas trop votre fichier make.conf. Ainsi, quand vous emergez un nouveau paquet qui réclame des USEFLAGS particuliers, non présents ou susceptibles de semer la pagaille dans votre belle Gentoo aux petits oignons, faites un emerge en utilisant l'argument "--autounmask-write", suivi d'un dispatch-conf.

Précaution, deux : si vous obtenez sur cette commande emerge un "verification failed" comme résultat, ne paniquez pas, ajoutez de nouveaux mirroirs dans votre make.conf, faites un env-update, suivi d'un etc-update ou dispatch-conf, puis refaites un eix-sync, avant de relancer emerge. Si ça ne marche toujours pas, attendez le lendemain que tout rentre dans l'ordre du côté de l'arbre portage de gentoo. Faut un peu de philosophie avec cette distribution, parfois.

Une fois que l'emerge --update --newuse --deep --with-bdeps=y @world est fini, faites un revdep-rebuild.

ATTENTION : à la fin de chacune de ces commandes, lisez bien les éventuels messages laissés pour chacun des paquets réinstallés. Exemple : sur l'emerge d'un paquet après un revdep-rebuild, un message me conseillait de taper cette commande : # revdep-rebuild --library '/usr/lib/libffi.so.5' && rm '/usr/lib/libffi.so. Il faut en tenir compte. Bien souvent, ça re-emerge d'autres paquets. Exemple :

Screenshot-root_bpier_-usr-portage-distfiles-1.png

Enfin, rien de plus désagréable de voir que jack numérote les cartes audio au petit bonheur la chance. Et les numéros changent à chaque redémarrage, plantant à chaque fois ou presque le serveur jack. Fixez donc l'ordre de montage de vos cartes, en rajoutant ces quelques lignes dans le fichier /etc/modprobe.d/alsa.conf.

Vu que j'ai une layla24 et trois interface USB (deux MIDI -la midiman et la Roland - plus une webcam), j'ai mis à la fin du fichier :

 # Ma config
options snd-layla24 index=0
options snd-usb-audio index=1,2,3

De cette manière, la layla est à chaque fois vu comme la première carte, notée hw:0 dans jack, et ainsi de suite pour les périph USB. Image :

alsa_conf_hw0.png

Installez ensuite pam (on aurait pu le faire avant) :

emerge pam

Editez, ensuite, le fichier /etc/security/limits.conf en ajoutant ces lignes :

@audio		-	rtprio		95
@audio		-	memlock		unlimited

Ajoutez maintenant votre user au groupe audio :

# gpasswd -a votre_user audio

 

EDIT août 2014 : Comme l'ebuild ne fonctionne plus, il faut  télécharger rtirq directement ici : https://www.rncbc.org/archive/rtirq-20140413.tar.gz et installer à la main). J'ai donc supprimé le chapitre ci-dessous. Ce d'autant que je ne sais toujours pas comment installer le nouveau rtirq...

Installez  rtirq 

# emerge rtirq

Ajoutez-le en service en default ou en boot (ici en default) :

# rc-update add rtirq default

Vérifiez son statut :

# /etc/init.d/rtirq status

Ce qui donnait chez moi au moment de la rédaction de ce post :

rtirc_status.png

Et ce qui donne en février 2013, après de multiples mises à jour, sur un noyau gentoo-sources en low-latency...

Capture-root_bpier_-home-bpier.png

Et sur un vanilla-sources 2.6.11 patché realtime (toujours en février 2013) :

rtirq_kernel_vanilla_2_6_11_rt29.png

Revenons à nos moutons.

Vérifiez à présent vos IRQ pour voir si aucun d'eux n'est partagé :

cat_proc_interrupts.png

De manière optionnelle, mais recommandée pour les anciens kernels, vous pouvez également accroître l'appel à l'interruption RTC (important en audio). l faut ajouter dans le fichier /etc/sysctl.conf :

dev.rtc.max-user-freq=2048
dev.hpet.max-user-freq=2048

Puis créer dans /etc/udev/rules.d/ le fichier 40-timer-permissions.rules, y mettre en copier/coller :  

KERNEL=="rtc0", GROUP="audio" 
KERNEL=="hpet", GROUP="audio"

=>Pour rtc0, je ne suis pas sûr que l'argument soit pris en compte lors du démarrage de la bécane.

Fixer ensuite la fréquence du swap, toujours dans /etc/sysctl.conf (conseil venant cette fois des utilisateurs d'ArchLinux, ainsi que de linuxmusicians) :

vm.swappiness = 10
fs.inotify.max_user_watches = 524288

Vous pouvez aussi optimiser (en le maximisant) le PCI latency timer de la carte audio. Cette manip est à prendre avec des pincettes, et beaucoup de précaution. Référez-vous aux conseils du site gentoo donnée en lien après les deux cadres montrant comment optimiser la latence PCI :

# setpci -v -s ID_de_la_carte_audio_qu'on_trouve_en_passant la commande_lspci  latency_timer=32
Cette commande est à manipuler avec précaution. Trop de stress sur la carte génère des XRUNS. Si c'est le cas, entrez la valeur 64. Ce que j'ai fait d'ailleurs...
Pour trouver l'ID de la carte PCI, que nous repérerons en gras :
# lspci -v  ##, puis repérer où se trouve votre carte audio. Exemple ci dessous 03:00.0 Multimedia audio controller: Creative Labs SB Audigy (rev 03)  ## l'ID est donc 03.00.0

CONCLUSION : remplacer $SOUND_CARD_PCI_ID par son ID : 03:00.0

Enfin, si cela vous chante, gérez les services, afin d'alléger un peu plus Gentoo, via la commande rc-update 

Pour voir les runlevels des services :

# rc-update -v show

Pour ajouter un service au boot :

# rc-update add service_choisi boot

Pour l'ajouter au niveau default :

# rc-update add service_choisi default

Pour le virer :

# rc-update del service_choisi default

Autre façon de voir l'ensemble des services :

# rc-status -a

Ce qui donne chez moi :

bpier bpier # rc-status -a
Runlevel: default
 udev                                                              [  started  ]
  dbus                                                              [  started  ]
 consolekit                                                        [  started  ]
 numlock                                                           [  started  ]
 net.eth0                                                          [  started  ]
 netmount                                                          [  started  ]
 acpid                                                             [  started  ]
 udev-postmount                                                    [  started  ]
 local                                                             [  started  ]
Runlevel: shutdown
 savecache                                                         [  stopped  ]
 killprocs                                                         [  stopped  ]
 mount-ro                                                          [  stopped  ]
Runlevel: sysinit
 udev-mount                                                        [  started  ]
 dmesg                                                             [  started  ]
 udev                                                              [  started  ]
 devfs                                                             [  started  ]
Runlevel: boot
 hwclock                                                           [  started  ]
 cpufrequtils                                                      [  started  ] (viré depuis)
 hostname                                                          [  started  ]
 modules                                                           [  started  ]
 fsck                                                              [  started  ]
 root                                                              [  started  ]
 mtab                                                              [  started  ]
 localmount                                                        [  started  ]
 sysctl                                                            [  started  ]
 bootmisc                                                          [  started  ]
 sysklogd                                                         [  started  ]
 termencoding                                                      [  started  ]
 net.lo                                                            [  started  ]
 keymaps                                                           [  started  ]
 consolefont                                                       [  started  ]
 alsasound                                                         [  started  ]
 procfs                                                            [  started  ]
 urandom                                                           [  started  ]
 swap                                                              [  started  ]
Dynamic Runlevel: hotplugged
Dynamic Runlevel: needed
 xdm-setup                                                         [  started  ]
Dynamic Runlevel: manual
bpier bpier #

=>EDIT du 14 novembre 2012 : dans un premier temps, j'avais installé le service hdparm au niveau du boot. Je l'ai viré depuis.

EDIT du 26 novembre 2012 : la mise à jour d'openrc (je ne suis pas encore passé sur systemd) rajoute des services au démarrage. Voici le message de l'update :

* Messages for package sys-apps/openrc-0.11.5:
* Auto-adding 'swapfiles' service to your boot runlevel
* Auto-adding 'sysfs' service to your sysinit runlevel
* Auto-adding 'tmpfiles.setup' service to your boot runlevel
* In this version of OpenRC, the loopback interface no longer
* satisfies the net virtual.
* If you have services now which do not start because of this,
* They can be fixed by adding rc_need="!net"
* to the /etc/conf.d/servicename file.
* You should also file a bug against the service asking that
* need net be dropped from the dependencies.
* The bug you file should block the following tracker:
* https://bugs.gentoo.org/show_bug.cgi?id=439092
* This version of OpenRC doesn't enable nfs mounts automatically any
* longer. In order to mount nfs file systems, you must use the
* nfsmount service from the nfs-utils package.
* See bug https://bugs.gentoo.org/show_bug.cgi?id=427996 for
* more information on this.
* You should now update all files in /etc, using etc-update
* or equivalent before restarting any services or this host. *
* Please read the migration guide available at:
* https://www.gentoo.org/doc/en/openrc-migration.xml

Ensuite, éditer /etc/rc.conf puis choisir en décommentant (en virant les #) les arguments suivants : rc_interactive="YES" , rc_logger="YES", Un débat existe, en outre, sur l'ajout de l'argument rc_parallel_startup="YES". Pour ma part, je ne l'ai pas ajouté -j'ai gardé rc_logger).

Entrez à présent, pour mettre à jour l'environnement et votre profile  :

# env-update && source /etc/profile

Installation de CPUfrequtils

CPUfreq est un utilitaire intéressant, quand un gouverneur, ou plusieurs sont activés dans le noyau. ce que vous avez fait lors de la configuration du kernel, je vous le rappelle, si vous avez suivi ce post depuis le début. Entrez en root les commandes :

# /etc/init.d/cpufrequtils start
# rc-update add cpufrequtils boot

Pour vérifier que les gouverneurs Ondemand et Performance sont bien à votre disposition, tapez :

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

Ce qui doit répondre : ondemand performance. Du coup, pour choisir un gouverneur :

# cpufreq-set --governor [ondemand ou performance, au choix]

Cette commande ci-dessus n'agit que sur le CPU0. Pour que chaque CPU soit placé par exemple sur performance (si cela n'a pas déjà été choisi au niveau de la configuration du kernel), il faut taper la commande :

# cpufreq-set -c 1 -g performance

Et ainsi de suite pour chaque CPU :pour un quad core, refaites la même cmmande avec l'argument -c 2 et -c 3.

Pour voir les gouvernors sur chaque cpu en cas de multi-processeurs :

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governor

Est-ce que tout fonctionne bien ?

Pour vérifier si votre bécane est bien configurée pour la MAO, installez le script realTimeConfigQuickScan. Pour cela, installez d'abord le paquet mercurial :

# emerge mercurial

Puis :

hg clone https://realtimeconfigquickscan.googlecode.com/hg/ realtimeconfigquickscan
cd realtimeconfigquickscan
perl ./realTimeConfigQuickScan.pl

realtimeconfigquickscan.png

Sur l'image ci-dessus, vous constaterezbr / que realtimeconfigquickscan ne détecte pas la confi du kernel... Etrange. Bon, l'outil donne néanmoins les indications sur la config de base pour la MAO. Pour le reste, il existe u/public/divers/Faire_de_la_MAO_sous_Gentoo/rtirc_status.pngn autre outil.

L'autre outil : l'utilitaire latencytop.

Installez le via un emerge. Comme vous avez, si vous avez suivi mon post, configuré le kernel en cochant Latency measuring infrastructure dans la rubrique kernel hacking.... A SUIVRE

latencytop.png

Quel gain de performance avec ces tweaks ? 

Pour une totale transparence, voyons si tous ces tweaks optimisent vraiment le système. Mon ordi est un assemblage maison, à partir de pièces d'occasion. Carte mère Gigabyte en ICH7 (quelques années), proc Intel quad core Q6600, 4Go de RAM, trois/quatre disques durs, dont un en USB, graveur en IDE, écran Samsung DVI 17 pouces, carte graphique Nvidia 7950GT. Le tout en 32bits (pas vraiment d'intérêt pour le moment à passer en 64bits).

Premier point : le démarrage sur le noyeu Gentoo 3.6.5-rt14 Vanilla. Voici le fichier de log, en fait le fichier dmesg, que vous pouvez consulter ici : dmesg1.txt

Deuxième point : charge avec une session audio, composée de Jack-audio-connection-kit (en 44100hz), Patchage, Linuxsampler + le frontend Fantasia (5 instruments chargés), Yoshimi (2 pistes enclenchées), un VSTi et vsthost chargés, Hydrogen, Rosegarden et Ardour2 lancés avec quatre pistes audio en lecture dans Ardour. La mesure de la charge sur le proc et la mémoire, en images. D'abord l'ensemble dans Patchage :

 
patchage_gentoo.png

Puis image de la charge pesant sur le système, lors d'une session de travail qui démarre (info : regardez la RAM que java s'octroie !) :

Gestionnaire_des_taches_Gentoo.png

Enfin, du point de vue performance. On peut encore gagner. Notamment en désactivant tout ce qui a trait à la sécurité (ce que je teste actuellement, voir la rubrique sur la config du kernel). Car sécurité et performance sont rarement compatibles, prévient un de mes potes, Denis, un gourou de Linux et un des contributeurs actifs d'archlinux (voir lien en tête de ce blog). Je lui ai soumis ce post, pour qu'il apporte ses observations de développeur avisé. C'est donc lui qui suggère de désactiver tout ce qui a trait à la sécurité. "Je n'utilise simplement pas les sous-couches de contrôle d'accès du genre SELinux; overhead non négligeable sur le round-trip user-kernel", explique-t-il. En outre, il estime que l'on peut éventuellement ramener la valeur du swappiness à 0 (je l'ai fixée sur 10 dans ce post). Effectivement, le swap -autrement dit, l'espace de pagination, ne fait pas bon ménage avec le realtime. Motif, et, attention, c'est technique ! "Cela définit la tendance de l'OS à paginer la mémoire infréquemment utilisée. Ca peut être un tueur de performances inattendu en mode realtime ; sachant que si l'instrument doit fetcher le disque au cours du cycle de DSP, on est bon pour rencontrer des underruns." Je fais donc un essai avec un swappiness à 0, donc pas de swap. Ce qui doit naturellement accroître les performances du système, tout en l'exposant au risque de plantage si la mémoire est pleine. En général, avec un swapiness à 60 (sa valeur par défaut), l'OS devient paresseux, dit-on.

Si Wine sans jack est vu comme un souci...

Le serveur Jack n'est plus supporté par Wine, au moins depuis la version 1.4.1. L'explication est ici : "Jack, the low-latency sound server, had a driver in the old driver architecture. It has been removed as part of the transition to MMDevAPI. This means that there is no JACK support in Wine at this time", expliquent les développeurs de Wine, sur leurs pages de Wiki (ici). Résultat : si jack vous manque, repassez wine à la version 1.2.3, par cette commande en root :

emerge =app-emulation/wine-1.2.3

Et bloquez Wine sur cette version bien précise dans le fichier /etc/portage/package.use, en entrant :

# requis par wine/jack
=app-emulation/wine-1.2.3

Et dans /etc/portage/package.mask :

>app-emulation/wine-1.2.3

Puis, faites :

env-update && source /etc/profile && dispatch-conf

Cela empêchera les updates de wine. Image de wine-1.2.3 :

Wine-1.2.3.png

Cela dit, wine n'a pas besoin de jack pour faire jouer les instruments VST. C'est l'objet de la prochaine rubrique.

Utiliser des instruments VST

Pour utiliser des synthés VST, vous aurez besoin d'une part de wineasio, d'autre part de paquet dssi-vst (commande : vsthost).

Un :  wineasio. L'ebuild de 'overlay pro-audio plante. Donc faut compiler wineasio à la main après avoir récupérer ASIOSDK2 sur le site de Steinberg. Pour cela, il est nécessaire de s'inscrire sur le site de Steinberg. Une fois, fait, récupérer ASIOSDK2, décompressez-le. Mettez alors le fichier asio.h (situé dans le dossier common) dans le dossier wineasio. En user, tapez make ; en root, tapez make install. Puis, taper comme indiqué dans le README de wineasio : regsvr32 wineasio.dll. Si tout s'est bien passé, vous devez obtenir ceci :

bpier@bpier:~$  regsvr32 wineasio.dll
Successfully registered DLL wineasio.dll
bpier@bpier:~$ 

Vous pouvez désormais utiliser le driver audio ASIO dans vos VSTi. Reste néanmoins un second paquet à  installer pour utiliser vos instruments : dssi-vst.

Deux, dssi-vst. Même remarque que pour wineasio. L'ebuild de l'overlay pro-audio est planté lui aussi. Pour l'installer, téléchargez du coup le paquet source sur son site officiel (ici), décompressez le dossier, puis renommez deux fichiers : dssi-vst-server.exe en dssi-vst-server et dssi-vst-scanner.exe en dssi-vst-scanner. Faites ensuite un make, puis en root : make install. vsthost est désormais installé. Limitation, hélas : pas de presets, ni de possibilité de sauvegarder les sons que l'on crée. Pour le moment (mon pote Denis travaille sur une nouvelle version avec possibilité de loader des banques, des programmes et de les sauvegarder). Enfin, creez en étant en root un lien du fichier dssi-vst-server dans /usr/lib/vst/  :

# ln -s /usr/lib/dssi/dssi-vst/dssi-vst-server /usr/lib/vst/

Vous pouvez dès lors lancer vos synthés avec cette commande : vsthost /chemin_de/votre/synthe.dll

vsthost_arppe2600a_rosegarden.png

BONNE NOUVELLE : mon pote Denis vient d'améliorer et de mettre à jour dssi-vst pour qu'il prenne mieux en charge les banques et presets des VSTi. Vous pouvez le tester (et l'adopter) en le récupérant via un terminal sur son repo git, en tapant : git clone  https://bitbucket.org/cocotropico/dssi-vst.git

L'un des synthés de l'incontournable suite gratuite d'Elektrostudio (https://www.elektrostudio.ovh.org) :

elektrostudio_ODSay.png

Et quelques effets VST :

vsthost_dssi-vst-0.9.2.png

D'autres synthés, grâce à Calf

Calf propose aussi quelques très bons synthés virtuels qui, eux, utilisent, non pas Alsa MIDI, mais jack MIDI (paquet a2jmidid exigé). Mais, pas de problème : vous pourrez aisément lancé a2jmidid en même temps que jack, de manière absolument transparente en modifiant légèrement votre fichier .desktop de lancement de qjackctl, en ajoutant derrière  a2jmidid -e, ainsi :

QjackCtl.png

Alors, vous pourrez ensuite lancer en toute simplicité vos synthés calf, dont le monosynth (très bon) :
Calf_Monosynth.png


Pour connecter Monosynth, utilisez la boîte de dialogue MIDI de qjackctl (onglet du milieu). C'est tout. Pour obtenir du son, connectez les sorties du synthé au système. Comme d'hab, en fait. Puis jouez le dans Rosegarden. Mais, avant toute chose, installez une version de Rosegarden qui fonctionne bien. C'est l'objet du chapitre suivant.

Rosegarden

Si Rosegarden fonctionne bien chez vous, tant mieux : passez ce chapitre. Pour ma part, j'ai dû réinstaller ce séquenceur, car sa version 12.04 (celle en vigueur au moment où j'écris) plantait : pas de communication MIDI avec les synthés... J'ai récupéré le paquet source 11.11.42 et compilé à l'ancienne :$  ./configure --with-qtlibdir=/usr/lib/qt4 : $ make -j5 ; # make install. Et voilà, ça fonctionne.

EDIT du 19 juillet 2013 : avec la dernière evrsion 13.04, le problème ne se pose plus.

Fluidsynth et Qsynth

Au lancement de qsynth/fluidsynth, un message peut apparaître : "fluidsynth: error: Help! Lost the connection to the JACK server". Résultat : p)as de sorties audio de qsynth dans jack. Pas de panique ! Allez dans le setup de jack et réglez le timeout sur 2000, au lieu de 500.

La maintenance

Maintenez bien votre Gentoo, en l'updatant de temps en temps, après avoir fait un emerge --sync et un layman -S. Ou mieux un eix-sync. N'updatez pas tous les jours. Le wiki français des overlays de Gentoo explique pourquoi. Voilà ce qu'on peut y lire : "Veuillez ne pas exécuter cette commande plus d'une fois par jour ou vous pourriez mettre trop de pression sur l'infrastructure de Gentoo", est-il rappelé sur le Wiki français de Gentoo.

En outre, en mettant à jour de temps en temps, vous serez vite confrontés à quelques choix cornéliens proposés tantôt par la commande etc-update, tantôt par dispatch-conf. Voici un post sur le forum de Gentoo qui peut être utile, pour bien comprendre le maniement de ces deux commandes, sachant qu'il est nettement préférable de n'utiliser que la seconde, dispatch-conf : https://forums.gentoo.org/viewtopic-p-2696449.html#2696449

Enfin, prenez soin de suivre vos fichiers /etc/portage.accept_keywords, /etc/portage/package.use, package.keywords... Evitez de geler des versions de paquets qu'il est peut-être nécessaire de mettre à jour, pour maintenir une compatibilité avec d'autres paquets upgradés, liés avec eux. Ainsi, le petit signe "=" en début de ligne suivi d'un nom de paquet et de sa version empêche la mise à jour vers une version plus récente. S'il le faut, ajoutez devant le "=" le signe ">" qui, placé à cet endroit, autorise l'installation de toute version égale ou supérieure au paquet indiqué.

De plus les "**" placés derrière une version de paquet signifie que cette version en particulier ne doit pas être installée. Très utile si vous ne voulez pas travailler avec jack-1.9.8 (jack2), car vous avez opté pour jack1. Jetez un oeil à mon fichier package.accept_keywords (qui a cependant un peu bougé depuis).

Quant au nettoyage de sa Gentoo, il faut s'en préoccuper. Car l'arbre Portage (le /usr/portage) enfle au fil du temps. Le mien, par exemple, pèse déjà 5,2 Go ! Vérifiez le vôtre via la commande du -sh /usr/portage. Pour nettoyer proprement, lisez donc ce post consacré à l'utilitaire eclean : https://forums.gentoo.org/viewtopic-t-381258.html

UN CONSEIL: faites de copies de sauvegarde de vos principaux fichiers, comme le make.conf, alsa.conf, fstab, world (situé dans /var/portage/), grub.conf, /etc/profile, quelques fichiers placés dans /etc/conf.d (keymaps, modules...), ceux de xorg-server, plus les scripts que vous avez créés.

Si vous repérez une erreur, une coquille, un oubli, faites m'en part. Je me ferai un plaisir d'en tenir compte. Je ne suis passé sous Gentoo qu'au printemps dernier.

Si vous utilisez Linuxsampler (chapitre mis totalement à jour en août 2014)

Pour pouvoir profiter de la puissance et de la qualité de ce sampler sous Linux, il faut le compiler à la main sur Gentoo, en prenant quelques précautions, faute de quoi vous ne pourrez pas l'installer. Après avoir téléchargé les paquets via la procédure svn (svn co https://svn.linuxsampler.org/svn/libgig/trunk libgig, etc.), il faut tout d'abord faire, via un terminal et dans le dossier du paquet source à compiler un make -f Makefiles.cvs ou make -f Makefiles.svn. Passez ensuite à la compilation par elle-même,en ajoutant une séries d'arguments à la commande configure sur les différents paquets à construire :dans l'ordre, libgig, liblscp et linuxsampler. Ainsi, tapez pour le premier paquet :

$ ./configure --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info

Une fois fait, poursuivre la compilation normalement : make et # make install. Passez alors au suivant : liblscp, puis à linuxsampler. Si tout va bien, vous pourrez utiliser ce très bon sampler. N'oubliez pas d'installer gigedit via svn également. En outre, l'interface utilisée ici pour habiller linuxsampler est Fantasia :

 

gigedit_linuxsampler.png

Pour l'usage de Linuxsampler et l'usage de l'interface Fantasia, reportez-vous au post que j'ai fait sur eux, sur ce blog.

L'usage de contrôleurs logiciels

Petit complément sur les interfaces écrites en java. ce qui est le cas des certains utilitaires pour synthés et expandeurs hardware, tel que le mQEdit pour Waldorf Micro Q (image ci-dessous, interface en jaune), un synthé que je possède. L'autre interface, le Prodatum (en gris) pilote mon E-Mu Proteus 2000. Vous devez, pour utiliser ce type d'interface, installer  java, puis sélectionner la machine virtuelle java que vous utiliserez pour les ouvrir. De cette manière : java-config --list-available-vms, # java-config --list-available-vms (suivi du système java utilisé) et/ou $ java-config --set-user-vm (suivi du système java utilisé). Plus d'infos ici : https://www.gentoo.org/doc/fr/java.xml

Prodatum_mQEdit_Gentoo.png

GTK-RecordMyDesktop, ce qu'il faut savoir

Pour que gtk-recordMyDesktop fonctionne, il faut repasser python en version 2.7, ne pas rester en 3.2. Faites cela :

# eselect python list

Ce qui donne normalement la réponse suivante :

Available Python interpreters:
[1] python2.7
[2] python3.2 * (EDIT août 2014 : aujourd'hui python3.3)

Si l'astérisque est sur Python 3.2 comme ci-dessus, faites alors:

# eselect python set 1

Puis faites en root un python-updater (attention c'est assez long). Laissez aller jusqu'au bout de l'update, puis recompiler les paquets concernés par la rétroversion :

python_eselect.png

Si vous voulez aussi travailler la vidéo

Pour cela, vous aurez besoin de quelques paquets. A commencer par ffmpeg ou libav (qui lui nécessite virtual/ffmpeg). L'installation de ffmpeg et libav sur la même machine pose parfois souci. Les deux paquets ne sont pas franchement potes. Reste que libav est le successeur de ffmpeg. Donc privilégiez libav. Installer ensuite transcode ou mencoder (ce dernier s'installe via mplayer qui demande d'avoir encode dans les USE flags du fichier /etc/make.conf). Les dépendances suivront. Puis optez pour Cinelerra, qui tourne plutôt bien sur Gentoo (ça change d'Ubuntu !). Pour que Cinelerra fonctionne correctement, il faut taper préalablement la commande suivante (sur ma machine en tout cas) : echo "0x7fffffff" > /proc/sys/kernel/shmmax.

Installez ensuite Kino, mais aussi dvdrip, deux très bons programmes.

Sachez aussi que, depuis le kernel-3.7.10, la gestion des modules vidéo a un peu changé dans le noyau. Voir https://nlug.ml1.co.uk/2013/02/gentoo-kernel-3-7-9-webcams-v4l-uvc-video-kernel-config/3965

Monter sa Freebox Revolution

Cela peut être utile pour sauvegarder, par exemple, ses fichiers. Après avoir créé le dossier freebox dans /mnt, tapez en root la commande :

mount -t cifs //mafreebox.freebox.fr/Disque\ dur  /mnt/freebox/ -o user=freebox,password=password,uid=1000,gid=1000,rw

Suivre la procédure de boot de sa Gentoo

Il est toujours utile de savoir s'il y a oui ou non des erreurs au démarrage de son ordi. Alors, pour savoir comment monte la Gentoo lors de la procédure de boot, il est nécessaire d'activer le fichier de log qui détaille l'opération. Il s'agit de /var/log/rc.log, qui n'est pas activé d'office. Pour se faire, aller dans /etc/rc.conf et décommenter deux lignes, en virant le # : rc_logger="YES" et rc_log_path="/var/log/rc.log".

=> Si des erreurs apparaissent sur le montage des partitions, repérez d'où peut venir le problème via quelques commandes utiles : 1) mount | grep -i "^/dev" ; 2) file -sL /dev/sdXx ; 3) fsck -N /dev/sdXx ou blkid. Tentez de corriger s'il le faut dans /etc/fstab.

Des pistes d'optimisation, pour le futur...

Compiler plus rapidement encore, pour obtenir un kernel encore plus rapide. C'est a priori ce que promet le Link-Time Optimization, le LTO, qu'il faudra suivre avec intérêt. Trois liens, entre autres : https://patchwork.kernel.org/patch/1343271/, puis https://www.phoronix.com/scan.php?page=news_item&px=MTE2MzY et enfin https://realnc.blogspot.fr/

Voilà mes suggestions. Mais la liste n'est pas exhautives.

Si vous avez des remarques, des ajouts, des corrections à apporter. Encore une fois : NE VOUS PRIVEZ PAS !!

Liens utiles

Un très bon site en anglais qui demande à chaque fois (chez moi, en tout cas) uin mot de passe, mais cliquez sur "annuler" et vous accèderez aux pages :

https://audiodef.com/projects.php?project_id=1

Le Wiki de Gentoo sur l'usage des overlays :

https://www.gentoo.org/proj/en/overlays/userguide.xml

Le dépôt svn de l'overlay pro-audio :

https://svnweb.tuxfamily.org/listing.php?repname=proaudio%2Fproaudio&

Les pages de l'overlay pro-audio :

https://proaudio.tuxfamily.org/wiki/index.php?title=Main_Page

 

Pour monter automatiquementle NAS de sa Freebox :

https://forum.ubuntu-fr.org/viewtopic.php?id=438943

Puis, du côté d'Archlinux :

https://wiki.archlinux.org/index.php/Pro_Audio#Pro_Audio_on_Arch_Linux