Professional audio (Français)

Les systèmes Linux actuels sont plus que capables de répondre à vos besoins audio (semi-)professionnels. Des latences de 5 ms à 1 ms peuvent être atteintes avec un bon matériel et une configuration adapté.

État de la traduction: Cet article est la version francophone de Professional audio. Date de la dernière traduction: 2022-08-19. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

Pour commencer

Arch Linux fournit le groupe de paquets pro-audio (proposant toutes les applications (semi-)professionnelles pertinentes), lv2-plugins, ladspa-plugins, et (ces derniers étant des sous-groupes du premier).

L'audio à faible latence sur Linux est possible grâce à JACK (toutes les applications dans le groupe pro-audio sont des clients de JACK).

Configuration du système

Vous pouvez envisager les optimisations courantes ci-après :

# echo 2048 > /sys/class/rtc/rtc0/max_user_freq
# echo 2048 > /proc/sys/dev/hpet/max-user-freq
  • Réduire la swappiness (alias fréquence de swap, réglée à par défaut) à par exemple . Le système attendra beaucoup plus longtemps avant d'essayer d'échanger des données sur le disque (consultez wikipedia:Paging#Swappiness). Cela peut être fait à la volée avec la commande sysctl vm.swappiness=10 (voir ) ou réglé définitivement, en utilisant un fichier de configuration (voir ) comme :
  • Augmenter le nombre maximum de vérifications sur les fichiers (par défaut à ) à par exemple 600000, que inotify surveille pour votre utilisateur, peut aider avec les applications, qui nécessitent de nombreuses accès simultanés aux fichiers (telles que les DAWs). Cela peut une fois encore être fait à la volée avec la commande ou dans un fichier de configuration dédié :

Vous pouvez aussi maximiser le minuteur (timer) de la latence de la carte son PCI et augmenter le minuteur de la latence de tous les autres périphériques PCI (64 par défaut).

$ setpci -v -d *:* latency_timer=b0
# setpci -v -s $SOUND_CARD_PCI_ID latency_timer=ff

Par exemple .

Le SOUND_CARD_PCI_ID peut être obtenu ainsi :

Liste de vérifications

Les étapes ci-dessous servent principalement à vérifier que votre système multimédia fonctionne :

  • Avez-vous réglé le son correctement ? Consultez ALSA ou OSS.
$ speaker-test
  • Est-ce que PulseAudio, OSS ou autre chose s'accapare mon matériel ?
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*

-OU-

$ fuser -fv /dev/snd/pcm* /dev/dsp*  
  • Est-ce que PAM-security et realtime fonctionnent correctement ?

Voir : Realtime for Users#PAM-enabled login (Soyez particulièrement attentif, surtout si vous n'exécutez pas SDDM, GDM ou Slim.)

  • Ai-je redémarré après avoir fait tout cela ?

JACK

L'objectif est de trouver la meilleure combinaison possible de taille de tampon et de nombre de périodes, compte tenu du matériel dont vous disposez. Frames/Period = 256 est un bon point de départ. Pour les périphériques embarqués et USB, essayez Periods/Buffer = 3. Les valeurs communément utilisées sont : 256/3, 256/2, 128/3.

De plus, la fréquence d'échantillonnage doit correspondre à la fréquence d'échantillonnage du matériel. Pour vérifier les taux d'échantillonnage et les débits binaires pris en charge par votre appareil :

$ cat /proc/asound/card0/codec#0

Remplacer card0 et codec#0 en fonction de votre matériel. Cherchez rates ou VRA dans Extended ID. La fréquence d'échantillonnage commune à de nombreux appareils d'aujourd'hui est la suivante 48000 Hz. D'autres fréquences courantes sont 44100 Hz et 96000 Hz.

Presque toujours, lorsqu'il s'agit d'enregistrer ou de séquencer avec du matériel externe, realtime est indispensable. De plus, vous voudrez peut-être définir une priorité maximale (au moins 10 de moins que les limites du système définies dans /etc/security/limits.d/99-realtime-privileges.conf ; la plus élevée est pour le périphérique lui-même).

Commencez par jack avec les options que vous venez de découvrir :

$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3

, , et peuvent tous être utilisés comme interfaces graphiques pour contrôler l'état de JACK et simplifier sa configuration.

Lecture supplémentaire : Article de Linux Magazine

FireWire

Note: Il n'y a pas grand-chose à faire, car la plupart des choses ont été automatisées, notamment avec l'introduction de la nouvelle pile FireWire, la dépréciation de HAL et une plus grande attention portée à udev. Vous ne devriez pas avoir besoin de modifier les autorisations de l'appareil, mais si vous pensez que votre appareil ne fonctionne pas en raison de ces problèmes, procédez comme suit, regardez /lib/udev/rules.d/60-ffado.rules et si nécessaire, créez et mettez vos modifications dans /etc/udev/rules.d/60-ffado.rules.

JACK(2) est compilé avec FFADO, il suffit de l'installer avec le paquet .

Pour vérifier si vous avez des chances de faire fonctionner les périphériques FireWire :

  • Assurez-vous que les modules appropriés du noyau sont chargés :
# modprobe firewire-core firewire-ohci
  • Mon chipset est-il assez stable pour initialiser une interface ?

http://www.ffado.org/?q=node/622

  • Mon chipset est-il assez stable pour faire fonctionner une interface pleinement ?

Nous ne pouvons pas en être sûrs, en particulier pour ceux qui sont basés sur Ricoh (problème de multiplateforme). La plupart du temps, votre appareil fonctionnera bien, mais vous serez parfois confronté à de drôles de bizarreries. Pour les malchanceux, ce sera l'enfer.

Jack Flash

Si après avoir configuré Jack, vous constatez que Flash n'a pas d'audio.

Afin de faire fonctionner Flash avec Jack, vous devrez installer le paquet .

Vous pouvez également utiliser une méthode plus souple pour permettre aux programmes Alsa (y compris Flash) de jouer du son pendant que jack est en cours d'exécution :

D'abord vous devez installer le plugin jack pour Alsa en installant le paquet . Activez-le en éditant (ou créant) (paramètres généraux du système) pour avoir ces lignes :

Vous n'avez pas besoin de redémarrer votre ordinateur ou quoi que ce soit. Il suffit de modifier les fichiers de configuration d'ALSA, de démarrer Jack.

Script Quickscan pour JACK

La plupart des gens voudront probablement faire fonctionner JACK en mode temps réel, il y a cependant beaucoup de boutons à presser pour y parvenir.

Un excellent moyen de diagnostiquer rapidement votre système et de découvrir ce qui lui manque pour que JACK fonctionne correctement en mode temps réel est d'exécuter le script Quickscan.

git clone git://github.com/raboof/realtimeconfigquickscan.git
cd realtimeconfigquickscan
perl ./realTimeConfigQuickScan.pl

Le résultat devrait vous indiquer les lacunes de votre système et vous indiquer les endroits où trouver plus d'informations.

Effets de bureau et JACK

Outre les facteurs énumérés dans la section Configuration du système ci-dessus, ainsi que les paramètres vérifiés par realTimeConfigQuickScan.pl, il convient également de noter que les environnements de bureau peuvent provoquer des xruns et donc des problèmes audio avec JACK, en particulier les environnements gourmands en mémoire/processus et les bureaux qui utilisent des effets de bureau composés. Il est recommandé de désactiver les effets de bureau lorsque vous utilisez JACK. Vous obtiendrez probablement le moins de xruns et les meilleures performances en utilisant un bureau léger ou un simple gestionnaire de fenêtres.

Example configuration générale

Un exemple de configuration générale est JACK Audio Connection Kit#A shell-based example setup.

Noyau temps réel

Depuis un certain temps, le noyau Linux de base s'est révélé adéquat pour les utilisations en temps réel. Le noyau de base (avec , défaut dans Arch) peut fonctionner avec une latence de 10 ms dans le pire des cas (temps entre le moment où une interruption se produit dans le matériel et le moment où le fil d'interruption correspondant s'exécute), bien que certains pilotes de périphériques puissent introduire une latence bien pire que celle-là. Ainsi, en fonction de votre matériel et de votre pilote (et de vos besoins), vous pouvez vouloir un noyau avec des capacités temps réel dures.

Le correctif RT_PREEMPT d'Ingo Molnar et Thomas Gleixner est une option intéressante pour les applications en temps réel difficiles et fermes, allant de l'audio professionnel au contrôle industriel. La plupart des distributions Linux spécifiques à l'audio sont livrées avec ce correctif appliqué. Un noyau préemptible en temps réel permettra également d'ajuster les priorités des processus de gestion des IRQ et de garantir un son fluide, quelle que soit la charge.

Si vous compilez votre propre noyau, n'oubliez pas que la suppression des modules/options n'équivaut pas à un noyau "plus léger et plus méchant". Il est vrai que la taille de l'image du noyau est réduite, mais dans les systèmes actuels, ce n'est pas un problème aussi important qu'en 1995.

De toute façon, vous devez également vous assurer que :

  • Timer Frequency et réglé sur 1000Hz (CONFIG_HZ_1000=y; si vous ne faites pas de MIDI vous pouvez ignorer ça)
  • APM est DISABLED (CONFIG_APM=n; Problème avec certains matériels - par défaut pour x86-64)

Si vous voulez vraiment un système allégé, nous vous suggérons de suivre votre propre voie et d'en déployer un avec static /devs. Vous devriez cependant définir l'architecture de votre processeur. La sélection de "Core 2 Duo" pour le matériel approprié permettra une bonne optimisation, mais pas autant que si vous optimisiez vous même.

Problème(s) général(aux) avec les noyaux (en temps réel) :

  • Hyperthreading (si vous suspectez, désactivez dans le BIOS)

Des noyaux corrigés prêts à être exécutés/compilés sont disponibles dans ABS et AUR.

Note: Avant de vous décider à utiliser un noyau modifié, regardez http://jackaudio.org/faq/realtime_vs_realtime_kernel.html.

AUR

À partir d'AUR, vous avez les options suivantes :

Les deux premiers sont des noyaux standards avec le correctif CONFIG_PREEMPT_RT, tandis que -ice inclut des correctifs que certains peuvent considérer comme désagréables, alors que pour d'autres c'est une bénédiction.

Voir: Wiki Linux temps réel

MIDI

Pour diminuer la gigue MIDI lors de l'utilisation d'un équipement MIDI externe, l'option -Xalsarawmidi de jack2 doit être utilisée. Pour ce faire, vous devez également utiliser a2jmidid.

Avec alsa-midi-latency-test vous pouvez tester la gigue que vous obtenez. Les cartes PCI et PCIe sont généralement bien meilleures que les dispositifs MIDI USB.

Pour travailler avec MIDI, il est fortement recommandé d'installer a2j (), un pont entre alsa midi et jack midi. Il vous permet de connecter des applications qui ne communiquent qu'avec alsa midi à des applications qui n'utilisent que jack midi. Laditray peut également démarrer/arrêter a2j.

Voir : JACK Audio Connection Kit#Using MIDI devices

Variables d’environnement

Si vous installez des éléments dans des répertoires non standard, il est souvent nécessaire de définir des variables de chemin d'accès à l'environnement afin que les applications sachent où chercher (pour les plug-ins et autres bibliothèques). Cela ne concerne généralement que VST (Virtual Studio Technology), car les utilisateurs peuvent avoir un emplacement Wine ou Windows externe.

En général, nous n'avons pas de plug-ins Linux (LADSPA, LV2, DSSI, LXVST) au-delà des chemins standard, il n'est donc pas nécessaire de les exporter. Mais si vous le faites, assurez-vous d'inclure également ces chemins standard car Arch ne fait rien pour dssi ou ladspa, et certaines applications comme dssi-vst ne regarderont pas ailleurs si elles trouvent des chemins prédéfinis.

Trucs et astuces

  • Désactivez le WiFi et fermez tous les programmes qui n'ont pas besoin d'être ouverts lors de l'enregistrement, comme les navigateurs. De nombreuses personnes ont signalé que la désactivation du WiFi a permis d'obtenir des performances JACK plus fiables.
  • Certains matériels audio USB sont connus pour ne pas fonctionner correctement lorsqu'ils sont branchés sur des ports USB 3. Essayez plutôt les ports USB 2/1.
  • Des problèmes d'IRQ peuvent survenir et causer des problèmes. Un exemple est le matériel vidéo qui réserve le bus, provoquant des interruptions inutiles dans le chemin d'E/S du système. Voir la discussion à FFADO IRQ Priorities How-To. Si vous avez un noyau en temps réel ou un noyau récent, vous pouvez utiliser pour ajuster les priorités des threads de gestion des IRQ.
  • N'utilisez pas le daemon irqbalance, ou faites le avec précaution .
  • Si vous avez besoin d'utiliser plusieurs périphériques audio avec JACK2, les utilitaires alsa_in et alsa_out peuvent être utilisés pour envelopper des périphériques supplémentaires et les faire apparaître comme sorties dans la baie de brassage JACK.
  • Certains daemon/processus peuvent provoquer de façon inattendue des xruns. Si vous n'en avez pas besoin, tuez-les, sans vous poser de question.
$ ls /var/run/daemons
$ top # ou htop, ps aux, ce qui vous convient le mieux
$ killall -9 $processname
# systemctl stop $daemonname
  • Si vous rencontrez beaucoup de xruns, surtout avec , désactivez l'accélération de votre GPU. Cela peut être fait via la fenêtre de contrôle de la carte et pour nvidia, c'est "prefer maximum performance" (grâce à un post dans LAU par Frank Kober ).

Matériel

La majorité des cartes son et des périphériques audio fonctionneront sans configuration ni paquet supplémentaire, seulement paramétrer la carte son utilisée par JACK et de redémarrer.

Ce n'est pas vrai pour tous les périphériques, et donc les cas particuliers sont également listés.

M-Audio Delta 1010

Les cartes de la série Delta de M-Audio sont basées sur la puce audio VIA Ice1712. Cette puce nécessite l'installation du paquet alsa-tools car il contient le programme envy24control. Ce programme est un mélangeur/contrôleur de niveau matériel qui remplacera alsa-mixer et vous épargnera quelques soucis. Notez que cette section n'a aucune information sur la configuration ou l'utilisation de MIDI.

Ouvrez l'application mélangeur/contrôleur :

$ envy24control

Cette application peut être plus que déroutante ; voir envy24control pour des conseils sur son utilisation. Ceci dit, voici une configuration de travail très simple pour le multipiste avec Ardour.

  1. Dans les onglets "Monitor Inputs" et "Monitor PCMs", réglez toutes les entrées de monitoring et les PCMs de monitoring à environ 20.
  2. Dans l'onglet "Patchbay / Router", réglez tout sur la sortie PCM.
  3. Dans l'onglet "Hardware Settings", vérifiez que le paramètre Master Clock correspond à celui défini dans Qjackctl. S'ils ne correspondent pas, vous aurez des décrochages hors de contrôle !

M-Audio Fast Track Pro

La Fast Track Pro de M-Audio est une interface audio USB 4x4, travaillant à 24bit/96kHz. En raison de la limitation de l'USB 1, cet appareil nécessite une configuration supplémentaire pour avoir accès à toutes ses fonctionnalités. L'appareil fonctionne dans l'une des deux configurations suivantes :

  • Configuration 1, ou mode "Class compliant" - avec une fonctionnalité réduite, seulement 16bit, 48kHz, entrée analogique (2 canaux) et sortie numérique/analogique (4 canaux).
  • Configuration 2 - avec accès à toutes les fonctionnalités de l'interface.

Actuellement, avec le noyau de base, il fonctionne dans la configuration 2, mais si vous voulez vous assurer dans quel mode vous êtes, vous pouvez vérifier le journal du noyau pour les entrées :

usb-audio : La Fast Track Pro passe en configuration 2
usb-audio : Fast Track Pro config OK

L'interface nécessite également une étape supplémentaire de configuration pour changer de mode. Elle est effectuée à l'aide de l'option pendant le chargement du module. La méthode recommandée pour configurer l'interface est d'utiliser le fichier  :

vid et sont les id vendeur et produit pour la M-Audio Fast Track Pro, est le numéro du dispositif souhaité et est la configuration du dispositif souhaité. les valeurs possibles pour sont :

device modes
device_setup valuebit depthfrequencyanalog outputdigital outputanalog inputdigital inputIO mode
0x016 bit48kHz++++4x4
0x924 bit48kHz+++-2x4
0x1324 bit48kHz++-+2x4
0x524 bit96kHz****2x0 or 0x2

Le mode 24 bit/96kHz est spécial : il fournit toutes les entrées/sorties, mais vous ne pouvez ouvrir qu'une des 4 interfaces à la fois. Si vous ouvrez par exemple une interface de sortie et essayez ensuite d'ouvrir une deuxième interface de sortie ou d'entrée, vous verrez une erreur dans le journal du noyau :

cannot submit datapipe for urb 0, error -28: not enough bandwidth

ce qui est parfaitement normal, car il s'agit d'un périphérique USB 1 et il ne peut pas fournir une largeur de bande suffisante pour prendre en charge plus d'une seule destination/source (2 canaux) de cette qualité à la fois.

En fonction de la valeur de , deux périphériques seront configurés : et hwYYY:1, qui contiendront les entrées et sorties disponibles. Le premier dispositif est le plus susceptible de contenir une sortie analogique et une entrée numérique, tandis que le second contiendra une entrée analogique et une sortie numérique. Pour savoir quels périphériques sont liés et où et s'ils sont correctement configurés, vous pouvez vérifier . Vous trouverez ci-dessous une liste de points de terminaison importants qui vous aideront à identifier correctement les connexions de la carte (il est facile de confondre les connexions d'entrée et de sortie analogiques et numériques avant de s'habituer au dispositif) :

EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)
EP 6 (digital input = S/PDIF input on back)

Ce fichier .asoundrc permet d'utiliser des entrées/sorties 24 bits sur le fast-track pro (et je suis sûr qu'il pourrait être modifié pour fonctionner avec d'autres périphériques usb 3-byte) dans le contexte de l'interface 32 bits de jack tout en routant le trafic alsa par défaut vers les sorties jack de l'interface audio. Alsa sera en mode S24_3BE mais jack peut brancher des données S32_LE dans et hors de l'interface et d'autres programmes alsa pourront brancher presque n'importe quoi dans jack.

PreSonus Firepod

  1. Startup : Soit à partir de la ligne de commande ou de QjackCtl, le pilote s'appelle firewire.
  2. Specs : La carte contient 8/8 XLR préamplifiés plus une paire stéréo, au total 10 canaux.
  3. Liaison : Les cartes peuvent être reliées entre elles sans aucun problème.
  4. Réglages du matériel : Rien de particulier, modifiez les réglages dans QjackCtl selon vos goûts.

Les niveaux de volume sont matériels et le routage peut être fait par QjackCtl, même avec plus de cartes reliées ensemble, ce n'est pas un problème. Le ffadomixer ne fonctionne pas encore avec cette carte, espérons que dans le futur nous pourrons contrôler plus d'aspects de la carte à travers une interface logicielle comme celle-ci.

PreSonus AudioBox USB

  1. Startup : Elle est appelée "USB" par ALSA.
  2. Caractéristiques : Deux entrées mono TRS+XLR, deux sorties mono TRS, entrée et sortie MIDI, plus une prise casque stéréo séparée. Boutons de contrôle pour les deux entrées, pour la sortie principale et pour le casque, quatre en tout.
  3. Matériel : Fonctionne très bien, aussi bien en audio qu'en MIDI. Aucun contrôle de mixage logiciel.

Tascam US-122

Cela ne s'applique pas au modèle US-122L

  1. Paquets requis :
  2. Règles udev : créer le fichier de règles suivant, puis recharger les règles udev, Udev#Loading new rules
/etc/udev/rules.d/51-tascam-us-122.rules
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"

Brancher le matériel. L'appareil devrait maintenant fonctionner, il n'y a pas de contrôle de mixage de logiciel.

RME Babyface

Fonctionne très bien à faible latence (~5ms) avec , et . L'exécution avec ALSA uniquement et le noyau standard peut provoquer des craquements à des latences plus faibles.

Pour être reconnu et fonctionner, la version du firmware de la Babyface doit être >= 200, ce qui introduit le mode Class Compliant. Pour entrer dans le mode Class Compliant, maintenez les boutons "Select" et "Recall" tout en connectant la Babyface à l'ordinateur via USB. Elle devrait maintenant être reconnue.

Pour vérifier si elle est reconnue :

$ grep -i baby /proc/asound/cards

Pour plus d'informations sur le mode Class Compliant, visitez le site web de RME, ils ont un PDF qui couvre toutes les fonctionnalités.

La Babyface n'a pas besoin d'un réglage spécial de JACK. Mais si vous voulez utiliser l'entrée/sortie MIDI intégrée, vous devez régler le "MIDI Driver" sur "seq" et éventuellement désactiver "Enable Alsa Sequencer Support" pour l'utiliser en combinaison avec d'autres dispositifs MIDI (un clavier MIDI USB par exemple).

Logiciel à accès restreint

Les SDK de Steinberg

C'est très clair - nous ne pouvons distribuer ni les en-têtes VST ni les en-têtes ASIO sous forme de paquet binaire. Cependant, lorsque vous compilez un programme qui hébergerait des plug-ins VST Windows .dll, vérifiez les indications suivantes (qui ne nécessitent pas l'utilisation d'un SDK) :

  • dssi-vst
  • fst
  • vestige

Ceci dit, si vous compilez un programme qui hébergerait des plug-ins VST natifs .so, alors il n'y a pas d'échappatoire. Pour de tels cas, Arch nous permet encore une fois de maintenir une base de données logicielle locale uniforme. Nous pouvons "installer" le SDK "dans tout le système" - vous devez simplement le télécharger vous-même et le placer dans le répertoire d'empaquetage.

Obtenez-les depuis AUR

Note : Steinberg n'interdit pas la redistribution des produits résultants, ni ne dicte la licence sous laquelle ils peuvent être utilisés. Il existe de nombreux plug-ins VST sous licence GPL. En tant que tel, la distribution de paquets binaires de logiciels compilés avec ces en-têtes restreints n'est pas un problème, car les en-têtes sont simplement des dépendances de compilation.

Nouvelles de Linux et Arch Linux Pro Audio

Listes de diffusion

  • Arch Linux Pro-audio Discussions à propos de multimédia en temps réel, incluant l'audio et la vidéo (semi-)professionnelle.
  • Linux Audio Developer La liste de diffusion Linux relative à l'audio (semi-)professionnelle avec beaucoup de fréquentation et une énorme communauté d'abonnés composée principalement de développeurs.
  • Linux Audio User La liste de diffusion Linux relative à l'audio (semi-)professionnelle avec beaucoup de fréquentation et une énorme communauté d'abonnés composée d'utilisateurs et de développeurs.

IRC

  • #archlinux-proaudio - Canal Arch Linux pro-audio
  • #lau - Canal général Linux Audio pour les utilisateurs
  • #lad - Canal général Linux Audio pour les développeurs
  • #jack - Développement et assistance relatifs au système audio JACK
  • #lv2 - Développement et assistance relatifs au format de plugin LV2
  • #ardour - Discussion et assistance relatifs au séquenceur Ardour
  • #opensourcemusicians - Grand canal de discussion général pour les musiciens OSS

Voir aussi

gollark: "BASED" means "good", according to my sources.
gollark: I don't think they said that.
gollark: ???
gollark: Also multiple marriages.
gollark: While we're at it, let's also allow transitive and nontransitive marriages, and unidirectional marriages, because why not.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.