Peinture Poesie Musique

Alètheia ( ἀλήθεια )

Espace logiciels

Première page Page précédente Page suivante Dernière page

Projet multiSpace3D version 0.4, 14 Décembre 2020

  1. Présentation
  2. Installation du programme
  3. Change Log
  4. Compilation
  5. La Matrix
  6. Le Cube
  7. Interface
  8. Les greffons
  9. Utilisation
  10. Options de la barre d'outils
  11. Dispositifs :
  12. Définir un nouvel espace et créer un nouveau greffon
  13. License

Présentation

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.2 du space3D64 , en raison de modification profonde de conception.

multiSpace3D


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.

Archive

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.

Installation du programme

Pour LibraZiK2, vous pouvez charger les binaires ici :

Archive



cd (votre dossier de décompression)/multiSpace
sudo make install

Sous Linux, Debian/LibraZiK2, 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

Je n'ai pas testé pour LibraZiK3.

Au premier lancement, il créera un dossier multiSpace3D dans votre espace utilisateur dans lequel vous trouverez les greffons et le fichier de configuration.

multiSpace3D dépend de SFML 2,4, glm 0,9,8, d’OpenGl et de Liblo que vous devez installer si vous ne l’avez pas déjà fait.

Le programme propose 15 greffons pour Ardour et Reaper aux formats Lv2 et VST :
Auro51, Auro71, Auro91, Auro11, Auro13,micadome, M17, Dominium, NHK222, ZKM23, RfStudio, Ircam, Satosphere, Klangdom, dispositifDb64
Vous pouvez installer ceux qui vous conviennent dans les répertoires correspondants, par exemple ~/.lv2 pour Ardour et ~/.vst pour Reaper. Sous Linux, Reaper ne reconnaît que les vst.
Ces greffons sont indispensables pour le fonctionnement complet de l’application. ils se trouvent dans les dossiers $HOME/space3D/lv2 et $HOME/space3D/vst (vst Linux 64bits)
Ils ont été compilés à partir des sources du Grame pour le langage Faust et sont sous licence BSD.

  • multiSpace3D.bin constitue l'application proprement dite.
  • multiSpace3D.sh est un script de lancement du programme. Vous pouvez l'utiliser pour un lanceur sur le bureau sans avoir besoin d'un terminal.
  • Le dossier gui renferme les images nécessaires au fonctionnement de l'application.
  • Le dossier Plugins renferme les greffons nécessaires au fonctionnement de l'application.
  • Le dossier Plugins/DSP renferme les fichiers de configurations des espaces hauts-parlants et des DSP correspondants.
  • Le dossier Plugins/Linux ou Windows renferme les greffons proprement dits.

Les modèles ne sont pas installés automatiquement.

Le script multiSpace3D.sh suppose que le programme est bien installé en /usr/local. Ce script est indispensable, car il transmet des informations de configuration au programme.

Je vous encourage à installer le programme spaceMeter64 pour suivre visuellement l'activité de votre studio en pseudo 3D.

SpaceMeter64

Ce programme est sous licence GNU General Public License. Voir plus loin.

Change Log

Change Log Révision : 0.4 du 14.12 2020
  • Il est maintenant possible d'enregistrer er de récupérer une configuration d'objets pour une oeuvre donnée.
Change Log Révision : 0.3 du 17.11 2020
  • Un greffon par modèle d'espace : objMatrix51, objMatrix71, objMatrix91, objMatrix111,objMatrix131, objMatrixMicadome, objMatrix171, objMatrix18, objMatrixNHK222, objMatrixZKM23, objMatrixRf, objMatrixIrcam, objMatrixSatosphere, objMatrixKlangdom, objMatrixRoom64.
  • Il faut un greffon par piste dans le DAW. Les sorties des greffons peuvent être routées sur un bus.
  • Les paramètres transmis au greffon correspondent aux coordonnées cartésiennes de l'objet
  • Le greffon calcule les paramètres de sortie de la matrix (Faust) en fonction des coordonnées (x,y,z)
  • Le greffon inclue les effets LPF, Delay et Freeverb pour accompagner la gestion de la distance. Celle-ci est calculée relativement au point central du cube.
  • Pas de limite théorique sur le nombre d'objets
  • Remplacement du menu par une barre d'outils
  • Il n'y a plus de gestion des trajectoires, celles-ci pouvant être gérées par le DAW par automation.
  • Possibilité de créer de nouveaux modèles d'espaces avec l'application dédiée.
Change Log Révision : 0.2 du 19.08 2019
  • Menu général
  • Gestion de projets et de fichiers
  • Amélioration de l'interface (nouvelles fenêtres, palette, gestion de la distance des sources)
  • la communication avec Ardour ou Reaper se fait avec le protocole OSC
  • une palette d'outils plus riche
  • gestion de la distance avec sélection et contrôle de plugins(crossDelay, zita-reverb1, parametrixEQ, pitchshifter)
  • modèle pour Ardour et Reaper
Change Log Révision : 0.02 du 21 03 2019
  • Il est maintenant possible de sélectionner librement une entrée pour un groupe.
  • Affichage d'une fenêtre présentant le Studio afin d'identifier le numéro des enceintes.
  • Modification des fonctions d'effacements afin de bien réduire au silence les entrées supprimées
  • Il n'y plus de connexion automatique aux sorties matérielles de Jack afin de pouvoir interfacer une application, Jack-Mixer, par exemple.
  • CRÉATION DU MODULE 3D OpenGL
  • INTÉGRATION DES CHEMINS DE DÉPLACEMENTS DES OBJETS DANS L'ESPACE

Compilation

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 que vous devez installer si vous ne l’avez pas déjà fait.
Si vous désirez compiler vous même les plugins, vous devrez installer Faust. Les fichiers DSP sont, après le premier lancement de l'application, dans le dossier $HOME/space3D/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

Make utilise la commande suivante pour compiler :


$(CXX)  -std=c++17 -O3 multiSpace3D.cpp -I $(INC) -lstdc++fs -lsfml-graphics -lsfml-window -lsfml-system -llo -lGL -lGLU  -lGL  -DGL_GLEXT_PROTOTYPES  -lpthread `pkg-config ` -o multiSpace3D.bin
Si tout se passe bien vous pouvez finaliser en tapant :

sudo make install

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 :

  • Pour des Lv2 :
    
    faust2lv2 -qt4 (nom du plugin).dsp
    

    Ceci vous donnera un dossier LV2 à installer dans le dossier .lv2 de votre espace utilisateur.
  • Pour des vst :
    
    faust2faustvst -qt4 (nom du plugin).dsp
    

    Ceci vous donnera un fichier .so à installer dans le dossier .lxvst ou .vst de votre espace utilisateur.

Pour Linux Debian/LibraZiK2vous pouvez télécharger ces fichiers précompilés sous la forme d'une archive à décompresser dans le dossier /usr/local/share/space3D/Plugins/ et $home/space3D/Plugins/

Archive

La compilation sous Windows est identique avec Msys2.
La compilation des plugins doit se faire avec le faustIDE

La Matrix

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.

Quinze modèles d'espace sont proposés sous la forme de greffons. 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 :

Matrix

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);

Le Cube

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.

Cube

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.

Gestion de la localisation des sources dans l’espace

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.

Vous pouvez créer un nouveau mixer en entrant le numéro de la piste dans le champ Track et en cliquant sur le bouton créer. 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 groupe vous pouvez sélectionner un des 32 groupes :

cube

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 :

groupePermets de récupérer la répartition dans l'espace des objets pour un instant t. Les fichiers se trouvent dans $HOME/space3D/.
groupePermets d'enregistrer la répartition dans l'espace des objets pour un instant t.
groupePermets de lancer une nouvelle instance de multiSpace3D. Ceci peut permettre de gérer indépendamment un groupe d'objets.
groupeSupprimer une sourceSupprimer un groupeSupprimer toutes les sources
groupeDéplacer une sourceDéplacer un groupeTout déplacer

Les fonctions disponibles :

groupeExpansion d’un groupe (uniquement si le groupe comporte plusieurs sources)
groupeContraction d’un groupe (uniquement si le groupe comporte plusieurs sources)
groupeRotation Y en fonction du type de déplacement
groupeRotation X en fonction du type de déplacement
groupeRotation Z en fonction du type de déplacemen
groupeFenêtre vue 3D OpenGl
groupeUtilitaire de création d'un nouvel espace de projection.

La touche Del/Suppr permet de supprimer le haut-parleur sélectionné.

Pour les déplacements 3D, la gestion d’un joystick est envisagée.
Pour l’immédiat il faut jongler entre les 4 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 param ouvre une nouvelle fenêtre qui permet de définir le séquenceur et la configuration OSC.

cube

Les greffons

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 :


dgain(in, out) = ba.db2linear((-50/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.

plugin

FilterLPF AmpCe slider permet de définir l'amplitude de variation de la fréquence de coupure ( de 20 à 20000)
LPF Min Ce slider permet de définir une valeur minimale pour la coupure LPF
Delay Feedback Retour du Delay
Interpolation Interpolation
MaxTime Variation maximale du delay (de 0 à 5000)
FreeverbDampRéglage du Damp
RoomSizeRéglage de la dimension de l'espace
Stéréo Spread

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.

Utilisation

Les pistes associées du séquenceur doivent être mono.

Dans votre séquenceur vous placez le greffon correspondant à votre studio ou à la disposition que vous souhaitez 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 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.

Les espaces associés.

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 correspondent aux canaux des fichiers audios pour le 13.1.

2d et Auro3D

Auro13.1

Ref : J.M Duchenne Les sons dans l'air

Coord.
(x,y,z)
5.17.19.111.113.1
XYZMCMCMCMCMC
Front Left-1.0-0.181.011111 1 1 1 1 1
Front Right1.0-0.181.022222 2 2 2 2 2
Front Center0.0-0.181.0333333 33 33
LFE44 4 4 4
Surround Left-1.0-0.18-1.04545454545
Surround Right1.0-0.18-1.05656565656
Side Left-1.0-0.180.567 67
Side Right1.0-0.180.57878
Top Front Left-1.00.8121.0676789
Top Front Right1.00.8121.07878910
Top Back Left-1.00.812-1.089891011
Top Back Right1.00.812-1.09109101112
Top Front Center0.01.00.81210111213
Top Center0.01.00.0 11121314

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.

17.1

M17.1

Coord.Cartésiennes
SortiesCanalXYZ
11-1.000-0.1810.975
221.000-0.1811.000
330.007-0.1810.985
04
45-1.000-0.181-1.000
560.956-0.181-1.000
67-0.501-0.1811.000
780.501-0.1811.000
89-0.002-0.181-1.000
910-1.000-0.1810.283
10111.000-0.1810.283
1112-0.0571.000-0.056
1213-1.0000.6240.975
1314-0.0070.6241.000
14151.0000.6241.000
1516-1.0000.624-1.000
16171.0000.624-1.000
1718-0.0320.624-1.000

Ref : J.M Duchenne Les sons dans l'air


NHK 22.2

NHK22.2

Coord.Cartésiennes
SortiesCanalXYZ
11-1.000-0.1810.990
221.000-0.1811.000
33-0.007-0.1811.000
4
45-1.000-0.181-1.000
561.000-0.181-1.000
67-0.501-0.1810.990
780.501-0.1811.000
890.002-0.181-1.000
10
911-1.000-0.1810.288
10121.000-0.1810.288
1113-1.0000.6191.000
12141.0000.6191.000
13150.0070.6191.000
1416-0.0621.000-0.061
1517-1.0000.619-1.000
16181.0000.619-1.000
1719-1.0000.6190.288
18201.0000.6190.283
19210.0070.619-1.000
20220.002-1.0001.000
2123-1.000-1.0001.000
22241.000-1.0001.000

Ref : J.M Duchenne Les sons dans l'air


Micadôme 16

Micadôme

Ref : MICADÔME


Coord.Cartésiennes
SortiesCanalXYZ
11-0.437-0.3880.965
220.373-0.3880.970
33-1.000-0.3880.399
441.000-0.3880.409
55-1.000-0.388-0.515
661.000-0.388-0.515
77-0.412-0.388-1.000
880.383-0.388-1.000
99-0.7930.4120.242
10100.8220.4120.247
1111-0.7980.412-0.354
12120.8020.412-0.348
1313-0.0620.4120.803
1414-0.0620.412-0.793
1515-0.2441.000-0.056
16160.1211.000-0.051
017-0.788-1.0001.000
0180.802-1.0001.000

Dominium (18)


18

Juste une curiosité. Ce dispositif correspond à la stucture de mon studio.


Coord.Cartésiennes
SortiesCanalXYZ
11-0.5000.0001.000
220.5000.0001.000
330.0000.0001.000
44-1.0000.0000.500
551.0000.0000.500
66-1.0000.000-0.500
771.0000.000-0.500
88-1.0001.0000.500
99-1.000-1.0001.000
10101.0001.0000.500
11111.000-1.0001.000
1212-1.0001.000-0.500
1313-1.000-1.000-1.000
14141.0001.000-0.500
15151.000-1.000-1.000
1616-0.5000.000-1.000
17170.5000.000-1.000
18180.0001.0000.000

ZKM 23

ZKM23

Ref : ZKM


Coord.Cartésiennes
SortiesCanalXYZ
11-0.007-0.3741.000
220.477-0.3740.758
330.590-0.3740.061
440.758-0.374-0.318
550.462-0.374-0.722
660.007-0.374-1.000
77-0.511-0.374-0.717
88-0.758-0.374-0.318
99-0.753-0.3740.268
1010-0.526-0.3740.742
11110.2350.2190.540
12120.6100.2190.162
13130.6050.219-0.237
14140.2440.219-0.646
1515-0.1850.219-0.646
1616-0.6000.219-0.247
1717-0.5950.2190.141
1818-0.1800.2190.535
1919-0.0570.8070.207
2020-0.3140.807-0.061
2121-0.0520.807-0.354
22220.2890.807-0.056
2323-0.0671.000-0.056

IRCAM studio 1 (24)

ZKM23

Ref : IRCAM


Coord.Cartésiennes
SortiesCanalXYZ
110.002-0.5810.899
220.778-0.5810.606
331.000-0.5810.000
440.773-0.581-0.601
550.254-0.581-1.000
66-0.274-0.581-1.000
77-0.719-0.581-0.591
88-1.000-0.581-0.010
99-0.714-0.5810.601
10100.220-0.1810.606
11110.664-0.1810.162
12120.669-0.181-0.273
13130.353-0.181-0.717
1414-0.042-0.181-0.808
1515-0.506-0.181-0.697
1616-0.743-0.181-0.288
1717-0.743-0.1810.152
1818-0.398-0.1810.586
1919-0.1060.5250.348
20200.3430.5250.086
21210.2350.525-0.429
2222-0.2150.525-0.545
2323-0.5210.525-0.076
2424-0.1061.000-0.146

Radio France studio 115 (29)

Radio France studio 115

Ref : Radio France


Coord.Cartésiennes
SortiesCanalXYZ
11-0.585-0.3741.000
22-0.190-0.3741.000
330.205-0.3741.000
440.605-0.3741.000
551.000-0.374-0.591
661.000-0.374-0.197
771.000-0.3740.197
881.000-0.3740.601
990.610-0.374-1.000
10100.210-0.374-1.000
1111-0.195-0.374-1.000
1212-0.590-0.374-1.000
1313-1.000-0.374-0.591
1414-1.000-0.374-0.197
1515-1.000-0.3740.207
1616-1.000-0.3740.601
1717-0.3330.2191.000
18180.3430.2191.000
19191.0000.219-0.394
20201.0000.2190.404
21210.3380.219-1.000
2222-0.3230.219-1.000
2323-1.0000.219-0.399
2424-1.0000.2190.409
2525-0.4020.807-0.056
26260.4070.807-0.061
27270.0070.8070.283
28280.0020.807-0.404
2929-0.0621.000-0.056

Satosphère(31)

satosphere

Ref : Satosphère


Coord.Cartésiennes
SortiesCanalXYZ
11-0.0621.000-0.061
22-0.4120.7790.081
33-0.3280.779-0.323
440.0020.779-0.449
550.2990.779-0.182
660.2250.7790.242
77-0.1310.7790.384
88-0.0520.2140.672
99-0.4070.2140.561
1010-0.6890.2140.359
1111-0.8470.2140.000
1212-0.6990.214-0.348
1313-0.4220.214-0.581
1414-0.0620.214-0.667
15150.3480.214-0.581
16160.6350.214-0.333
17170.7980.2140.010
18180.6440.2140.369
19190.3580.2140.596
20200.007-0.1811.000
2121-0.501-0.1810.798
2222-0.872-0.1810.414
2323-1.000-0.181-0.051
2424-0.872-0.181-0.495
2525-0.506-0.181-0.793
2626-0.002-0.181-1.000
27270.501-0.181-0.823
28280.872-0.181-0.460
29291.000-0.181-0.005
30300.847-0.1810.480
31310.511-0.1810.904

ZKM Klangdom(43)

Klangdom


Ref (Anneau elliptique dans un cube): ZKM Klangdom

Coord.Cartésiennes
SortiesCanalXYZ
11-0.002-0.562-1.000
22-0.585-0.562-0.914
33-1.000-0.562-0.646
44-1.000-0.562-0.202
55-1.000-0.5620.237
66-1.000-0.5620.677
77-0.516-0.5621.000
88-0.002-0.5621.000
990.472-0.5621.000
10101.000-0.5620.667
11111.000-0.5620.354
12121.000-0.562-0.152
13131.000-0.562-0.606
14140.442-0.562-0.737
1515-0.3580.002-0.742
1616-0.7140.002-0.540
1717-0.6990.002-0.207
1818-0.7090.0020.121
1919-0.7090.0020.409
2020-0.5060.0020.672
2121-0.1460.0020.677
22220.2150.0020.692
23230.6000.0020.702
24240.6150.0020.258
25250.6150.002-0.045
26260.6100.002-0.384
27270.1110.002-0.409
28280.1160.412-0.485
2929-0.2540.412-0.571
3030-0.5950.412-0.409
3131-0.5950.412-0.030
3232-0.5700.4120.303
3333-0.3280.4120.404
3434-0.0270.4120.409
35350.2640.4120.354
36360.3230.412-0.056
37370.1510.769-0.237
3838-0.0910.769-0.354
3939-0.3190.769-0.202
4040-0.3140.7690.086
4141-0.0860.7690.247
42420.1750.7690.091
4343-0.0571.000-0.051

Dispositif DB64

Studio


Studio

Vue arrière

Coord.Cartésiennes
SortiesCanalXYZ
11-0.500-1.0001.000
220.000-1.0001.000
330.500-1.0001.000
441.000-1.0001.000
551.000-1.0000.500
661.000-1.0000.000
771.000-1.000-0.500
881.000-1.000-1.000
990.501-1.000-1.000
10100.000-1.000-1.000
1111-0.500-1.000-1.000
1212-1.000-1.000-1.000
1313-1.000-1.000-0.500
1414-1.000-1.0000.000
1515-1.000-1.0000.500
1616-1.000-1.0001.000
1717-0.500-0.1801.000
18180.000-0.1801.000
19190.500-0.1801.000
20201.000-0.1801.000
21211.000-0.1800.500
22221.000-0.1800.000
23231.000-0.180-0.500
24241.000-0.180-1.000
25250.501-0.180-1.000
26260.000-0.180-1.000
2727-0.500-0.180-1.000
2828-1.000-0.180-1.000
2929-1.000-0.180-0.500
3030-1.000-0.1800.000
3131-1.000-0.1800.500
3232-1.000-0.1801.000
3333-0.5000.6201.000
34340.0000.6201.000
35350.5000.6201.000
36361.0000.6201.000
37371.0000.6200.500
38381.0000.6200.000
39391.0000.620-0.500
40401.0000.620-1.000
41410.5010.620-1.000
42420.0000.620-1.000
4343-0.5000.620-1.000
4444-1.0000.620-1.000
4545-1.0000.620-0.500
4646-1.0000.6200.000
4747-1.0000.6200.500
4848-1.0000.6201.000
4949-0.393-1.000-0.399
5050-0.002-1.000-0.399
51510.402-1.000-0.399
5252-0.398-1.0000.000
53530.000-1.0000.000
54540.407-1.0000.000
5555-0.393-1.0000.404
56560.002-1.0000.409
57570.407-1.0000.409
5858-0.2441.000-0.399
59590.2491.000-0.399
6060-0.3831.0000.010
61610.0001.0000.000
62620.4071.0000.005
6363-0.2251.0000.404
64640.2541.0000.404

Définir un nouvel espace et créer un nouveau greffon

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) =_:filters(1):delay:freeverb(1)<: 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));

    dgain(in, out) = ba.db2linear((-50/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(in)=sqrt(pow(0-x(in),2) + pow(0-y(in),2) + pow(0-z(in),2));

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(in)=minfreq+(ampfreq*min(1,cdistance(in))):floor;
LPF(in)=fi.lowpass(3,rpf(in));

fbp = checkbox("[0] Bypass  [tooltip: When this is checked, the filters has no effect]");
filters(in)=paramDistance(vgroup("FILTERS",ba.bypass1(fbp,hgroup("[1]",LPF(in)))));

//----------------------------------------------------------
//                    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("interpolation[unit:ms][style:knob]",10,1,100,0.1)*ma.SR/1000.0; 
		//dtime   = hslider("delay[unit:ms][style:knob]", 0, 0, 5000, 0.1)*ma.SR/1000.0;
        maxtime = hslider("maxtime[style:knob]",100,0,5000,0.1);
		  fback = hslider("feedback[style:knob]",0,0,100,0.1)/100.0;
        dtime = maxtime-(maxtime*min(1,cdistance(1))*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 = 48000;

g=1-((1/1.73205)*min(1.73205,cdistance(1)));
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(in) = 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 $HOME/space3D/Plugins. 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 Camion dans l'IDE.

Voici le diagramme du greffon obtenu pour un objMatrix51 :

Studio

SpaceCreate

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 $home/space3D/Studios

Studio


Pour créer un nouvel espace, vous devez procéder par plan. Il est indispensable de disposer d'au moin un plan :

Studio

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.

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.

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.

StudioOuverture du fichier dont le nom figure sur la ligne en dessous sans extension.
StudioEnregistrement du nouvel espace (fichier des coordonnées et fichier html).
StudioGénération du fichier DSP pour faustIDE
StudioOuverture de la vue 3D OpenGl.

Le bouton All 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 votre dossier $home/space3D/DSP. Si vous désirez retrouver la version original d'un greffon que vous avez modifié vous pouvez toujours le recopier dans votre dossier à partir de /usr/local/share/space3D/Plugins/DSP

License

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 : matrix license : "BSD".

Première page Page précédente Page suivante Dernière page