Peinture Littérature Musique

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

Espace logitiels

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

Projet space3D64 version 0.02 Mars 2019

Présentation

Space3D64 est un spatialiseur 64 canaux.Il repose sur une API généré à partir des exemples fournis sur le site consacré au langage Faust du Grame.
La présentation de ce langage est proposée sur une page dédié.

space3D64

Archive Archive

Installation du programme

La première chose à faire est de décompressé l'archive dans un dossier ~/bin/space3D64 créé pour l'occasion. Vous obtenez 2 fichiers et un dossier d'images.

  • space3D64bin constitue l'application proprement dit.
  • space3D64 est un script pour réaliser un lanceur sur le bureau sans avoir besoin d'un terminal.
  • Le dossier renferme les images nécessaires au fonctionnement de l'application.

Si vous installer ce programme dans un autre dossier vous devez éditer le script "space3D" pour préciser le nouveau chemin de l'application.

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

Compilation

Vous devez décompresser l'archive contenant les sources dans un dossier temporaire.
Dans celui-ci, il suffit de faire :


g++ DspFaust.cpp space3D64.cpp -o space3D64bin -lsfml-graphics -lsfml-window -lsfml-system  -lGL -lGLU  -lGL  -DGL_GLEXT_PROTOTYPES  `pkg-config  --cflags  --libs jack sndfile`

Vous devez disposer des librairies suivantes avec les fichiers de développement correspondants :
SFML, OpenGl et glm.

Les fichiers DspFaust ont été généré à partir d'une version "master-dev" afin de pouvoir disposer de la possibilité de ne pas connecter automatiquement les sorties de la matrice aux sorties matériels de jack.
Vous n'avez pas besoin du compilateur Faust pour compiler cette application.

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.

Archive

  • CRÉATION DU MODULE 3D OpenGL
  • INTÉGRATION DES CHEMINS DE DÉPLACEMENTS DES OBJETS DANS L'ESPACE

Archive Archive

Principe

Lorsque vous lancez l'application, vous disposez de 64 entrées. Chaque entrée est distribuée sur les 64 sorties suivant le principe de ce schéma proposé dans les examples du Grame pour une matrice 8x8:

matrix

Afin de pouvoir répondre à tous les besoins, space3D64 propose une matrice 64x64. Les connexions des sorties doivent respecter le schéma de répartition spatiale décrit dans l'article sur le spaceMeter64.

Nous pouvons admirer la concision du code Faust pour construire cette API :


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 %in", -10, -96, 4, 0.1));
Mixer(N,out)    = hgroup("Output %out", par(in, N, *(Fader(in)) ) :> _ );
Matrix(N,M)     = tgroup("Matrix %N x %M", par(in, N, _) <: par(out, M, Mixer(N, out)));

process = Matrix(64, 64);

Utilisation

Lorsque space3D64 est activé, un panneau de connexion apparait dans Claudia, si vous utilisé Claudia, ou dans QjackCtl. Les entrées, qui peuvent venir d'Ardour, de LMMS, ...doivent être définies. Comme il a été indiqué plus haut, les sorties, qui correspondent aux enceintes du studio, doivent être connectées en respectant la numérotation proposée. Vous pouvez découvrir le studio en cliquant sur l'icone Studio. Vous ne pouvez refermer cette fenêtre qu'en cliquant à nouveau sur l'icone.
L'utilisation de jack_mixer comme interface pour les sorties réelles permet de suivre sur le mixer les conséquences du déplacement dans l'espace des différentes entrées. Vous pouvez également utiliser le SpaceMeter64 pour également visualiser vos objets sonores dans l'espace.
Si vous lancer space3D64 à partir d'un terminal vous pouvez suivre en temps réel les valeurs de gain affectées à chaque sorties.

Space3D64 présente une première fenêtre non redimensionnable, divisée en trois panneaux.

  • Un premier panneau qui présente un espace 2D avec un utilisateur regardant vers la droite. Ce panneau est dédié à la gestion des hauteurs.
  • Un deuxième panneau, en-dessous du précédent, présentant un damier correspondant aux numéro des entrées et un sélecteur d'objet.
  • Enfin, un grand panneau destiné au contrôle de la spatialisation dans le plan horizontal, vue de-dessus. C'est surtout à partir de celui-ci que se fait le positionnement des entrées.

Sur la partie supérieure de la fenêtre se trouve une barre d'outils.

Pour activer une entrée il faut sélectionner une entrée en cliquant sur le damier. Elle appartiendra au dernier groupe sélectionné, boule rouge par défaut. Cet objet est placé au centre du panneau maître. Afin de pouvoir organiser vos groupes, il faut penser choisir celui-ci avant les entrées. Les 64 entrées peuvent ainsi être réparties en 8 groupes.

Type d'objet/entrée

Un objet peut être déplacé par drag&drop, dans le panneau de la vue par-dessus, sur tout l'espace. En fonction de la configuration du studio, vous pouvez entendre sur les enceintes concernées l'audio correspondant à l'entrée choisie. La sélection d'un type d'objet permet par la suite de déplacer dans l'espace des groupes d'entrées, et seulement celles qui appartiennent à ce groupe, sans modifier les autres.

Type d'objet/entrée

La hauteur est contrôler de plusieurs façon. Soit les touches flêche hautflêche bas sont utilisées pour monter ou descendre les entrées dans le plan vertical, soit on utilise la molette. La fenêtre de gauche permet de suivre le positionnement vertical.

Type d'objet/entrée

Vous pouvez également cliquer dans l'espace vertical pour positionner rapidement un objet.

Effacer Effacer le dernier objet actif
Effacer Effacer les objets correspondants au groupe de l'objet actif
Effacer Effacer tous les objets
Déplacer Déplacement d'un simple objet
Déplacer Déplacement des objets correspondants au groupe de l'objet actif.
Déplacer Déplacements de tous les objets.
Mute Muter l'entrée active. Contrairement à l'effacement, les coordonnées sont conservées. L'entrée sera repositionnée à la même place si elle est réactivée.
Mute Muter les entrées correspondantes au groupe de l'entrée active
Mute Tout muter.
ModeMutte Soit le calcul du gain se fait relativement aux enceintes (renforcement de la source) , soit relativement à l'auditeur (éloignement).
2d/3dMutte Active la pseudo 3d ou non.
Lacet Edition des Lacets ou Chemins.
Lecture Initialisation/Lecture des lacets ou chemins. La lecture n'est pas possible en mode édition.
Lecture Ouverture/Fermeture de la fenêtre de description du studio.
Lecture Lien vers cette documentation.

Lorsque la fenêtre passe en mode édition deux autres icones apparaissent :

Effacer Enregistrer un lacet.
Effacer Effacer un lacet.

Le calcul du gain, pour chaque sortie, se fait relativement au centre du panneau et de la distance relative de chaque enceinte.


dtCentre=sqrt(pow(centreX-x,2)+pow(centreY-y,2)+pow(centreZ-ztabgen[gen].y,2)); //distance au centre
dgain=(-50/dtEncCentre[i])*dtCentre; // calcul du ratio.

Edition des Lacets

En mode normal, la fenêtre 3d propose un repère constitué de 3 murs virtuels et d'un pupitre placé au centre. Une sphère permet de tourner le repère. La souris permet de le faire tourner dans toutes les directions.
Les objets sont placés dans cette espace et se déplace en fonction des actions réalisées dans l'autre fenêtre ou en suivant les lacets déjà construits.

En mode édition, une barre d'outils apparait à gauche :

Enceintes Visualisation des enceintes (points de projections) sur les murs ( sauf l'arrière, le sol et le plafond pour des raisons de lisibilité). Le passage de la souris sur un élément permet d'afficher son numéro.

Modification d'un point Modification d'un point. Après sélection sur la courbe dans la fenêtre 2D il est possible de déplacer ce point en cliquant sur les flêches du repère 3D ou de l'effacer en appuyant sur la touche Del. ou Suppr. Un point est effectivement sélectionné si son indice apparait dans la zone de texte.

Modification  d'un bloc de  points Modification d'un bloc de points. Il faut sélectionner 2 points sur la courbe dans la fenêtre 2D. Il est possible de déplacer ce bloc en cliquant sur les flêches du repère 3D ou de l'effacer en appuyant sur la touche Del. ou Suppr. Les deux indices du bloc doivent apparaître dans les zones de texte.

Modification d'un lacet Modification d'un lacet. Dans ce cas, il est possible d'appliquer des modifications qui affecte la totalité de la courbe.
Elargissement Élargissement d'un lacet.
Elargissement Resserrement d'un lacet
Elargissement
Elargissement
Elargissement
Modification par symétrie
Elargissement Spacialisation vers le haut
Elargissement Spacialisation vers le bas
Elargissement Modification par inversion du parcours (rétrograde)
Elargissement Accélération du parcours
Elargissement Ralentissement du parcours
Elargissement Parcours en boucle simple ou auto-reverse.
Elargissement Ces flêches permettent de déplacer un point, un bloc de points ou un lacet dans toutes les directions.

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
D