// -*- mode: adoc; -*- // SPDX-License-Identifier: LAL-1.3 or CC-BY-SA-4.0 :lang: fr :toc-title: Table des Matières :last-update-label: Dernière mise à jour :warning-caption: Attention = Manuel de l'utilisateur Jean Pierre Cimalando, Olivier Humbert v1.2 :toc: [.Lead] Ce manuel documente l'utilisation du programme ADLplug, le synthétiseur à modulation de fréquence (FM) basé sur la technologie OPL3. + ADLplug est un logiciel libre et gratuit. + Si le logiciel présente un problème, merci de déposer un rapport sur la page de projet : + https://github.com/jpcima/ADLplug == Description ADLplug est un synthétiseur FM, construit sur le standard OPL3 développé par Yamaha. La réalisation de cette synthèse est basée sur une émulation fidèle du circuit intégré YMF262. Le circuit YMF262 est aussi appelé OPL3. Le circuit est capable de synthèse FM en 2 ou 4 opérateurs, pour une polyphonie allant de 6 à 18 voix, variant selon les conditions d'usage. Il permet de travailler avec 6 algorithmes et 8 formes d'ondes. À l'aide de ce greffon, on peut piloter par entrée MIDI un nombre au choix de circuits YMF262 virtuels. Cela permet de réaliser des configurations à haut niveau de polyphonie, qui sont difficiles voire impossibles à obtenir sur du vrai matériel. Par ailleurs, le programme est capable d'utiliser une multitude de banques d'instruments, dont une collection est préchargée. La compatibilité General MIDI permet la synthèse de pistes multiples simultanées sur un même instrument. == Installation Le projet met à disposition des téléchargements pour les systèmes Windows, Mac et Debian. + https://github.com/jpcima/ADLplug/releases À défaut de disposer d'une version téléchargeable pour son système d'exploitation, il faudra récupérer le code source et le construire soi-même. Visitez alors la page d'accueil du projet, et suivez les étapes de construction indiquées. Dès lors qu'on dispose d'un fichier en format VST ou LV2, il faut rendre celui-ci reconnaissable par les logiciels musicaux. On peut le déposer dans un des chemins reconnus par la plupart des logiciels. - Windows : C:\Program Files\Steinberg\VSTPlugins - Mac : Library/Audio/Plug-ins/VST - GNU/Linux et autres : /usr/lib/vst, /usr/lib/lv2 , /usr/local/lib/vst, /usr/local/lib/lv2 , ~/.vst , ~/.lv2 == Utilisation À l'ouverture de l'éditeur, une fenêtre s'affiche, contenant une multitude de contrôles et afficheurs. .La fenêtre d'édition image::../resources/screen.png[500,500] Le disposition de l'éditeur est la suivante : - au coin supérieur gauche, on trouve la sélection des banques et des programmes et le canal MIDI associé ; - au coin supérieur droit, on trouve le paramétrage des circuits YMF262 virtuels ; - au centre, on trouve l'ensemble des contrôles manipulant le programme actuellement sélectionné, qui se constitue des parties : Opérateur, Algorithme, Ton, et Divers ; - au coin inférieur droit, on trouve la partie Globale, paramètres s'appliquant à l'ensemble des programmes d'une banque ; - en bas, on dispose d'un clavier virtuel pour jouer le programme actuellement sélectionné. === Démarrage rapide Une banque par défaut en algorithmes 2 opérateurs est chargée initialement dans l'instrument. Pour obtenir ses premiers sons avec ADLplug, rien n'est plus simple : il suffit de connecter un clavier en MIDI et de jouer immédiatement. Le principe de General MIDI s'applique : les canaux MIDI, à l'exception du 10, sont associés chacun à leur instrument mélodique, et le 10 est associé aux instruments percussifs. On peut basculer sur une banque de son choix parmi celles de la collection préchargée. Pour cela, on clique sur image:../resources/emoji_u1f4c2.png[24,24] puis on visite le sous-menu "Charger depuis la collection". === Les algorithmes Pour comprendre l'édition des programmes, il convient de poser quelques notions propres à la synthèse FM, et d'autres spécifiques à l'OPL3. La synthèse FM, ou modulation de fréquence, fait appel à des arrangements d'oscillateurs, que l'on appelle pour l'occasion des opérateurs. On désigne un tel arrangement par le terme d'algorithme, dans lequel les opérateurs jouent chacun soit le rôle d'une modulatrice, soit d'une porteuse. - une porteuse produit le signal qui est destiné à la sortie audio ; - une modulatrice applique des changements rapides de fréquence sur l'opérateur qu'elle module, qui est le plus souvent une porteuse, mais peut être aussi une autre modulatrice. Moduler un opérateur en fréquence modifie son spectre, en l'enrichissant d'une multitude d'harmoniques. Les algorithmes de l'OPL3 appartiennent à 3 classes : - les algorithmes à 2 opérateurs : les 2op - les algorithmes à 4 opérateurs : les 4op - les algorithmes pseudo 4 opérateurs : les pseudo-4op ou 2x2op Le pseudo-4op se définit simplement comme une paire de voix 2op jouées à l'unisson. Dans ce mode, une particularité est qu'il est possible d'appliquer un décalage tonal à la seconde voix par rapport à la première. .Les algorithmes image::../resources/algorithm.png[200,200] Dans l'éditeur, on choisit d'abord la classe d'algorithme désirée parmi les 3. Voici comment interpréter les boutons FM et AM  qui déterminent l'algorithme : - en 2op, seule la paire 1-2 est considérée, 3-4 est ignorée ; - en 4op, toutes deux sont prises en compte ; - en pseudo-4op, la paire 1-2 s'applique à la première voix, 3-4 s'applique à la seconde. En connaissance de cela, la référence des algorithmes, obtenue par un clic sur "?", affiche le schéma de connexion correspondant à toute combinaison de FM et AM. - lorsque le mode choisi est 2op ou pseudo-4op : .Les algorithmes à 2 opérateurs image::../resources/algo2op.png[270,270] - lorsque le mode choisi est 4op : .Les algorithmes à 4 opérateurs image::../resources/algo4op.png[600,600] Le schéma se lit ainsi : tout bloc désigné de 1 à 4 est un opérateur. Tout opérateur de la rangée d'en bas joue le rôle de porteuse, tout autre joue le rôle de modulatrice. Le schéma met également en évidence la boucle de rétroaction sur l'opérateur 1. Au sujet de la rétroaction, il est possible de contrôler la quantité de signal réinjectée par un opérateur 1 sur lui-même : ceci est contrôlé par les paramètres "Retour 1-2", "Retour 3-4". + Remarque : "Retour 3-4" n'est effectif que sur la seconde voix des instruments pseudo-4op, dans les autres cas il est sans effet. .Le ton image::../resources/tuning.png[200,200] Du côté du réglage du ton, "Décalage de note" désigne le décalage appliqué à la note jouée, exprimé en demi-ton. Le "Réglage fin" est un décalage supplémentaire exprimé en centièmes de demi-ton. + Remarque : "Décalage de note 3-4" et "Réglage fin 3-4" ne sont effectifs que sur la seconde voix des instruments pseudo-4op, dans les autres cas ils sont sans effet. La "Note percussive" désigne la note qui sera jouée, dans le cas ou l'instrument serait utilisé comme percussion. === La polyphonie Le programme joue sur les 18 canaux à usage général du circuit OPL3. + Chacun de ces canaux peut accueillir une voix d'instrument en 2op. Dès qu'il est question d'instruments plus complexes, ça se complique un peu. - Pour un instrument en pseudo-4op, il y a 2 canaux occupés par voix, assignés de la même manière qu'en 2op. Par rapport à 2op, cela double simplement la consommation de capacité de polyphonie. Un circuit pourrait donc s'accommoder de 9 voix en pseudo-4op. - Pour un instrument en 4op, il y a également 2 canaux occupés par voix, mais ces canaux ne peuvent pas être pris n'importe comment. Ils doivent être réservés comme canaux 4op, et sont au maximum de 12 par circuit, pour 6 voix d'instrument 4op. .Réservation des canaux 4op image::../resources/voices4op.png[400,400] Voici un exemple illustratif du principe. Ici, nous avons 2 circuits OPL3 à 18 canaux chacun. Nous avons réservé 8 voix en mode 4op. Ces voix se composent de 2 canaux chacune, l'un coloré en rouge et l'autre en bleu. Au total, cela fait 16 canaux réservés au 4op. Les canaux restants en gris, au nombre de 20, sont disponibles pour 2op et pseudo-4op, laissant à ces derniers une polyphonie de 20 ou 10 voix respectivement. .Les circuits image::../resources/chip.png[180,180] La polyphonie se contrôle au moyen des paramètres "Circuits" et "4 ops". En ce qui concerne "4 ops", nous pouvons désormais comprendre de quoi il s'agit : la quantité maximale de voix en 4op, ce qui ne peut dépasser 6 fois le nombre de circuits virtuels. En cliquant sur image:../resources/emoji_u1f4a1.png[24,24], on peut faire choisir au programme une quantité de "4 ops" automatiquement calculée, sur la base du nombre de circuits et de la banque chargée. Cette valeur sera simplement une suggestion, elle n'est pas à considérer comme optimale. WARNING: Lorsque la banque choisie utilise des instruments 4op, et que le nombre de voix 4op réservées est 0, ces instruments seront inaudibles. === L'arpeggio Le synthétiseur est doté d'une gestion polyphonique intelligente qui optimise la distribution des canaux. Néanmoins, lorsque la congestion est très grande et qu'il n'y a pas de place vacante pour loger une nouvelle voix, un mécanisme d'arpeggio se met en marche. L'arpeggio consiste à partager un canal entre 2 voix ou plus, en donnant tour à tour la propriété du canal à chaque voix lui étant associé. Cela peut créer une illusion de polyphonie, mais aussi une gêne auditive plus ou moins dérangeante selon le contexte où elle se déclenche. .Accord joué sur l'instrument "Clavecin", sans arpeggio audio::../resources/arpeggio-no.opus[] .Accord joué sur l'instrument "Clavecin", avec arpeggio audio::../resources/arpeggio-yes.opus[] L'arpeggio signale un défaut de polyphonie. Pour faire disparaître l'arpeggio, la solution consiste à augmenter soit la quantité de circuits, soit la quantité de voix 4op, selon le cas. === Les émulateurs Le programme permet de choisir un émulateur de circuit YMF262 parmi plusieurs qui sont disponibles. Il est possible de basculer de l'un à l'autre de manière dynamique. Durant le laps de temps nécessaire à réaliser la bascule, le son sera coupé et le flux MIDI non-traité. Cela ne perturbera pas pour autant le fonctionnement en temps réel. .Les émulateurs image::../resources/emulators.png[200,200] - DOSBox OPL : cet émulateur est un choix équilibré qui produit une sortie sonore de bonne fidélité, consommant une quantité de ressource processeur très raisonnable. - Nuked OPL : cet émulateur propose un excellent niveau de fidélité, aspirant à proposer une émulation quasi exacte et précise au cycle près. La consommation de ressource processeur est importante : il est donc plutôt recommandé de limiter son usage au cas d'un faible nombre de circuits, ou du rendu en différé. -- v1.7.4 est plutôt optimisé pour la vitesse de calcul. -- v1.8 améliore la fidélité de l'enveloppe ADSR, mais il est plus gourmand en ressource processeur. - Opal OPL3 : cet émulateur est moins précis que les deux précédents, ne gère pas les 5 canaux rhythmiques dédiés, mais provient du fameux logiciel Reality Adlib Tracker. Il pourrait reproduire les particularités sonores de ce séquenceur de type "tracker". - Java : une autre alternative, un version expérimentale d'abord réalisée avec Java. === Les opérateurs Les opérateurs, au nombre de 4, et quels que soient leur rôle de modulatrice ou porteuse, présentent un paramétrage semblable. .Un opérateur image::../resources/operator.png[270,270] ==== Forme d'onde Le premier paramètre est la forme d'onde de l'oscillateur, situé au coin inférieur gauche. On peut choisir une forme d'onde parmi 8 disponibles. . sinus . demi-sinus . sinus redressé . sinus-impulsion, ou "quart de sinus" . sinus - périodes paires uniquement . sinus redressé - périodes paires uniquement, ou en anglais "camel sine" . carré . carré dérivé, ou "dent de scie logarithmique" ==== Enveloppe Le générateur d'enveloppe se contrôle au moyen des quatre potentiomètres étiquetés "ADSR". + L'enveloppe est une variation d'amplitude au fil du temps qui applique un volume à l'oscillateur. .Enveloppe ADSR image::../resources/adsr.svg[250,250] Les paramètres d'attaque "A" et de déclin "D" sont les durées des étapes "A" et "D" correspondantes. Le paramètre "S" est le niveau de volume correspondant au maintien, une étape active une fois "A" et "D" passées, et tant que la touche du clavier reste enfoncée. De plus, si le fanion "Maintien" est désactivé, l'étape "S" est simplement outrepassée et il y a un passage direct de "D" à "R", faisant alors de l'enveloppe non plus une "ADSR" mais une "ADR". Le relâchement "R" fait suite à l´étape précédente et son paramètre désigne une durée, comme précédemment avec "A" et "D". ==== Fanions Les fanions "Tremolo" et "Vibrato" appliquent des modulations sur l'opérateur, qui affectent respectivement le volume et la fréquence. Le "Maintien" rend active ou inactive la phase "S" du générateur d'enveloppe. Se référer à l'explication concernant les enveloppes. Le "Suivi de clavier" permet d'activer un raccourcissement de la durée de l'enveloppe en fonction de la hauteur de note. ==== Niveaux Le niveau de sortie "Nv" détermine le volume appliqué globalement à l'opérateur. Il est à noter qu'il n'y a pas de volume zéro, un opérateur pourra toujours se faire entendre, même faiblement, au niveau de signal le plus bas. Le multiplicateur de fréquence "F*" élève le ton de l'opérateur d'un nombre d'octaves correspondant approximativement à sa valeur. Le taux de suivi de clavier "Tsc" est une valeur indicant la quantité de variation appliquée à la durée d'enveloppe en fonction de la hauteur de note. Les valeurs du paramètre correspondent aux atténuations suivantes : - "0" ne produit aucune atténuation ; - "1" atténue de 3.0 décibels par octave ; - "2" atténue de 1.5 décibels par octave ; - "3" atténue de 6.0 décibels par octave. === Les autres paramètres Les paramètres restants se classifient en deux groupes : Divers et Globaux. Un paramètre divers fait partie du programme actif dans l'éditeur. A contrario, un paramètre global fait partie de la banque et il s'applique à tous les programmes. .Paramètres divers image::../resources/misc.png[200,200] Le "Décalage de vélocité" est un modificateur fixe appliqué à la vélocité de base de notes en MIDI, des valeurs comprises dans l'intervalle [0, 127]. Une valeur positive augmente la vélocité, une valeur négative la diminue. .Paramètres globaux image::../resources/global.png[230,230] Les fanions "Tremolo augmenté" et "Vibrato augmenté" rendent les effets correspondants plus prononcés, dans le cas où ils sont actifs. Les taux d'augmentation sont des valeurs non-réglables qui sont spécifiques à la conception du circuit YMF262, et sont définies comme ceci : - Le tremolo ordinaire module l'amplitude de 1.0 dB - Le tremolo augmenté module l'amplitude de 4.8 dB - Le vibrato ordinaire module la fréquence de 7 cents (7 centièmes de demi-ton) - Le vibrato augmenté module la fréquence de 14 cents Le "Modèle de volume" désigne une formule qui transforme les paramètres discrets associés au volume en valeurs de gain effectives. Dans la plupart des cas, le modèle générique fera l'affaire. En revanche, lorsqu'il s'agit de charger des banques provenant d'autres logiciels, il faut choisir la formule qui reproduit bien le fonctionnement du logiciel original. Par exemple, si on charge une banque issue du jeu vidéo Doom, il conviendra de choisir le modèle DMX ; pour Duke Nukem 3D, le modèle approprié sera Apogee. == À propos ADLplug est un logiciel développé par Jean Pierre Cimalando en 2018. + Il est basé sur un travail préalable de plusieurs groupes de personnes. Les émulations de YMF262 sont développées par : - L'équipe DOSBox. - Alexey Khokholov (Nuke.YKT) pour Nuked OPL, et Alexander Troosh pour ses optimisations sur la v1.7.4. - Robson Cozendey pour le Java OPL original, converti plus tard en C++ par Randy Heit. - Le groupe de démo Reality des années 90 pour Opal. Le pilote MIDI qui interagit avec l'émulateur est un travail initial de Joel Yliluoma "Bisqwit". Au départ, ce programme, ADLMIDI, est un simple lecteur de fichiers MIDI. Vitaly Novichkov "Wohlstand" a réorganisé ADLMIDI en bibliothèque réutilisable, ajoutant les briques de base du pilotage MIDI en temps réel. Jean Pierre Cimalando a contribué une série d'améliorations qui rendent ce pilote plus utilisable pour un usage en MAO sous contraintes de temps réel. ADLplug est un logiciel réalisé avec un objectif : faciliter l'utilisation de la FM en OPL3 dans la MAO, qui représente une certaine niche de la création musicale "chiptune", en la rendant accessible au plus grand nombre de musiciens. Sont remerciés également : === Conception d'instruments - Sneakernets - Papiezak - Vitaly Novichkov === Artistes - Brian (linuxsynths.com) - Garvalf === Traduction - Olivier Humbert - Bruce Sutherland === Graphismes - Christopher Arndt