Page 1 sur 1

Fragment - Synthétiseur Spectral Collaboratif

Publié : 16 août 2017, 18:45
par Onirom
Bonjour à tous,

je suis en train de concevoir depuis un petit moment déjà un synthétiseur spectral collaboratif, c'est en fait un peu plus que ça, Fragment est une plate-forme temps-réel au sein du navigateur ou il est possible de générer aussi bien des visuels que de la musique par synthèse additive ou granulaire, le logiciel est une sorte de mix entre MetaSynth, cSound et Max/MSP/Jitter avec un aspect collaboratif.

Voici le lien : https://www.fsynth.com

Voici quelque vidéos : D'autre vidéos sont disponible ici

Je vais décrire les aspects de Fragment en relation aux autres programmes cités plus haut :

MetaSynth car l'aspect principale de Fragment est le fait que TOUS les paramètres de synthèse sonore provienne des données d'une surface de dessin, la surface de dessin étant capturé par l'utilisateur en ajoutant des marques de captures sur l'axe horizontal, les marques étant des lignes verticales d'1 pixel de large sur la hauteur de la surface de dessin.

Dans le cas de la synthèse additive, les données de la surface de dessin (valeurs des pixels, RGBA 8-bits ou 32-bits float) c'est directement le spectre sonore, cad que l'axe verticale de la surface représente les fréquences de la moins haute à la plus haute et les données (R et G) représente l'amplitude de l'oscillateur à onde sinusoïdale, l’échelle de l'axe verticale est logarithmique et dépend de la résolution de la surface de dessin, résolution qui peut être modifié.

Dans le cas de la synthèse granulaire, c'est à peu près similaire mais les données vont aussi représenter d'autre paramètres, la synthèse granulaire étant à un stade très expérimentale.

cSound car pour dessiner sur la surface, tout passe par un seul script qui est exécuté pour chaque pixels (d'ou le nom, Fragment) du coté du processeur graphique à chaque frames, le language qui est utilisé est le GLSL et est similaire à un C très simplifié mais spécialisé pour les tâches graphiques, il n'est pas possible de générer du son sans l'avoir programmé.

Max/MSP/Jitter car Fragment est temps-réel et ce n'est pas qu'un synthétiseur, il peut très bien générer des images et en afficher, Fragment à aussi un aspect modulaire quoique moins flexible que Max/MSP, on peut y importer des images, de l'audio (converti en image), utiliser des contrôleurs MIDI pour moduler des paramètres du script, utiliser une webcam et utiliser plusieurs surface de dessin ou l'on peut dessiner à la souris avec différents pinceaux utilisant des images.

Une documentation (anglais) est disponible ici : https://www.fsynth.com/documentation.html

Pour l'aspect à l'utilisation, Fragment est une application web principalement (utilisant le navigateur), un serveur de son doit être utilisé à coté pour obtenir des performances de synthèse correct même si il est possible de jouer l'audio dans le navigateur (Chrome conseillé), l'approche à l'utilisation c'est de créer premièrement une session via le site officiel puis d'ajouter une marque de capture en cliquant droit sur la surface de dessin principale, ensuite il y à un script de base sur lequel on peut débuter et expérimenter.

Fragment demande pas mal de ressources que ce soit CPU (multi-cœurs de préférence) et GPU (développé avec une NVIDIA GeForce GTX 970).

Fragment possède des applications externes comme un serveur de sons (incontournable pour que les performances et la qualité de la synthèse soit bonne), un éditeur de code, un launcher, le serveur de sons peut aussi être utilisé pour envoyer les données RGBA par OSC vers d'autre programmes.

Voilà un petit aperçu des fonctionnalités coté synthèse :
  • Application temps-réel avec compilation du script à la volée, aussi bien audio que graphique
  • Semi-collaboratif, le code ainsi que certain paramètres sont partagés par des utilisateurs différent de la même session
  • Multitimbral
  • Support MIDI IN (Chrome/Chromium/Opera, Safari? seulement pour le moment)
  • Polyphonie étendue, seulement limité par le GPU
  • Support des sorties audio multiple, il est possible d'assigner un nombre quelconque de sorties audio à différentes parties du spectre, cette feature fonctionne seulement avec le serveur de son
  • Avec un navigateur compatible WebGL 2 Fragment lit la surface de dessin en nombre flottant 32-bits, ça permet d'avoir plus d'espace pour les amplitudes et donc un son de meilleur qualité
  • Un dialogue d'importation permettant d'importer des images, des fichiers audio (converti en images aka resynthèse) avec support drag&drop en masse
  • Fragment permet l'utilisation de la Webcam
  • Une fonctionnalité d'enregistrement du spectre en temps réel avec effets de compositions, il est possible d'exporter le spectre ensuite ou de le ré-importer en tant qu'image
  • Possibilité d'ajouter autant de surface de dessins que l'on souhaite et de pouvoir dessiner dessus à partir d'images
  • Support du feedback, le synthétiseur peut jouer de nouveau ce qu'il vient de jouer à la frame précédente, ça permet de pouvoir faire des effets essentiellement
  • Le serveur de son peut ajouter du bruit aux oscillateurs, ce qui permet d'améliorer le rendu des transients
  • Support GLSL 3 permettant de simplifier l'écriture de certain patches (WebGL 2 seulement)
  • Des aides à l'utilisation, dialogues détachables, éditeur plein écran, analyse du code, gestion des erreurs en temps-réel qui n'interrompt pas la synthèse, mode monaural, guide pour l'interface, documentation...
Pour le coté graphique, Fragment est compatible avec la plupart des shaders du site shadertoy ce qui donne un aperçu des possibilités graphiques : https://www.shadertoy.com

Re: Fragment - Synthétiseur Spectral Collaboratif

Publié : 17 août 2017, 09:33
par baptisteq
Bravo pour tout ce travail, c'est très complet, et les potentiels d'applications sont tellement large que de mon point de vue j'ai un peu de mal à concevoir ce qui peut être fait. Par la suite tu vas réaliser une œuvre à partir de ton outil ? Moi je découvre un peu tout ça (max/MSP Pure Data/ Processing/ VVV ...) à Nantes il y a un laboratoire du code créatif où les gens, dont moi,se forment un peu sur le tas. Ville obligé de l'art numérique avec Scopitone. J'ai eu l'occasion pendant le festival Electrons libres de voir des choses super bien. Par exemple ce type (Laurent Malys):

[vimeo]https://vimeo.com/204015238 [/vimeo]

qui je crois à crée son propre outil et à réaliser une pièce chorégraphique/musicale/abstraite. Ce que j'aime bien c'est qu'il va plus loin que sa démarche de création d'un outil pour en réaliser une œuvre. Au début de la pièce on comprend très vite les mécaniques, puis il en crée une histoire jusqu'à détourner ces mécaniques, c'était une belle découverte une expérience totale.

J'ai vu ça aussi. C'était un autre délire (très très fort avec des gros sub et tout):
[vimeo]https://vimeo.com/161353166#at=5[/vimeo]
ambiance

En tout cas très hâte de connaitre la suite de ton outil. Moi je retourne bosser sur mon patch pure data, je partagerai

Re: Fragment - Synthétiseur Spectral Collaboratif

Publié : 18 août 2017, 17:58
par Onirom
J'ai principalement conçu cet outil pour mes besoins, étant insatisfait avec les outils de synthèse existant lors de mon passage sous Linux et aimant la programmation graphique, pas vraiment "d’œuvres" à l'horizon, Fragment c'est juste une expérimentation au début sur l'idée de générer le "spectre" en live avec le GPU puis d'en lire des parties, le proto est disponible ici, c'est devenu un outil à par entière quand j'ai vu les possibilités.

De mon point de vue Fragment excelle en outil d'exploration, dans son aspect le plus simple, il y à juste à taper du GLSL (language qui à l'avantage d'être très simple avec un ensemble limité de fonctions) pour produire n'importe quel son avec feedback visuel en temps-réel de ce qui est fait, surtout que l'on peut dessiner les paramètres de synthèse en fonction du temps et faire son choix sonore, rien qu'avec un peu de code il est possible de produire du son facilement et explorer les possibilités en temps-réel en collaboration (ou pas).

Sympa les vidéos et les projets! :)

Re: Fragment - Synthétiseur Spectral Collaboratif

Publié : 02 janv. 2018, 22:05
par Onirom
Hello,

pleins de nouveautés pour Fragment depuis août, un bref aperçu :

  • synthése granulaire asynchrone/synchrone opérationnelle
  • possibilité de synthèse distribué multi-machines/multicœurs (outil fas_relay + serveur audio)
  • ajout de la synthèse soustractive et PM (modulation de phase), filtre type Moog
  • import de vidéos avec paramètre playback/loop + conversion de la partie sonore en spectre
  • OSC IN/OUT au sein du client
  • support des instruments MIDI MPE (Multidimensional Polyphonic Expression), aftertouch, CC74, pitch bend, vélocité de relâchement disponible au sein de Fragment
  • enregistrement/exportation en .WAV possible au sein du client avec la synthèse additive
  • launcher disponible sur la page officielle qui permet de rendre plus accessible l'utilisation du serveur audio
  • amélioration de la stabilité/performance de synthèse/qualité audio
  • nouvelle doc
  • et beaucoup plus... !
Pleins d'autres vidéos démontrant l'utilisation de la synthèse granulaire (principalement) :
Soundscape granulaire/additive faisant office de guide, session complète sans interruptions démontrant comment sont conçu la plupart des vidéos/sons, l'audio craque car précédant la mise à jour améliorant la qualité audio

Bonne année 2018 à tous!