La metaFx est une surface de contrôle de transformations continues du son en temps réel au même titre que la metaSurface64. Comme elle, elle dispose à la fois de son propre générateur de boucles et d'un moteur FX multieffets, mais son fonctionnement est différent, en particulier pour la gestion des chaînes de greffons et les pavés.
Chaque mixeur de cette surface peut permettre de contrôler directement le gain et les greffons attachés. Il est possible également de contrôler les pistes d'un séquenceur externe (Ardour ou Reaper). Pour ce faire, l'application utilise des modules contrôlables par OSC qui proviennent de la librairie du langage Faust qui est embarqué dans l'application.
Ce programme a été testé avec Jack sous Linux / LibraZiK2.
Vous pouvez considérer la metaFX comme un synthétiseur qui transforme des sources audios en temps réel et en continu par le déplacement d'objets sur une surface.
Ce programme est sous licence GNU General Public License. Voir plus loin.
Une vidéo de présentation est disponible ici, ainsi que le texte de la présentation.
Ce programme requière :
Ce programme utilise aussi un utilitaire de Faust : le dynamic-jack-gtk qui doit être compilé avec l'application. Le code est fourni. Vous pouvez le trouver dans les sources de Faust
/faust/tools/benchmark
Avant de compiler, vous devez disposer d’un environnement de développement complet.
la metaFx dépend de SFML 2,4, glm 0,9,8, d’OpenGl et de Liblo ainsi que de boost_system et boost_filesystem que vous devez installer si vous ne l’avez pas déjà fait.
git clone https://github.com/dblanchemain/metaFx
make all
Ceci compilera la metaFx et le dynamic-jack-gtk. Si tout se passe bien vous pouvez finaliser en tapant :
sudo make install
Sous Linux, Debian/LibraZiK, ceci installe le programme dans le répertoire /usr/local. Le programme sera installé dans /usr/local/bin> et les fichiers complémentaires dans /usr/local/share>. Si vous précisez un dossier, l'installateur copiera les fichiers dans celui-ci en respectant la hiérarchie des dossiers. Le programme se lance en tapant dans un terminal :
/usr/local/bin/metaFx.sh
Dans le dossier
/usr/local/share/metaFx
vous trouverez les dossiers suivants :
Après un premier lancement, vous disposerez d'un fichier de configuration parsonnalisable dans votre dossier $HOME:
~/.config/metaFx/preferences.spc
Vous trouverez également ici un fichier de description des greffons externes.
Ce menu n'appelle pas de commentaires particuliers
Ces deux dernières entrées donnent accès à la documentation en ligne et à la licence.
Un mixeur est un générateur de son. L'audio associé correspond soit au fichier défini, soit à une entrée audio provenant de Jack.
Un clic droit dans un pavé fait apparaître cette fenêtre :
Cette case permet d'activer le routage vers un séquenceur externe, Ardour ou Reaper, en fonction des réglages dans les paramètres de l'application. La piste associée au pavé est définie par la case Track | |
Piste associée dans le séquenceur. | |
Le gain est modifié par le déplacement du curseur. Si vous décochez cette case, le gain ne sera plus modifié par le déplacement du mixeur alors que les greffons pourront disposer de paramètres toujours actifs. | |
Les cases GainMin et gainMax permettent de régler les valeurs limites du gain. | Le gain est modifié par le déplacement du curseur. Lorsque cette case est cochée, le gain augmente, sinon le gain diminue en se rapprochant du centre de la surface. | Par défaut (case cochée) le gain augmente lorsque le mixeur s'approche du centre de la surface. Lorsque cette case n'est pas cochée, le gain augmente lorsqu'un mixeur s'approche du centre d'un pavé et les deux sources audios sont fusionnées. Cela change le mode de fonctionnement de la surface. Le mode de calcul du gain peut être inversé. | Vous pouvez préciser le groupe auquel appartient ce pavé en sélectionnant un type de curseur particulier pour le mixeur. Cela peut être utile lorsque vous souhaitez des traitements par groupe comme les déplacements ou l'effacement. Vous disposez de 32 groupes possibles pour les mixeurs : |
La vitesse concerne la lecture du fichier audio associé au mixeur. Si cette case est cochée, elle pourra être modifiée dynamiquement par le déplacement du curseur. Elle induit une transposition. Vous pouvez, comme pour le gain, régler une vitesse minimale et une vitesse maximale. Il est également possible d'inverser le mode d'ajustement de celle-ci. | |
FX rend possible l'accès à la définition de la chaîne FX. Si cette case est décochée, les greffons seront désactivés, mais pas effacés. Vous pouvez les réactiver à tout moment en recochant la case. | |
Ceci ouvre une fenêtre qui permet de construire un graphe correspondant au traitement de l'audio. |
Création d'un nouveau mixeur. Un clique droit sur celui-ci vous permettra de préciser son fonctionnement. | |
Vous pouvez effacer le mixeur sélectionné, le groupe correspondant, ou tous les mixeurs. | |
En cliquant sur un de ces icones, vous pouvez préciser si vous souhaitez déplacer le mixeur sélectionné, le groupe de mixeurs correspondant ou tous les mixeurs. | |
Création d'un nouveau pavé. Un clique droit sur celui-ci vous permettra de préciser son fonctionnement. | Ce bouton permet d'activer ou non le moteur Faust pour les greffons. Lorsque vous activez la surface, un temps de latence d'une seconde est nécessaire pour redéfinir les valeurs des paramètres dynamiques. |
À défaut d'un autre nom, les pavés constituent un autre groupe de générateurs de son. Vous pouvez insérer un nouveau pavé en cliquant sur . Les pavés ne proposent pas de chaîne de transformations audios comme les mixeurs. Ils ne peuvent pas être déplacés losque l'interface Gtk est active. Cependant vous pouvez définir certains paramètres :
Echelle permet de définir la dimension relative (de 0.1 à 4.0) du pavé. Les autres paramètres sont identiques à ceux des mixeurs.
L'audio d'un pavé est activé lorsqu'un mixeur passe dessus avec un gain calculé en fonction de la distance du mixeur au centre du pavé. Si plusieurs mixeurs sont concernés, le gain est égal à la moyenne des gains des mixeurs.
Lorsque vous cliquez sur le bouton , une nouvelle fenêtre s'ouvre. Celle-ci vous propose au moins un bloc d'entrée et un bloc de sortie chacun avec un petit carré de connexion.
Tout graphe comporte au moins une entrée définie par un fichier ou une entrée de Jack et une sortie mono vers Jack.
Le menu Modules_Fx propose 23 greffons que vous pouvez placer sur votre graphe. Les modules doivent être reliés entre eux par des connecteurs. Ceux-ci sont dessinés en cliquant sur une sortie (boîte verte) d'un module et en glissant avec la souris vers une entrée (boîte rouge) d'un autre module. Il est possible d'avoir plusieurs connecteurs sur une entrée ou une sortie comme vous pouvez le voir sur l'image.
Vous pouvez supprimer une liaison en cliquant sur le connecteur. Vous pouvez supprimer également un module en cliquant sur la petite croix à droite, en haut de sa boîte. Les modules peuvent être déplacés sur toute la surface avec la souris.
Lorsqu'un module dispose de plusieurs sorties, cela implique un traitement parallèle des greffons. Lorsque vous enchaînez des blocs parallèles, vous devez veiller à ce que le nombre de sorties du premier bloc soit dans une relation de multiple avec le second bloc parallèle.
Le module PassThrough permet de conserver un signal sans transformation. Cela peut servir, entre autres, lorsque vous avez des problèmes de nombre de voix dans l'enchaînement de vos blocs.
Ceci permet des traitements plus riches que dans la metaSurface mais ces graphes peuvent être délicat à réaliser lorsqu'ils sont complexes.
Vous pouvez visualiser et entendre votre instrument en cliquant sur le bouton . Vous devez utiliser le bouton suivant pour arrêter le processus. Si vous vous contentez de fermer la fenêtre Gtk vous devrez malgré tout cliquer sur ce bouton pour pouvoir éditer à nouveau vos graphes.
Si, pour une raison ou une autre, l'interface Gtk n'apparaît pas lorsque que vous cliquez sur , vous devez avoir une erreur sur votre graphe. Si cela perdure, cliquez sur le bouton afin de réinitialiser votre graphe, et reconstruisez votre chaîne de traitement proprement en veillant aux relations entre les blocs de traitement parallèle.
Sur l'image de l'interface Gtk, vous pouvez voir nos greffons : DELAY et CUBIC ...(correspondant au module de distortion) traités en parallèle et le greffon Freeverb traité ensuite.
Tous les éléments de tous les graphes des mixeurs sont transformés en une expression compréhensible par Faust. Pour notre exemple :
tgroup("Mixer",hgroup("M0[0]",_:*(lgainp(0)):lmet<:
vgroup("v0",hgroup("h0",delay),hgroup("h1",dm.cubicnl_demo)):>
vgroup("v1",hgroup("h0",freeverb)):>_));
Le fichier DSP généré par la metaFx sera ensuite compilé pour fournir l'interface Gtk avec laquelle nous pourrons utiliser notre instrument en cliquant sur .
Plus les graphes seront complexes plus il y aura de latence et plus vous risquerez de faire décrocher votre système. En soi, la latence, lorsqu'on cherche à fabriquer de nouveau son, n'a pas d'importance, mais la charge DSP peut être critique.
En cliquant avec le bouton droit de la souris dans un module, vous pouvez disposez d'une nouvelle fenêtre dans laquelle vous pouvez définir les paramètres associés aux traitements dynamiques de votre module lors du déplacement de votre mixeur.
Pour qu'un paramètre soit actif il faut que la case qui suit son label soit activée. Sur notre exemple, seul le paramètre Delay est actif. Ainsi, lorsque vous déplacerez votre mixeur sur la surface, la valeur de ce paramètre sera modifiée en fonction des valeurs Min et Max. Le Ratio n'est pas utilisé pour l'immédiat. Par contre, Inv permet d'inverser le fonctionnement : la valeur diminuera lorsque le mixeur s'approchera du centre.
Le menu Externe sur la fenêtre d'un graphe permet d'accéder à un nouveau menu.
Pour être opérationnel, vous devez définir votre séquenceur et les paramètres de contrôle OSC dans les préférences.
La case Stan doit être cochée et le numéro de la piste renseigné pour votre séquenceur.
Lorsque vous cliquez sur Ajouter dans le menu, une fenêtre s'ouvre :
Si vous cliquez sur le petit triangle à droite, vous obtenez une liste de greffons. Vous pouvez définir jusqu'à 12 greffons externes parmis les 23 disponibles. L'ordre des greffons doit correspondre à celui du séquenceur. L'icone permet de préciser les contraintes pour ce greffon.
Si vous cliquez sur Nouveau dans le menu, cette fenêtre s'ouvre :
Le nom du nouveau greffon externe doit être renseigné en haut. Ensuite vous pouvez préciser les paramètres en définissant, pour chacun, le label, le numéro de paramètre dans le greffon, la valeur minimale et la valeur maximale. Vous devez valider ce tableau. Le nom de ce nouveau greffon apparaîtra ensuite dans la liste des greffons externes.
La fenêtre Préférence vous permet de définir le séquenceur que vous utilisez et les parmètres de fonctionnement de la liaison OSC.
This Architecture section is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; If not, see http://www.gnu.org/licenses.
EXCEPTION : dbmeter license : "BSD".