MultiSpace3D est un spatialiseur 3D essentiellement pour Linux. Il repose sur une API générée à partir des exemples fournis sur le site consacré au langage Faust du Grame.
Attention, cette nouvelle version n'est pas compatible avec la version 0.5 du space3D64.
Le principe de base est de disposer d’un outil permettant de placer des objets audios statiques ou dynamiques dans l’ espace 3D d’un studio, d’une salle de concert ou d’un acousmonium.
S’il existe de nombreux outils pour Windows et OSX, Linux n’a pas encore vraiment investi ce domaine. Pourtant, l’écriture de l’espace sonore, que ce soit pour une diffusion traditionnelle (concert) ou pour des installations, constitue un champ d’expérimentation extraordinaire qui convoque toutes nos connaissances sur le son.
MultiSpace3D propose une interface qui vise à simplifier la manipulation des données et leur représentation afin d’encourager les compositeurs à enrichir leurs pratiques. Elle repose sur des fenêtres de modélisation 2D et une fenêtre de visualisation 3D OpenGl. L’interface est indépendante des moteurs audios, et communique avec eux grâce au protocole OSC des DAW . Ceux-ci peuvent intégrer les utilitaires LV2 ou VST nécessaires aux traitements des fichiers audios en fonction des besoins et des préférences de l’utilisateur.
Cet outil de spatialisation peut permettre de s’abstraire des contraintes de travail local, car il repose pour l'immédiat sur un cube virtuel qui symbolise un espace 3D. Il rend possible l’écriture spatiale dès la conception des objets sonores (maquette), en virtualisant l’espace de projection global pour une projection finale sur un acousmonium comportant beaucoup plus de canaux que son propre studio. Évidemment, cela ne dispensera pas de l’expérimentation en direct, dans le lieu de projection, mais cela facilite la phase de conception en permettant de travailler sur un objet multiphonique qu’il sera toujours possible d’adapter au lieu où il sera réellement produit.
Ce programme repose sur une analyse psychoacoustique des processus sonores et à la manipulation des phénomènes liés à l’espace. En ce sens, les possibilités de configuration des greffons associés à la variation de la distance des sources audios sont totalement fantaisistes, mais très riches en possibilités.
Contrairement à l’ambisonie qui suppose une phase de codage et une autre de décodage en fonction de la destination, nous disposons ici de pistes audios qui intègrent l’ensemble des informations et qu’il est toujours possible d’enregistrer telle quelle.
Pour les configurations les plus complexes, il peut être intéressant d’encoder la piste résultante au format ambisonique au 7e ordre et de l’écouter au casque après un décodage binaural afin d’en contrôler le rendu. À cette fin, il est possible d’utiliser par exemple les outils de la suite IEM (Institute of Electronic Music and Acoustics) ou la suite Sparta de l’université d’Aalto, disponibles toutes les deux pour Linux.
Je vous encourage à installer le programme spaceMeter64 pour suivre visuellement l'activité de votre studio en pseudo 3D.
Ce programme est sous licence GNU General Public License. Voir plus loin.
Avant de compiler, vous devez disposer d’un environnement de développement complet.
multiSpace3D 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.
Pour compiler les grefons, vous devrez installer le langage Faust. Les fichiers DSP sont dans le dossier $HOME/"dossier github/Plugins/DSP avec l'extension .dsp.
Ces derniers sont indispensables au fonctionnement de l'application.
Dans un terminal, ouvrez le dossier correspondant et tapez les commandes ;
git clone https://github.com/dblanchemain/MultiSpace3D
make all
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/multiSpace3D.sh
Dans le dossier
/usr/local/share/multiSpace3D
vous trouverez les dossiers suivants :
Le programme propose 17 greffons pour Ardour , Reaper et Carla en langage Faust:
Auro51, Auro71, Auro91, Auro11, Auro13,micadome, M17, Dominium, NHK222, ZKM23, RfStudio, Ircam, Satosphere, Klangdom, 4Dsounds48, 4Dsounds57(MONOM à Berlin), dispositifDb64 .
Vous pouvez recompiler multiSpace3D ou spaceCreate individuellement en le précisant après la commande make.
Vous pouvez évidemment modifier le script d’installation s’il ne vous convient pas, mais attention au générateur de script de lancement.
La compilation des Pugins sous Linux se fait simplement :
cd "votre dossier github"/Plugins/DSP
faust2lv2 -osc -qt4 (nom du plugin).dsp
La compilation sous Windows est identique avec Msys2.
La compilation des plugins doit se faire de préférence avec faustIDE
MultiSpace3D repose sur des greffons qui rendent possibles une représentation abstraite de l'espace.
Nous avons intégrés des espaces comme le Micadôme, un studio de l'Ircam, le studio 115 de Radio France, etc...afin de compléter les structures plus classique comme le 5.1 ou les espaces Auro3D. Vous trouverez une description de ces structures un peu plus loin.
Ce sont des greffons disponibles au format LV2 ou Vst pour Linux et Windows réalisés en langage Faust du Grame.
17 modèles d'espace sont proposés sous la forme de greffons. Ceux-ci peuvent être édités, modifiés et enregistrés en utilisant le spaceCreate. Chaque greffon propose une entrée et autant de sorties que le modèle d'espace l'exige. Ainsi pour un espace 8 canaux en anneau nous pourrions avoir ceci :
Le code de cette Matrix en langage Faust est très concis. Voici un exemple inspiré du site du Grame:
declare name "matrix";
declare version "1.0";
declare author "Grame";
declare license "BSD";
declare copyright "(c)GRAME 2006";
//-----------------------------------------------
// Audio Matrix : N inputs x M outputs
//-----------------------------------------------
import("stdfaust.lib");
Fader(in) = ba.db2linear(vslider("Input %2in", -96, -96, 1, 0.1));
Mixer(N,out) = hgroup("Output [hidden] %2out", par(in, N, *(Fader(in)) ) :> _ );
Matrix(N,M) = tgroup("Matrix %N x %M", par(in, N, _) <: par(out, M, Mixer(N, out)));
process = Matrix(1, 8);
Pour répondre aux besoins, le programme utilise également une abstraction de l’espace du studio : un cube aux dimensions normalisées (-1, 1) dans les 3 directions avec, au centre, le pupitre ou l'auditeur idéal (sweetspot).
Ce cube a pour mission de permettre la localisation de chaque source audio dans l’espace normalisé.
Dans ce cube, les enceintes sont disposées suivant un schéma correspondant au modèle d'espace choisi. Les tableaux suivants proposent des coordonnées pour les enceintes suivant les configurations de projection.
Le calcul du gain pour chaque sortie se fait relativement à la distance des enceintes.
Dans ce cube, il est supposé que toutes les enceintes ont été calibrées de façon à avoir pour chacune 83 dBSPL à l’écoute pour un bruit rose de -20dB (K-system en K-20) au niveau du pupitre afin que la distance n’intervienne pas ou peu. Voir le document de Jean-Marc Duchenne sur son site : des SONS dans l’air dans la rubrique télécharger.
Il faudra au minimum 8 enceintes disposées sur 2 plans pour bénéficier de la 3D. Si vous placez vos enceintes sur un anneau, vous ne pourrez travaillerez qu’en 2D.
Afin de pouvoir travailler confortablement, je vous encourage à créer un dossier dédié au MultiSpace3D. Vous pourrez ainsi retrouver facilement vos fichiers.
En utilisant le gestionnaire de fichier, vous pouvez enregistrer la configuration des mixers pour une oeuvre donnée dans un fichier d'extension .obj
Dès le lancement du programme, un premier objet est placé au centre du cube.
Vous devez cliquer dessus avec le bouton droit de la souris pour changer la piste du séquenceur ainsi que le numéro du greffon sur la piste.
Vous pouvez créer un nouveau mixer en entrant le numéro de la piste dans le champ Piste et en cliquant sur le bouton . Si le numémo de piste existe déjà, vous définirez ainsi le curseur courant reconnaissable au cercle blanc externe.
Chaque piste appartient à un groupe défini par sa couleur. Lorsque vous cliquez sur cet icône vous pouvez sélectionner un des 32 groupes :
Ceci permet d’organiser les pistes en groupe que vous pourrez manipuler ensuite selon vos besoins.
Voici un tableau qui résume les options de la barre d'outils :
Permets de récupérer la répartition dans l'espace des objets pour un instant t. . | |
Permets d'enregistrer la répartition dans l'espace des objets pour un instant t. | |
Permets de lancer une nouvelle instance de multiSpace3D. Ceci peut permettre de gérer indépendamment des groupes d'objets. |
Supprimer une source | Supprimer un groupe | Supprimer toutes les sources | |
Déplacer une source | Déplacer un groupe | Tout déplacer |
Les fonctions disponibles :
touche e | Expansion d’un groupe (uniquement si le groupe comporte plusieurs sources) | |
touche c | Contraction d’un groupe (uniquement si le groupe comporte plusieurs sources) | |
touche y | Rotation Y en fonction du type de déplacement (axe vertical) | |
touche x | Rotation X en fonction du type de déplacement | |
touche z | Rotation Z en fonction du type de déplacemen | |
Fenêtre vue 3D OpenGl | ||
Utilitaire de création d'un nouvel espace de projection. | ||
Le mixer monte | ||
Le mixer descend |
Les touches du clavier permettent de réaliser des tansformations continues.
La touche Del/Suppr permet de supprimer le mixer sélectionné.
Pour les déplacements 3D, la gestion d’un joystick est envisagée.
Pour l’immédiat il faut jongler entre les 3 panneaux de manipulations des sources audios.
Dans la vue 3D OpenGl, il est possible d’assurer la rotation du cube dans toutes les directions avec la souris ou la sphère. Le repère orthonormé permet les translations. La fenêtre n'est pas redimensionnable.
Le menu Préférences ouvre une nouvelle fenêtre qui permet de préciser le séquenceur utilisé et la configuration OSC.
Maintenant que Reaper est en mesure d'utiliser les greffons au format LV2 nous pouvons les charger directement sur nos pistes. Les greffons se présentent ainsi sous Reaper:
Pour les pistes qui disposent du greffon vous devrez définir les sorties ( par exemple ):
Puis préciser la répartition des canaux :
Pour utiliser le multiSpace3D de manière confortable avec les LV2, il faut lancer une session autonome de Carla et charger dans le Rack autant de greffons correspondants au studio utilisé que d'objets à spatialiser.
Dans cet exemple, on dispose de 4 greffons du studio Dominium 18 canaux, correspondant à 4 objets à spatialiser. Les sorties de Reaper sont liées aux entrées des greffons.
Les sorties de chaque greffon doivent être liées au matériel.
Dans la fenêtre Paramètres du multiSpace3D il faut sélectionner Carla pour le séquenceur et préciser le port OSC de Carla. Cette information est disponible pour Carla dans Aide -> À propos -> OSC.
Ensuite, on crée des mixeurs dans le multiSpace3D qui vont être associés aux greffons de Carla. Le numéro de greffon correspond, dans ce contexte, au numéro du greffon dans Carla.. Le numéro de piste est ignoré.
On ne peut pas utiliser les greffons VST: Carla-RackFx ou Carla-PatchbayFx sur les pistes de Reaper, car ces vst sont uniquement stéréos, donc inadaptés aux besoins.
Vous ne pourrez pas enregistrer l'automation avec cette méthode.
Pour améliorer la perception de la distance d'un objet, j'ai ajouté un nouveau paramètre aux greffons la : distance. Celui-ci est directement modifié dans les greffons par le curseur en bas à droite.
Ce curseur permet également de modifier simultanément des attributs de plusieurs effets : l'étendue du spectre, la transposition, le délai et la réverbération.
Quel que soit l'espace associé, les greffons se présentent toujours de la même manière :
Ils sont organisés en deux parties : une première qui permet de spécifier les coordonnées (x,y,z) de l'objet et une deuxième qui concerne des greffons de gestion de la distance.
Les coordonnées sont transmises par OSC par l'interface graphique. Ces coordonnées peuvent évidemment être enregistrées dans le séquenceur par automation.
Ce sont les greffons qui calculent les valeurs des sorties de la Matrix. La formule de calcul est la suivante :
dtencGen(in, out) = sqrt(pow(tabSpeakerX(out)-x(in),2) + pow(tabSpeakerY(out)-y(in),2) + pow(tabSpeakerZ(out)-z(in),2));
hspot = hslider("Hot Spot",-20,-50,0,1);
dgain(in, out) = ba.db2linear((hspot/tabSpeakerD(out))*dtencGen(in,out));
// pour ces greffons in=1, out peut varier de 5 à 64
// tabSpeakerD contient la distance de l'enceinte au sweetspot
// dtenGen = distance de l'objet à une enceinte, plus l'objet est proche, plus le gain est élevé.
Ce fonctionnement n'altère pas la qualité du son d'origine, mais joue uniquement sur la répartition du gain entre les enceintes de l'espace considéré.
.Les coordonnées des objets peuvent être enregistrés dans les pistes du séquenceur par automation.
X, Y , Z | Coordonnées | Coordonnées cartésiennes. Contrôlés par le curseur. |
Hot Spot | Gain | Gain au centre du cube à régler en fonction du studio pour ne pas avoir trop de perte au centre, lors des déplacements des objets. |
Filter | LPF Amp | Ce slider permet de définir la fréquence de coupure ( de 20 à 20000). Contrôlé par le curseur. |
Shift | Transposition | Uniquement vers le grave. Contrôlé par le curseur. |
Window | ||
Xfade | ||
Delay | Feedback | Retour du Delay |
Interpolation | Interpolation | |
MaxTime | Variation maximale du delay (de 0 à 1000) contrôlé par le curseur. | |
Freeverb | Damp | Réglage du Damp |
RoomSize | Réglage de la dimension de l'espace | |
Stéréo Spread | ||
Wet | Réverbération contrôlée par le curseur. | |
dt | Distance | gain relatif à la distance, contrôlé par le curseur. |
Ces greffons intégrés permettent de renforcer un effet de distance . Ils peuvent être court-circuités si cela est nécessaire.
Les réglages de ces paramètres peuvent être enregistrés dans le séquenceur par automation. Ces greffons modifient évidemment le son.
Le calcul de la distance d'un objet se fait relativement au centre du cube. Plus l'objet est proche du centre du cube, plus sa distance est grande et donc son volume faible. Les paramètres des greffons associés sont ajustés en fonction de la distance.
Les pistes associées du séquenceur doivent être mono.
Dans votre séquenceur vous placez le greffon correspondant à votre studio sur chaque piste mono du projet. Ces pistes disposent alors d'un nombre de sorties correspondant à la variante de votre greffon. Par exemple, avec le greffon ZKM23 vous obtiendrez 23 sorties.
Chaque piste sera alors contrôlable par un mixeur de l'interface graphique dont le numéro correspond à la piste dans le séquenceur.
Toutes les sorties de vos pistes peuvent être routées vers un bus dont le nombre de canaux correspond au nombre de sorties de la variante de votre greffon. Par exemple ici, il s'agira d'un bus 23 canaux. Vous pouvez aussi définir les sorties matérielles de chaque piste.
Vous devez ensuite lancer l'interface du multiSpace3D : multiSpace3D.sh
Il vous appartient ensuite de router les sorties du bus du séquenceur vers votre matériel.
Avec Ardour, il est impératif de court-circuiter le VBAP de chaque piste et du bus, afin que les routages soient bien respectés
En déplaçant un mixeur vous entendrez le son de la piste circuler dans votre espace.
Vous pouvez utiliser plusieurs instances de l'interface multiSpace3D pour simplifier la gestion de l'espace avec des objets complexes.
Si vous désirez utiliser un espace d'un ordre supérieur à votre studio, vous pouvez utiliser un encodage ambisonique d'ordre 7 avec la suite IEM. Vous pouvez alors obtenir un décodage en binaurale écoutable au casque. Mais attention, à partir du moment que vous encodez votre audio en Ambisonie, vous modifiez sa nature.
Dans les tableaux qui suivent, vous disposerez de la liste des numéros de sortie du greffon (M), éventuellement de la dénomination des sorties, des coordonnées retenues pour les enceintes et les numéros des canaux (C) correspondants dans les fichiers audios. Dans le calcul de la position d'un objet, le(s) LFE(s) n'intervien(nen)t pas.
Si, par exemple, vous désirez fournir un fichier audio 5.1, vous devrez ajouter manuellement, dans votre sequenceur, un canal 4 correspondant au LFE aux 5 sorties de l'objMatrix51.
Les numéros du graphisme ci-dessous correspondent aux canaux des fichiers audios pour le 13.1.
Ref : J.M Duchenne Les sons dans l'air
Coord. (x,y,z) | 5.1 | 7.1 | 9.1 | 11.1 | 13.1 | ||||||||
X | Y | Z | M | C | M | C | M | C | M | C | M | C | |
Front Left | -1.0 | -0.18 | 1.0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Front Right | 1.0 | -0.18 | 1.0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
Front Center | 0.0 | -0.18 | 1.0 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
LFE | 4 | 4 | 4 | 4 | 4 | ||||||||
Surround Left | -1.0 | -0.18 | -1.0 | 4 | 5 | 4 | 5 | 4 | 5 | 4 | 5 | 4 | 5 |
Surround Right | 1.0 | -0.18 | -1.0 | 5 | 6 | 5 | 6 | 5 | 6 | 5 | 6 | 5 | 6 |
Side Left | -1.0 | -0.18 | 0.5 | 6 | 7 | 6 | 7 | ||||||
Side Right | 1.0 | -0.18 | 0.5 | 7 | 8 | 7 | 8 | ||||||
Top Front Left | -1.0 | 0.812 | 1.0 | 6 | 7 | 6 | 7 | 8 | 9 | ||||
Top Front Right | 1.0 | 0.812 | 1.0 | 7 | 8 | 7 | 8 | 9 | 10 | ||||
Top Back Left | -1.0 | 0.812 | -1.0 | 8 | 9 | 8 | 9 | 10 | 11 | ||||
Top Back Right | 1.0 | 0.812 | -1.0 | 9 | 10 | 9 | 10 | 11 | 12 | ||||
Top Front Center | 0.0 | 1.0 | 0.812 | 10 | 11 | 12 | 13 | ||||||
Top Center | 0.0 | 1.0 | 0.0 | 11 | 12 | 13 | 14 |
Ref : Auro 3D
M => Numero de sortie de l'objMatrix C => Numéro de canal d'un fichier audio
Les coordonnées définies dans ces tableaux peuvent être modifiées en créant de nouveaux greffons.
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -1.000 | -0.181 | 0.975 |
2 | 2 | 1.000 | -0.181 | 1.000 |
3 | 3 | 0.007 | -0.181 | 0.985 |
0 | 4 | Ne figure pas dans le fichier DSP. | ||
4 | 5 | -1.000 | -0.181 | -1.000 |
5 | 6 | 0.956 | -0.181 | -1.000 |
6 | 7 | -0.501 | -0.181 | 1.000 |
7 | 8 | 0.501 | -0.181 | 1.000 |
8 | 9 | -0.002 | -0.181 | -1.000 |
9 | 10 | -1.000 | -0.181 | 0.283 |
10 | 11 | 1.000 | -0.181 | 0.283 |
11 | 12 | -0.057 | 1.000 | -0.056 |
12 | 13 | -1.000 | 0.624 | 0.975 |
13 | 14 | -0.007 | 0.624 | 1.000 |
14 | 15 | 1.000 | 0.624 | 1.000 |
15 | 16 | -1.000 | 0.624 | -1.000 |
16 | 17 | 1.000 | 0.624 | -1.000 |
17 | 18 | -0.032 | 0.624 | -1.000 |
Ref : J.M Duchenne Les sons dans l'air
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -1.000 | -0.181 | 0.990 |
2 | 2 | 1.000 | -0.181 | 1.000 |
3 | 3 | -0.007 | -0.181 | 1.000 |
4 | ||||
4 | 5 | -1.000 | -0.181 | -1.000 |
5 | 6 | 1.000 | -0.181 | -1.000 |
6 | 7 | -0.501 | -0.181 | 0.990 |
7 | 8 | 0.501 | -0.181 | 1.000 |
8 | 9 | 0.002 | -0.181 | -1.000 |
10 | ||||
9 | 11 | -1.000 | -0.181 | 0.288 |
10 | 12 | 1.000 | -0.181 | 0.288 |
11 | 13 | -1.000 | 0.619 | 1.000 |
12 | 14 | 1.000 | 0.619 | 1.000 |
13 | 15 | 0.007 | 0.619 | 1.000 |
14 | 16 | -0.062 | 1.000 | -0.061 |
15 | 17 | -1.000 | 0.619 | -1.000 |
16 | 18 | 1.000 | 0.619 | -1.000 |
17 | 19 | -1.000 | 0.619 | 0.288 |
18 | 20 | 1.000 | 0.619 | 0.283 |
19 | 21 | 0.007 | 0.619 | -1.000 |
20 | 22 | 0.002 | -1.000 | 1.000 |
21 | 23 | -1.000 | -1.000 | 1.000 |
22 | 24 | 1.000 | -1.000 | 1.000 |
Ref : J.M Duchenne Les sons dans l'air
Ref : MICADÔME
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -0.437 | -0.388 | 0.965 |
2 | 2 | 0.373 | -0.388 | 0.970 |
3 | 3 | -1.000 | -0.388 | 0.399 |
4 | 4 | 1.000 | -0.388 | 0.409 |
5 | 5 | -1.000 | -0.388 | -0.515 |
6 | 6 | 1.000 | -0.388 | -0.515 |
7 | 7 | -0.412 | -0.388 | -1.000 |
8 | 8 | 0.383 | -0.388 | -1.000 |
9 | 9 | -0.793 | 0.412 | 0.242 |
10 | 10 | 0.822 | 0.412 | 0.247 |
11 | 11 | -0.798 | 0.412 | -0.354 |
12 | 12 | 0.802 | 0.412 | -0.348 |
13 | 13 | -0.062 | 0.412 | 0.803 |
14 | 14 | -0.062 | 0.412 | -0.793 |
15 | 15 | -0.244 | 1.000 | -0.056 |
16 | 16 | 0.121 | 1.000 | -0.051 |
0 | 17 | -0.788 | -1.000 | 1.000 |
0 | 18 | 0.802 | -1.000 | 1.000 |
Juste une curiosité. Ce dispositif correspond à la stucture de mon studio.
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -0.500 | 0.000 | 1.000 |
2 | 2 | 0.500 | 0.000 | 1.000 |
3 | 3 | 0.000 | 0.000 | 1.000 |
4 | 4 | -1.000 | 0.000 | 0.500 |
5 | 5 | 1.000 | 0.000 | 0.500 |
6 | 6 | -1.000 | 0.000 | -0.500 |
7 | 7 | 1.000 | 0.000 | -0.500 |
8 | 8 | -1.000 | 1.000 | 0.500 |
9 | 9 | -1.000 | -1.000 | 1.000 |
10 | 10 | 1.000 | 1.000 | 0.500 |
11 | 11 | 1.000 | -1.000 | 1.000 |
12 | 12 | -1.000 | 1.000 | -0.500 |
13 | 13 | -1.000 | -1.000 | -1.000 |
14 | 14 | 1.000 | 1.000 | -0.500 |
15 | 15 | 1.000 | -1.000 | -1.000 |
16 | 16 | -0.500 | 0.000 | -1.000 |
17 | 17 | 0.500 | 0.000 | -1.000 |
18 | 18 | 0.000 | 1.000 | 0.000 |
Ref : ZKM
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -0.007 | -0.374 | 1.000 |
2 | 2 | 0.477 | -0.374 | 0.758 |
3 | 3 | 0.590 | -0.374 | 0.061 |
4 | 4 | 0.758 | -0.374 | -0.318 |
5 | 5 | 0.462 | -0.374 | -0.722 |
6 | 6 | 0.007 | -0.374 | -1.000 |
7 | 7 | -0.511 | -0.374 | -0.717 |
8 | 8 | -0.758 | -0.374 | -0.318 |
9 | 9 | -0.753 | -0.374 | 0.268 |
10 | 10 | -0.526 | -0.374 | 0.742 |
11 | 11 | 0.235 | 0.219 | 0.540 |
12 | 12 | 0.610 | 0.219 | 0.162 |
13 | 13 | 0.605 | 0.219 | -0.237 |
14 | 14 | 0.244 | 0.219 | -0.646 |
15 | 15 | -0.185 | 0.219 | -0.646 |
16 | 16 | -0.600 | 0.219 | -0.247 |
17 | 17 | -0.595 | 0.219 | 0.141 |
18 | 18 | -0.180 | 0.219 | 0.535 |
19 | 19 | -0.057 | 0.807 | 0.207 |
20 | 20 | -0.314 | 0.807 | -0.061 |
21 | 21 | -0.052 | 0.807 | -0.354 |
22 | 22 | 0.289 | 0.807 | -0.056 |
23 | 23 | -0.067 | 1.000 | -0.056 |
Ref : IRCAM
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | 0.002 | -0.581 | 0.899 |
2 | 2 | 0.778 | -0.581 | 0.606 |
3 | 3 | 1.000 | -0.581 | 0.000 |
4 | 4 | 0.773 | -0.581 | -0.601 |
5 | 5 | 0.254 | -0.581 | -1.000 |
6 | 6 | -0.274 | -0.581 | -1.000 |
7 | 7 | -0.719 | -0.581 | -0.591 |
8 | 8 | -1.000 | -0.581 | -0.010 |
9 | 9 | -0.714 | -0.581 | 0.601 |
10 | 10 | 0.220 | -0.181 | 0.606 |
11 | 11 | 0.664 | -0.181 | 0.162 |
12 | 12 | 0.669 | -0.181 | -0.273 |
13 | 13 | 0.353 | -0.181 | -0.717 |
14 | 14 | -0.042 | -0.181 | -0.808 |
15 | 15 | -0.506 | -0.181 | -0.697 |
16 | 16 | -0.743 | -0.181 | -0.288 |
17 | 17 | -0.743 | -0.181 | 0.152 |
18 | 18 | -0.398 | -0.181 | 0.586 |
19 | 19 | -0.106 | 0.525 | 0.348 |
20 | 20 | 0.343 | 0.525 | 0.086 |
21 | 21 | 0.235 | 0.525 | -0.429 |
22 | 22 | -0.215 | 0.525 | -0.545 |
23 | 23 | -0.521 | 0.525 | -0.076 |
24 | 24 | -0.106 | 1.000 | -0.146 |
Ref : Radio France
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -0.585 | -0.374 | 1.000 |
2 | 2 | -0.190 | -0.374 | 1.000 |
3 | 3 | 0.205 | -0.374 | 1.000 |
4 | 4 | 0.605 | -0.374 | 1.000 |
5 | 5 | 1.000 | -0.374 | -0.591 |
6 | 6 | 1.000 | -0.374 | -0.197 |
7 | 7 | 1.000 | -0.374 | 0.197 |
8 | 8 | 1.000 | -0.374 | 0.601 |
9 | 9 | 0.610 | -0.374 | -1.000 |
10 | 10 | 0.210 | -0.374 | -1.000 |
11 | 11 | -0.195 | -0.374 | -1.000 |
12 | 12 | -0.590 | -0.374 | -1.000 |
13 | 13 | -1.000 | -0.374 | -0.591 |
14 | 14 | -1.000 | -0.374 | -0.197 |
15 | 15 | -1.000 | -0.374 | 0.207 |
16 | 16 | -1.000 | -0.374 | 0.601 |
17 | 17 | -0.333 | 0.219 | 1.000 |
18 | 18 | 0.343 | 0.219 | 1.000 |
19 | 19 | 1.000 | 0.219 | -0.394 |
20 | 20 | 1.000 | 0.219 | 0.404 |
21 | 21 | 0.338 | 0.219 | -1.000 |
22 | 22 | -0.323 | 0.219 | -1.000 |
23 | 23 | -1.000 | 0.219 | -0.399 |
24 | 24 | -1.000 | 0.219 | 0.409 |
25 | 25 | -0.402 | 0.807 | -0.056 |
26 | 26 | 0.407 | 0.807 | -0.061 |
27 | 27 | 0.007 | 0.807 | 0.283 |
28 | 28 | 0.002 | 0.807 | -0.404 |
29 | 29 | -0.062 | 1.000 | -0.056 |
Ref : Satosphère
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -0.062 | 1.000 | -0.061 |
2 | 2 | -0.412 | 0.779 | 0.081 |
3 | 3 | -0.328 | 0.779 | -0.323 |
4 | 4 | 0.002 | 0.779 | -0.449 |
5 | 5 | 0.299 | 0.779 | -0.182 |
6 | 6 | 0.225 | 0.779 | 0.242 |
7 | 7 | -0.131 | 0.779 | 0.384 |
8 | 8 | -0.052 | 0.214 | 0.672 |
9 | 9 | -0.407 | 0.214 | 0.561 |
10 | 10 | -0.689 | 0.214 | 0.359 |
11 | 11 | -0.847 | 0.214 | 0.000 |
12 | 12 | -0.699 | 0.214 | -0.348 |
13 | 13 | -0.422 | 0.214 | -0.581 |
14 | 14 | -0.062 | 0.214 | -0.667 |
15 | 15 | 0.348 | 0.214 | -0.581 |
16 | 16 | 0.635 | 0.214 | -0.333 |
17 | 17 | 0.798 | 0.214 | 0.010 |
18 | 18 | 0.644 | 0.214 | 0.369 |
19 | 19 | 0.358 | 0.214 | 0.596 |
20 | 20 | 0.007 | -0.181 | 1.000 |
21 | 21 | -0.501 | -0.181 | 0.798 |
22 | 22 | -0.872 | -0.181 | 0.414 |
23 | 23 | -1.000 | -0.181 | -0.051 |
24 | 24 | -0.872 | -0.181 | -0.495 |
25 | 25 | -0.506 | -0.181 | -0.793 |
26 | 26 | -0.002 | -0.181 | -1.000 |
27 | 27 | 0.501 | -0.181 | -0.823 |
28 | 28 | 0.872 | -0.181 | -0.460 |
29 | 29 | 1.000 | -0.181 | -0.005 |
30 | 30 | 0.847 | -0.181 | 0.480 |
31 | 31 | 0.511 | -0.181 | 0.904 |
Ref (Anneau elliptique dans un cube): ZKM Klangdom
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -0.002 | -0.562 | -1.000 |
2 | 2 | -0.585 | -0.562 | -0.914 |
3 | 3 | -1.000 | -0.562 | -0.646 |
4 | 4 | -1.000 | -0.562 | -0.202 |
5 | 5 | -1.000 | -0.562 | 0.237 |
6 | 6 | -1.000 | -0.562 | 0.677 |
7 | 7 | -0.516 | -0.562 | 1.000 |
8 | 8 | -0.002 | -0.562 | 1.000 |
9 | 9 | 0.472 | -0.562 | 1.000 |
10 | 10 | 1.000 | -0.562 | 0.667 |
11 | 11 | 1.000 | -0.562 | 0.354 |
12 | 12 | 1.000 | -0.562 | -0.152 |
13 | 13 | 1.000 | -0.562 | -0.606 |
14 | 14 | 0.442 | -0.562 | -0.737 |
15 | 15 | -0.358 | 0.002 | -0.742 |
16 | 16 | -0.714 | 0.002 | -0.540 |
17 | 17 | -0.699 | 0.002 | -0.207 |
18 | 18 | -0.709 | 0.002 | 0.121 |
19 | 19 | -0.709 | 0.002 | 0.409 |
20 | 20 | -0.506 | 0.002 | 0.672 |
21 | 21 | -0.146 | 0.002 | 0.677 |
22 | 22 | 0.215 | 0.002 | 0.692 |
23 | 23 | 0.600 | 0.002 | 0.702 |
24 | 24 | 0.615 | 0.002 | 0.258 |
25 | 25 | 0.615 | 0.002 | -0.045 |
26 | 26 | 0.610 | 0.002 | -0.384 |
27 | 27 | 0.111 | 0.002 | -0.409 |
28 | 28 | 0.116 | 0.412 | -0.485 |
29 | 29 | -0.254 | 0.412 | -0.571 |
30 | 30 | -0.595 | 0.412 | -0.409 |
31 | 31 | -0.595 | 0.412 | -0.030 |
32 | 32 | -0.570 | 0.412 | 0.303 |
33 | 33 | -0.328 | 0.412 | 0.404 |
34 | 34 | -0.027 | 0.412 | 0.409 |
35 | 35 | 0.264 | 0.412 | 0.354 |
36 | 36 | 0.323 | 0.412 | -0.056 |
37 | 37 | 0.151 | 0.769 | -0.237 |
38 | 38 | -0.091 | 0.769 | -0.354 |
39 | 39 | -0.319 | 0.769 | -0.202 |
40 | 40 | -0.314 | 0.769 | 0.086 |
41 | 41 | -0.086 | 0.769 | 0.247 |
42 | 42 | 0.175 | 0.769 | 0.091 |
43 | 43 | -0.057 | 1.000 | -0.051 |
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -1.000 | -0.333 | 1.000 |
2 | 2 | -0.333 | -0.333 | 1.000 |
3 | 3 | 0.333 | -0.333 | 1.000 |
4 | 4 | 1.000 | -0.333 | 1.000 |
5 | 5 | -1.000 | -0.333 | 0.333 |
6 | 6 | 0.333 | -0.333 | 0.333 |
7 | 7 | -0.333 | -0.333 | 0.333 |
8 | 8 | 1.000 | -0.333 | 0.333 |
9 | 9 | -1.000 | -0.333 | -0.333 |
10 | 10 | 0.333 | -0.333 | -0.333 |
11 | 11 | -0.333 | -0.333 | -0.333 |
12 | 12 | 1.000 | -0.333 | -0.333 |
13 | 13 | -1.000 | -0.333 | -1.000 |
14 | 14 | 0.333 | -0.333 | -1.000 |
15 | 15 | -0.333 | -0.333 | -1.000 |
16 | 16 | 1.000 | -0.333 | -1.000 |
17 | 17 | -1.000 | 0.333 | 1.000 |
18 | 18 | -0.333 | 0.333 | 1.000 |
19 | 19 | 0.333 | 0.333 | 1.000 |
20 | 20 | 1.000 | 0.333 | 1.000 |
21 | 21 | -1.000 | 0.333 | 0.333 |
22 | 22 | 0.333 | 0.333 | 0.333 |
23 | 23 | -0.333 | 0.333 | 0.333 |
24 | 24 | 1.000 | 0.333 | 0.333 |
25 | 25 | -1.000 | 0.333 | -0.333 |
26 | 26 | 0.333 | 0.333 | -0.333 |
27 | 27 | -0.333 | 0.333 | -0.333 |
28 | 28 | 1.000 | 0.333 | -0.333 |
29 | 29 | -1.000 | 0.333 | -1.000 |
30 | 30 | 0.333 | 0.333 | -1.000 |
31 | 31 | -0.333 | 0.333 | -1.000 |
32 | 32 | 1.000 | 0.333 | -1.000 |
33 | 33 | -1.000 | 1.000 | 1.000 |
34 | 34 | -0.333 | 1.000 | 1.000 |
35 | 35 | 0.333 | 1.000 | 1.000 |
36 | 36 | 1.000 | 1.000 | 1.000 |
37 | 37 | -1.000 | 1.000 | 0.333 |
38 | 38 | 0.333 | 1.000 | 0.333 |
39 | 39 | -0.333 | 1.000 | 0.333 |
40 | 40 | 1.000 | 1.000 | 0.333 |
41 | 41 | -1.000 | 1.000 | -0.333 |
42 | 42 | 0.333 | 1.000 | -0.333 |
43 | 43 | -0.333 | 1.000 | -0.333 |
44 | 44 | 1.000 | 1.000 | -0.333 |
45 | 45 | -1.000 | 1.000 | -1.000 |
46 | 46 | 0.333 | 1.000 | -1.000 |
47 | 47 | -0.333 | 1.000 | -1.000 |
48 | 48 | 1.000 | 1.000 | -1.000 |
Ref (Réseau multidirectionnel): 4D sound MONOM
Identique au précédent mais avec 9 caissons supplémentaires sous le sol.
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -1.000 | -0.333 | 1.000 |
2 | 2 | -0.333 | -0.333 | 1.000 |
3 | 3 | 0.333 | -0.333 | 1.000 |
4 | 4 | 1.000 | -0.333 | 1.000 |
5 | 5 | -1.000 | -0.333 | 0.333 |
6 | 6 | 0.333 | -0.333 | 0.333 |
7 | 7 | -0.333 | -0.333 | 0.333 |
8 | 8 | 1.000 | -0.333 | 0.333 |
9 | 9 | -1.000 | -0.333 | -0.333 |
10 | 10 | 0.333 | -0.333 | -0.333 |
11 | 11 | -0.333 | -0.333 | -0.333 |
12 | 12 | 1.000 | -0.333 | -0.333 |
13 | 13 | -1.000 | -0.333 | -1.000 |
14 | 14 | 0.333 | -0.333 | -1.000 |
15 | 15 | -0.333 | -0.333 | -1.000 |
16 | 16 | 1.000 | -0.333 | -1.000 |
17 | 17 | -1.000 | 0.333 | 1.000 |
18 | 18 | -0.333 | 0.333 | 1.000 |
19 | 19 | 0.333 | 0.333 | 1.000 |
20 | 20 | 1.000 | 0.333 | 1.000 |
21 | 21 | -1.000 | 0.333 | 0.333 |
22 | 22 | 0.333 | 0.333 | 0.333 |
23 | 23 | -0.333 | 0.333 | 0.333 |
24 | 24 | 1.000 | 0.333 | 0.333 |
25 | 25 | -1.000 | 0.333 | -0.333 |
26 | 26 | 0.333 | 0.333 | -0.333 |
27 | 27 | -0.333 | 0.333 | -0.333 |
28 | 28 | 1.000 | 0.333 | -0.333 |
29 | 29 | -1.000 | 0.333 | -1.000 |
30 | 30 | 0.333 | 0.333 | -1.000 |
31 | 31 | -0.333 | 0.333 | -1.000 |
32 | 32 | 1.000 | 0.333 | -1.000 |
33 | 33 | -1.000 | 1.000 | 1.000 |
34 | 34 | -0.333 | 1.000 | 1.000 |
35 | 35 | 0.333 | 1.000 | 1.000 |
36 | 36 | 1.000 | 1.000 | 1.000 |
37 | 37 | -1.000 | 1.000 | 0.333 |
38 | 38 | 0.333 | 1.000 | 0.333 |
39 | 39 | -0.333 | 1.000 | 0.333 |
40 | 40 | 1.000 | 1.000 | 0.333 |
41 | 41 | -1.000 | 1.000 | -0.333 |
42 | 42 | 0.333 | 1.000 | -0.333 |
43 | 43 | -0.333 | 1.000 | -0.333 |
44 | 44 | 1.000 | 1.000 | -0.333 |
45 | 45 | -1.000 | 1.000 | -1.000 |
46 | 46 | 0.333 | 1.000 | -1.000 |
47 | 47 | -0.333 | 1.000 | -1.000 |
48 | 48 | 1.000 | 1.000 | -1.000 |
49 | 49 | -0.595 | -1.000 | 0.500 |
50 | 50 | 0.000 | -1.000 | 0.444 |
51 | 51 | 0.600 | -1.000 | 0.444 |
52 | 52 | -0.600 | -1.000 | 0.000 |
53 | 53 | 0.000 | -1.000 | 0.000 |
54 | 54 | 0.600 | -1.000 | 0.000 |
55 | 55 | -0.600 | -1.000 | -0.400 |
56 | 56 | 0.000 | -1.000 | -0.444 |
57 | 57 | 0.600 | -1.000 | -0.444 |
Vue arrière
Coord.Cartésiennes | ||||
Sorties | Canal | X | Y | Z |
1 | 1 | -0.500 | -1.000 | 1.000 |
2 | 2 | 0.000 | -1.000 | 1.000 |
3 | 3 | 0.500 | -1.000 | 1.000 |
4 | 4 | 1.000 | -1.000 | 1.000 |
5 | 5 | 1.000 | -1.000 | 0.500 |
6 | 6 | 1.000 | -1.000 | 0.000 |
7 | 7 | 1.000 | -1.000 | -0.500 |
8 | 8 | 1.000 | -1.000 | -1.000 |
9 | 9 | 0.501 | -1.000 | -1.000 |
10 | 10 | 0.000 | -1.000 | -1.000 |
11 | 11 | -0.500 | -1.000 | -1.000 |
12 | 12 | -1.000 | -1.000 | -1.000 |
13 | 13 | -1.000 | -1.000 | -0.500 |
14 | 14 | -1.000 | -1.000 | 0.000 |
15 | 15 | -1.000 | -1.000 | 0.500 |
16 | 16 | -1.000 | -1.000 | 1.000 |
17 | 17 | -0.500 | -0.180 | 1.000 |
18 | 18 | 0.000 | -0.180 | 1.000 |
19 | 19 | 0.500 | -0.180 | 1.000 |
20 | 20 | 1.000 | -0.180 | 1.000 |
21 | 21 | 1.000 | -0.180 | 0.500 |
22 | 22 | 1.000 | -0.180 | 0.000 |
23 | 23 | 1.000 | -0.180 | -0.500 |
24 | 24 | 1.000 | -0.180 | -1.000 |
25 | 25 | 0.501 | -0.180 | -1.000 |
26 | 26 | 0.000 | -0.180 | -1.000 |
27 | 27 | -0.500 | -0.180 | -1.000 |
28 | 28 | -1.000 | -0.180 | -1.000 |
29 | 29 | -1.000 | -0.180 | -0.500 |
30 | 30 | -1.000 | -0.180 | 0.000 |
31 | 31 | -1.000 | -0.180 | 0.500 |
32 | 32 | -1.000 | -0.180 | 1.000 |
33 | 33 | -0.500 | 0.620 | 1.000 |
34 | 34 | 0.000 | 0.620 | 1.000 |
35 | 35 | 0.500 | 0.620 | 1.000 |
36 | 36 | 1.000 | 0.620 | 1.000 |
37 | 37 | 1.000 | 0.620 | 0.500 |
38 | 38 | 1.000 | 0.620 | 0.000 |
39 | 39 | 1.000 | 0.620 | -0.500 |
40 | 40 | 1.000 | 0.620 | -1.000 |
41 | 41 | 0.501 | 0.620 | -1.000 |
42 | 42 | 0.000 | 0.620 | -1.000 |
43 | 43 | -0.500 | 0.620 | -1.000 |
44 | 44 | -1.000 | 0.620 | -1.000 |
45 | 45 | -1.000 | 0.620 | -0.500 |
46 | 46 | -1.000 | 0.620 | 0.000 |
47 | 47 | -1.000 | 0.620 | 0.500 |
48 | 48 | -1.000 | 0.620 | 1.000 |
49 | 49 | -0.393 | -1.000 | -0.399 |
50 | 50 | -0.002 | -1.000 | -0.399 |
51 | 51 | 0.402 | -1.000 | -0.399 |
52 | 52 | -0.398 | -1.000 | 0.000 |
53 | 53 | 0.000 | -1.000 | 0.000 |
54 | 54 | 0.407 | -1.000 | 0.000 |
55 | 55 | -0.393 | -1.000 | 0.404 |
56 | 56 | 0.002 | -1.000 | 0.409 |
57 | 57 | 0.407 | -1.000 | 0.409 |
58 | 58 | -0.244 | 1.000 | -0.399 |
59 | 59 | 0.249 | 1.000 | -0.399 |
60 | 60 | -0.383 | 1.000 | 0.010 |
61 | 61 | 0.000 | 1.000 | 0.000 |
62 | 62 | 0.407 | 1.000 | 0.005 |
63 | 63 | -0.225 | 1.000 | 0.404 |
64 | 64 | 0.254 | 1.000 | 0.404 |
Un espace est défini par un ensemble de coordonnées correspondant à la position des enceintes. Il est nécessaire également de définir la distance de l'enceinte au centre du cube.
Ceci nous donne quatre tableaux de variables :
tabSpeakerX(0) = -0.5;
tabSpeakerY(0) = 0.0;
tabSpeakerZ(0) = 1;
tabSpeakerD(0) = 1.11803;
Les coordonnées sont normalisées dans le cube présenté plus haut.
Lorsque vous disposez de l'ensemble des coordonnées de votre espace, il suffit d'intégrer ces coordonnées dans le code DSP du greffon:
Nous allons définir un nouveau greffon pour un espace 10.1. Vous noterez que cet espace est une extension du 9.1 :
declare name "objectMatrix101"; // modifier le nom de votre greffon
declare version "1.0";
declare author "D.Blanchemain";
declare license "BSD";
declare copyright "(c)D.Blanchemain 2020";
import("stdfaust.lib");
Matrix(N,M) =_*cdistance:filter:transpose:delay:freeverb<: par(out, M, *(Fader(1,out): si.smoo)) :> par(out, M, _)
with {
// coordonnées à modifier
tabSpeakerX(0) = -1.0;
tabSpeakerY(0) = 0.0;
tabSpeakerZ(0) = 1; // calcul de la distance de l'enceinte au sweetpot
tabSpeakerD(0) = 1.41421; // sqrt((tabSpeakerX(0)*tabSpeakerX(0))+(tabSpeakerY(0)*tabSpeakerY(0))+(tabSpeakerZ(0)*tabSpeakerZ(0)))
tabSpeakerX(1) = 1.0;
tabSpeakerY(1) = 0.0;
tabSpeakerZ(1) = 1;
tabSpeakerD(1) = 1.41421;
tabSpeakerX(2) = 0.0;
tabSpeakerY(2) = 0.0;
tabSpeakerZ(2) = 1;
tabSpeakerD(2) = 1.0;
tabSpeakerX(3) = -1.0;
tabSpeakerY(3) = 0.0;
tabSpeakerZ(3) = -1.0;
tabSpeakerD(3) = 1.41421;
tabSpeakerX(4) = 1.0;
tabSpeakerY(4) = 0.0;
tabSpeakerZ(4) = -1.0;
tabSpeakerD(4) = 1.41421;
tabSpeakerX(5) = -1.0;
tabSpeakerY(5) = -1.0;
tabSpeakerZ(5) = 1.0;
tabSpeakerD(5) = 1.73205;
tabSpeakerX(6) = 1.0;
tabSpeakerY(6) = -1.0;
tabSpeakerZ(6) = 1.0;
tabSpeakerD(6) = 1.73205;
tabSpeakerX(7) = -1.0;
tabSpeakerY(7) = -1.0;
tabSpeakerZ(7) = -1.0;
tabSpeakerD(7) = 1.73205;
tabSpeakerX(8) = 1.0;
tabSpeakerY(8) = -1.0;
tabSpeakerZ(8) = -1.0;
tabSpeakerD(8) = 1.73205;
tabSpeakerX(9) = 0.0; // plafond : coordonnées ajoutées au 9.1
tabSpeakerY(9) = -1.0;
tabSpeakerZ(9) = 0.0;
tabSpeakerD(9) = 1.0;
dtencGen(in, out) = sqrt(pow(tabSpeakerX(out)-x(in),2) + pow(tabSpeakerY(out)-y(in),2) + pow(tabSpeakerZ(out)-z(in),2));
hspot = hslider("Hot Spot",-20,-50,0,1);
dgain(in, out) = ba.db2linear((hspot/tabSpeakerD(out))*dtencGen(in,out));
x(i) = hslider("/X%i",0,-1,1,0.01);
y(i) = hslider("/Y%i",0,-1,1,0.01);
z(i) = hslider("/Z%i",0,-1,1,0.01);
Fader(in,out)= vgroup("[1]Input %2in",dgain(in,out));
cdistance=hslider("dt",1,0,1,0.1);
paramDistance(x)=hgroup("[2]Distance",x);
//-----------------------------------------------------------
// LPF
//-----------------------------------------------------------
//minfreq=paramDistance(vslider("LPF Min",100, 20, 2000, 1));
ampfreq=paramDistance(vslider("LPF Amp",5000, 20, 19980, 1));
rpf=ampfreq:floor;
LPF=fi.lowpass(3,rpf);
fbp = checkbox("[0] Bypass [tooltip: When this is checked, the filters has no effect]");
filter=paramDistance(vgroup("FILTERS",ba.bypass1(fbp,hgroup("[1]",LPF))));
//-----------------------------------------------------------
// Pitchshifting
//-----------------------------------------------------------
pwindow=paramDistance(hslider("window (samples)[style:knob]", 1000, 50, 10000, 1));
pxfade=paramDistance(hslider("xfade (samples)[style:knob]", 10, 1, 10000, 1));
pshift=paramDistance(vslider("shift (semitones) ", 0, -12, +12, 0.1):si.smoo);
pbp = checkbox("[0] Bypass [tooltip: When this is checked, the filters has no effect]");
transpose=paramDistance(vgroup("Transpose",ba.bypass1(pbp,hgroup("[1]",ef.transpose(pwindow,pxfade,pshift)))));
//-----------------------------------------------------------
// Delay
//-----------------------------------------------------------
delay_group(x) = paramDistance(vgroup("[2]DELAY", x));
cbp =delay_group(vgroup("[0]",checkbox("Bypass [tooltip: When this is checked, Delay has no effect]")));
voice = delay_group(vgroup("[1]",(+ : de.sdelay(N, interp, dtime)) ~ *(fback)));
N = int(2^19);
interp = hslider("[2]interpolation[unit:ms][style:knob]",10,1,100,0.1)*ma.SR/1000.0;
fback = hslider("[1]feedback[style:knob]",0,0,100,0.1)/100.0;
dtime = hslider("[0]delay[unit:ms][style:knob]", 0, 0, 1000, 0.01)*ma.SR/1000.0;
delay = ba.bypass1(cbp,voice);
//-----------------------------------------------------------
// Freeverb
//-----------------------------------------------------------
scaleroom = 0.28;
offsetroom = 0.7;
allpassfeed = 0.5;
scaledamp = 0.4;
fixedgain = 0.1;
origSR = ma.SR;
g=parameters(vslider("[1] Wet [tooltip: The amount of reverb applied to the signal
between 0 and 1 with 1 for the maximum amount of reverb.]", 0.3333, 0.3, 1, 0.025));
freeverbMono=_<: (*(g)*fixedgain :re.mono_freeverb(combfeed, allpassfeed, damping, spatSpread)),*(1-g):> _;
parameters(x) = paramDistance(hgroup("[3]Freeverb",x));
knobGroup(x) = parameters(vgroup("[1]",x));
fvbp = knobGroup(checkbox("[0] Bypass [tooltip: When this is checked, the freeverb has no effect]"));
damping = knobGroup(vslider("[1] Damp [style: knob] [tooltip: Somehow control the density of the reverb.]",0.5, 0, 1, 0.025)*scaledamp*origSR/ma.SR);
combfeed = knobGroup(vslider("[2] RoomSize [style: knob] [tooltip: The room size between 0 and 1 with 1 for the largest room.]", 0.5, 0, 1, 0.025)*scaleroom*origSR/ma.SR + offsetroom);
spatSpread = knobGroup(vslider("[3] Stereo Spread [style: knob] [tooltip: Spatial spread between 0 and 1 with 1 for maximum spread.]",0.5,0,1,0.01)*46*ma.SR/origSR: int);
freeverb = ba.bypass1(fvbp,freeverbMono);
};
process = Matrix(1,10); // le deuxième chiffre permet de définir la dimension de votre espace : ici 10.
Vous pouvez éditer ce document dans votre éditeur préféré et l'enregister dans votre dossier de travail. Vous pouvez ensuite importer ce fichier dans faustIDE. Ensuite cliquez sur Run pour le tester. Si tout va bien vous pouvez générer les greffons au format LV2 et/ou VST pour votre système en cliquant sur dans l'IDE.
Voici le diagramme du greffon obtenu pour un objMatrix51 :
SpaceCreate est un utilitaire pour faciliter la conception d'un nouvel espace de projection haut parlant.
En sauvegardant le nouvel espace que vous avez créé, vous pouvez disposer d'un fichier rassemblant les coordonnées des hauts-parleurs, mais aussi d'un tableau au format HTML afin de pouvoir l'intégrer dans une documentation. Il propose également la génération du greffon correspondant sous la forme d'un fichier DSP, qui peut être directement chargé dans faustIDE pour compilation. Ces fichiers sont disponibles dans /usr/local/share/multiSpace3D/Plugins/DSP.
Pour créer un nouvel espace, vous devez procéder par plan. Il est indispensable de disposer d'au moin un plan :
Pour sélectionner un plan, il suffit de cliquer sur le cadre correspondant.
En cliquant avec le bouton gauche sur le quadrillage, vous pouvez insérer un haut-parleur. La touche Del/Suppr permet de le supprimer. Vous ne pouvez voir dans le quadrillage que les hauts-parleurs définis pour le plan actif. Vous pouvez toujours repositionner les hauts-parleurs en les glissant sur le quadrillage. Le point de référence se situe à l'angle haut gauche de l'icône. Les valeurs des coordonnées apparaissent dans le tableau en bas à droite.
Ce tableau permet le tri des coordonnées par les numéros de sortie du greffon, les numéros de canaux ou par plan. Vous pouvez renuméroter manuellement les sorties et les canaux en saisissant les valeurs dans les cases correspondantes. Il faut sélectionner un haut-parleur pour modifier sa sortie ou son canal dans le tableau.
Les canaux dont la sortie est égale à 0 sont ignorés pour le code DSP. Ceci permet de positionner des caissons non utilisés pour la spatialisation comme dans le cas du canal 4 du 5.1 par exemple.
Si vous cliquez sur le repère 3D, vous obtiendrez une nouvelle fenêtre qui vous proposera une représentation 3D OpenGl. Vous pouvez faire tourner le repère en déplaçant la souris, bouton gauche enfoncé.
Cette fenêtre est importante, car elle permet de vérifier la cohérence de la structure de l'espace.
Ouverture du fichier dont le nom figure sur la ligne en dessous sans extension. | |
Enregistrement du nouvel espace (fichier des coordonnées et fichier html). | |
Génération du fichier DSP pour une compilation locale ou avec faustIDE | |
Ouverture de la vue 3D OpenGl. |
Le bouton Multi permet de visualiser tous les hauts-parleurs. Par défaut, vous ne voyez que les hauts-parleurs du plan actif.
Avec cet outil vous pouvez modifier tous les greffons qui se trouvent dans le dossier /usr/local/share/multiSpace3D/DSP.Vous devrez évidemment l'importer dans votre espace de travail afin de pouvoir enregistrer les modifications. Si vous désirez retrouver la version original d'un greffon que vous avez modifié vous pouvez toujours le recopier dans votre dossier de travail à partir de ce dossier.
Le spaceCreate enregistre la configuration d'un studio avec l'extension .dst et fournit la description de celui-ci sous la forme d'un tableau html. Le fichier .dsp correspondant peut être généré directement et compiler en local ou avec FaustIDE.
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 : matrix license : "BSD".