Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]

7 - Développer/Traduire/Documenter/Annoncer une application

> Forums de discussion > 7 - Développer/Traduire/Documenter/Annoncer une application > Fragment - Synthétiseur Spectrale/Granulaire Collaboratif
Dernier post

Fragment - Synthétiseur Spectrale/Granulaire Collaboratif

onirom utilisateur non connecté France
Bonjour,

je crée ce sujet pour vous présenter mon projet de synthétiseur spectrale collaboratif qui est disponible à l'adresse

https://www.fsynth.com



D'autre vidéos sont disponible ici

L'application est compatible avec tous les navigateurs modernes.

C'est un synthétiseur un peu spéciale puisqu'il est possible de manipuler entièrement le spectre de fréquences audio en temps-réel via un script GLSL (programmation GPU) qui génère le contenu du spectre, le spectre généré est un vaste champ de possibilités et l'on sélectionne des parties de ce spectre pour l'écoute, c'est un synthétiseur qui mixe la programmation graphique à l'audio!

Les résultats pouvant être obtenus sont infinies, il y à pas du tout de limites, l'application permet aussi de moduler/jouer l'audio via une webcam ou à partir d'images, il est possible d'assigner des contrôleurs MIDI à des variables et en modifier les valeurs (Chrome et Opera uniquement pour cette fonctionnalité).

Je pense que dans un premier temps, les sons pouvant être fait peuvent intéresser ceux qui font de l'ambient, du glitch, noise et autre genres utilisant des sons non communs ou faire de la musique électronique dans le sens classique du terme mais ça ne s'arrête pas qu'as ses sonorités!

Pour la partie code, c'est du GLSL , c'est pas compliqué mais ça requiert forcément un peu de temps à maîtriser et ça demande aussi un peu de temps pour comprendre comment afficher des choses avec, je conseille de modifier les valeurs dans un premier temps, remplacer les fonctions par d'autres (genre sin en cos), changer les opérations... ça permet d'avoir un aperçu rapide.

Le synthétiseur est quasi-entièrement collaboratif, vous pouvez partager l'URL de votre session et tout est synchronisé entre les utilisateurs. (sauf la webcam et les images ajoutés)

Le synthétiseur est conçu avec les technologies du web moderne donc ça peut s’exécuter sur n'importe quel système d'exploitation, l'inconvénient c'est que ça demande pas mal de ressources et que la technologie web à ses limites donc j'ai dû porter le moteur de synthèse en C et le fournir à par pour Linux ou Windows, l'application peut fonctionner sans mais l'audio risque d'être désagréable.

Il y aura bientôt une application standalone tout-en-un qui contiendra le moteur de synthèse écrit en C et l'application, ça permettra de simplifier l’utilisation tout en garantissant le max des performances.

Pour le moment tout est en anglais.

J'ai par ailleurs un autre projet qui devrait sortir en 2017 pour ceux qui sont intéressé, beaucoup plus simple à l'utilisation (ne requiert pas d'écrire du code) mais utilisant à peu près le même principe avec une méthode de contrôle du spectre différente.

olinuxx utilisateur non connecté France
Ça a l'air sympa ton truc. Question de curiosité, pourquoi est-ce uniquement compatible avec Chrome et Opéra ?

onirom utilisateur non connecté France
L'application est compatible avec tous les navigateurs moderne dont Firefox bien sûr mais l'API Web MIDI n'est pas encore implémenté/distribué publiquement sous Firefox, il est donc impossible d'assigner des contrôleurs MIDI avec Firefox mais le reste de l'application fonctionne bien.

Bon par contre je viens de tester sous Safari/iPad et ça n'as pas l'air de fonctionner, il reste quelque trucs à corriger. :-)

olinuxx utilisateur non connecté France
OK, merci pour l'explication. Saurais-tu quand est-ce que FireFox va être compatible Web MIDI (quelle version) ?

onirom utilisateur non connecté France
ça devrait être disponible dans le courant de l'année, l'API en est au stade de tests mais je n'ai pas trouvé de mentions pour la version de FireFox ou une date de sortie spécifique

olinuxx utilisateur non connecté France
OK, merci pour l'info :-)

onirom utilisateur non connecté France
J'ai publié une mise à jour qui corrige le (gros) problème des "craquements" de l'audio quand l'audio est joué par le navigateur, c'est pas encore totalement ça mais le résultat est très prometteur avec mon i7.

Maintenant l'audio est quasiment parfaite de base dans un navigateur tel que Chrome, sous Firefox ça s'est amélioré mais ce n'est pas encore totalement ça.

Je vais publier des mises à jour dans les jours à venir qui vont tenter de réduire les problèmes de performances lorsqu'on utilise l'application de base sans le programme de synthèse externe, le but étant d'éradiquer totalement le besoin d'utiliser ce programme (au moins avec mon i7), avec cette mise à jour, j'y suis quasiment! :-)

J'ai aussi ajouté une vue logarithmique temps-réel du spectre de la sortie, ça peut aider et c'est plutôt sympa. :-)

olinuxx utilisateur non connecté France
J'ai essayé de créer une session sur https://www.fsynth.com avec mon firefox 45.7.0 , ça ralenti le navigateur à mort et c'est presque inutilisable. Malheureusement pour moi.

Ça serait chouette si des gens le testant sur Chrome/Opera pouvaient faire un retour ici. Ça permettrait d'avoir un autre retour que celui ci !

onirom utilisateur non connecté France
Merci pour le test, quelles sont les caractéristiques de ta machine? (le CPU et la carte vidéo surtout)

Dû au fait que l'audio est généré en temps réel, doit être synchro (60 FPS) avec ce qui est affiché à l'écran et est joué par le navigateur si l'app. externe n'est pas utilisé, ça demande pas mal de puissances CPU et GPU, si la carte vidéo ne suit pas, l'audio ne va pas suivre, c'est le soucis en ce moment car forcément je n'ai pas ce problème avec mon i7 et un GPU assez véloce (GeForce GTX 970).

Je suis en train de voir pour atténuer tout ça, le bundle qui va arriver prochainement devrait atténuer ce genre de soucis.

Je suis aussi en train d'expérimenter avec le Raspberry Pi et un DAC HifiBerry en ce moment, l'audio est généré par le Raspberry Pi et le visuel sur la machine cliente, ça fonctionne bien avec ~700 oscillateurs simultanées :-) ça sera téléchargeable rapidement avec la documentation complète de tout ça, il y aura sûrement une page wiki aussi

olinuxx utilisateur non connecté France
$ lscpu
Architecture :        x86_64
Mode(s) opératoire(s) des processeurs : 32-bit, 64-bit
Boutisme :            Little Endian
Processeur(s) :       2
Liste de processeur(s) en ligne : 0,1
Thread(s) par cœur : 1
Cœur(s) par socket : 2
Socket(s) :           1
Nœud(s) NUMA :       1
Identifiant constructeur : GenuineIntel
Famille de processeur : 6
Modèle :             23
Nom de modèle :      Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz
Révision :           10
Vitesse du processeur en MHz : 2534.000
Vitesse maximale du processeur en MHz : 2534,0000
Vitesse minimale du processeur en MHz : 1600,0000
BogoMIPS :            5599.84
Cache L1d :           32K
Cache L1i :           32K
Cache L2 :            3072K


$ lspci
00:02.0 VGA compatible controller: Intel Corporation 82G33/G31 Express Integrated Graphics Controller (rev 10)
01:00.0 Multimedia video controller: Blackmagic Design Intensity Pro


Dis moi si tu as besoin d'autres infos.

onirom utilisateur non connecté France
Merci, ça devrait passer normalement, en fait il semblerait que j'ai introduit un bug sous Firefox dans la dernière mise à jour... j'ai le même problème, je vais voir pour corriger ça dans la semaine.

Ce week-end j'ai expérimenté avec le Raspberry Pi (ordinateur à ~35€) et il y à une vidéo qui montre ce que le synth est capable de faire et comment il peut être utiliser comme instrument virtuel dans un DAW comme Renoise, la synthèse de l'audio est faite sur le Raspberry Pi :

https://www.youtube.com/watch?v=7x9S0sCz2GU

olinuxx utilisateur non connecté France
Sympa la vidéo.

Tiens moi au jus quand tu auras fait un correctif, je retesterai.

onirom utilisateur non connecté France
Hop, petit passage pour dire que ce synthétiseur à beaucoup évolué depuis avec une tonne de nouvelles features permettant au synthétiseur d'approcher des possibilités de synthèses quasi-infini, un petit aperçu :

  • Multitimbral, Fragment est capable de gérer plusieurs timbres en même temps
  • Support du MIDI IN avec dialogue pour gérer les périphériques qui se mettent à jour à chaud (Chrome/Chromium/Opera seulement, Safari?)
  • Polyphonie étendue, seulement limité par le GPU
  • Support du multi-canal, 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 les parties du spectre en nombre flottant 32-bits, ça permet d'avoir un son beaucoup plus précis et de bien meilleur qualité
  • Seulement avec WebGL 2, Il y à maintenant deux variables de sorties pour le shader, un pour la synthèse et un pour l'image ce qui permet de générer des images n'ayant rien à voir avec la synthèse (ou de synchroniser des images avec ce qui est joué), du coup Fragment devient aussi un outil pour faire du design graphique
  • Un dialogue d'importation permettant d'importer des images, des fichiers audio (converti en images aka ré-synthése) avec support drag&drop en masse
  • 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
  • Une fonctionnalité de dessin temps-réel permettant de dessiner sur des surfaces avec des brushes façon gimp ou krita, les surfaces peuvent ensuite être manipulé par le GPU
  • Support du feedback, le synthétiseur peut jouer de nouveau ce qu'il vient de jouer à la frame précédente, ça permet des effets jusqu'à présent impossible
  • Le serveur de son externe à été mis à jour et permet d'ajouter du bruit aux oscillateurs pour améliorer le rendu des transients
  • Support GLSL 3 permettant de simplifier l'écriture de certain patches
  • Beaucoup d'amélioration au niveau de l'utilisation dont un éditeur détachable et externe, é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 etc.
  • Beaucoup d'autre améliorations...

Voici quelque vidéos qui ont été faite depuis :


Pour d'autre vidéos, c'est disponible sur une playlist YouTube

En plus de tout ça, une documentation (en anglais) est à présent disponible :

https://www.fsynth.com/documentation.html

La documentation couvre tous les aspects de l'application avec quelque exemples pour débuter mais sur ce point, ce n'est pas tout à fait fini car il manque beaucoup d'exemples de possibilités avancés.

Pour le serveur audio, il y à maintenant un launcher graphique mais il n'est pas encore publié complètement, il faut le compiler, c'est disponible ici :

https://github.com/grz0zrg/fas_launcher

Aussi, Fragment va bientôt être capable d'utiliser la synthèse granulaire en même temps que la synthèse additive.

Pour rebondir sur les performances, dû au concept du synthétiseur, il est préférable d'utiliser le serveur de son plutôt que de jouer le son via le navigateur, ça permet d'utiliser le routing Jack et autres qui permet des fonctionnalités 'pro' et bien sûr les performances sont très très supérieur au son généré par le navigateur, ceci dit avec Chrome c'est plutôt jouable pour les performances audio mais il faut un bon CPU, avec Firefox ça ne fonctionne pas très bien dû à une différence importante de l'optimisation audio comparé au moteur de Chrome... du coup l'intérêt de jouer le son via le navigateur est plutôt à titre d'aperçu si on à la puissance requise, ensuite il est préférable d'utiliser le serveur de son!

olinuxx utilisateur non connecté France
Chouette, merci de nous tenir au courant !

onirom utilisateur non connecté France
Hello,

Fragment fête son premier anniversaire avec une mise à jour MASSIVE qui apporte un bon lot d'améliorations dont la synthèse granulaire et de nouveau outils. C'est en quelque sorte la version 1.0 du synthétiseur!

Ainsi, un package .deb (Ubuntu, Debian etc.) est maintenant disponible en téléchargement sur le site officiel, le package inclus le serveur audio et un launcher qui permet de le configurer, de sauvegarder les configs par sessions et de rejoindre les sessions facilement tout en étant connecté avec le serveur audio.

Par ailleurs, une nouvelle documentation (en anglais seulement) est disponible : https://www.fsynth.com/documentation

Voici quelque vidéos qui ont été faite depuis :

Ambient : Synthèse additive + granulaire avec composition vidéos
Synthèse additive en live avec controleurs Open Stage Control/OSC & composition vidéos

Aperçu des changements pour le client web :

  • support complet de la synthèse granulaire, asynchrone et synchrone (avec le serveur audio)
  • importation de vidéos avec conversion optionnel de la partie audio en images
  • contrôles de lecture des vidéos (vitesse de lecture, boucle)
  • "note lifetime" permet de gérer la partie "release" des envelopes, le synthétiseur garde en mémoire la note pour un temps pouvant être défini par l'utilisateur
  • OSC IN : des variables peuvent être ajoutés et modulés via le protocole OSC (je recommande le soft Open Stage Control)
  • OSC OUT : les données de notes converti depuis l'image peuvent être envoyé par paquets OSC, un exemple de synthétiseur additif externe conçu avec SuperCollider et OSC est disponible dans les sources
  • support de la synthèse sonore distribué multi-machines/multicœurs avec l'outil fas_relay et le serveur audio
  • outil "launcher" disponible sur le site officiel permettant d'utiliser/configurer le serveur audio et l'application web facilement
  • nouvelle documentation avec mkdocs
  • site officiel mis à jour
  • beaucoup d'optimisations
  • l'information de phase audio est conservé dans le canal alpha lors de l'importation
  • amélioration de la partie analyse avec de nouvelles fonctions de fenêtrage et paramètres
  • nouveau dialogue d'aide
  • correction de bugs en tout genre
  • mise à jour de la conversion des shaders provenant de ShaderToy
  • ajout de "fmov", variable pré-définie permettant d'avoir la position de lecture des vidéos au sein du shader (à des fins de synchronisation)
  • amélioration du système de notification pour le status de la compilation

le serveur audio à été aussi mis à jour :

  • amélioration de la qualité sonore via la possibilité de configurer le facteur d'interpolation linéaire
  • amélioration de la stabilité, tous les crashs connus sont corrigés
  • amélioration du son lors de la connection (plus de sons *pop*)
  • rechargement à chaud des échantillons (samples) audio
  • la hauteur des grains sonores (pitch) peuvent être défini par l'utilisateur en plaçant des motifs dans le nom du fichier audio (note MIDI ou une fréquence spécifique en Hertz)
  • amélioration de la partie bruitiste des oscillateurs pour la synthèse additive
  • beaucoup d'autre améliorations...

Fragment est désormais complet, tout ce qui avait été planifié dans le "cahier des charges" initial est implémenté. Je vais me concentrer désormais sur l'ajout de nouveau types de synthèses, l'amélioration de la fonctionnalité de collaboration et des améliorations/bugfix en tout genre! :-)

olinuxx utilisateur non connecté France
Merci pour la nouvelle et bravo à toi !

J'ai une question, ou plutôt une demande de confirmation. Je n'ai pas encore beaucoup essayé ce logiciel, mais, si j'ai bien compris, c'est un synthétiseur qui fonctionne à l'intérieur d'un navigateur web. Du coup, j'imagine que les paquets .deb que tu fournis permettent d'installer fragment en local et donc l'utiliser dans un navigateur web même si l'on a pas d'accès à l'internet. C'est juste ?

onirom utilisateur non connecté France
Pas seulement, en fait il y à deux parties bien séparé dans Fragment grâce à son architecture client/serveur :

  • la synthèse audio qui peut fonctionner dans le navigateur (avec des limitations) et en dehors (aucune limitations)
  • la partie visuel, de contrôle qui fonctionne uniquement dans le navigateur.

le paquet .deb fournit seulement le serveur audio (la partie synthèse) et une interface de configuration/lancement des sessions, le paquet n'installe pas Fragment (au complet) en local.

Par contre, ce serait effectivement une bonne idée de fournir une version local de Fragment dans le même paquet... pour le moment il est possible d'utiliser ce synthétiseur sans accès à internet mais il faut faire ce qui est indiqué ici : https://github.com/grz0zrg/fsynth#how-to-setup-your-own-server

onirom utilisateur non connecté France
Hello,

deux mise à jour ont été publiés depuis, la dernière v1.0.2 apporte le support MIDI MPE (Multidimensional Polyphonic Expression) et surtout corrige le problème récurrent des craquements sonore lors de la manipulation de l'interface avec le serveur audio.

Deux nouvelle vidéos ont vu le jour :

Mix d'exemple sonores : synthèses granulaire / additive

Une vidéo synthèse additive + granulaire d'un jam sans éditions vidéos, sert de "tutoriel"

Aperçu des changements pour le client web :

  • Support MIDI MPE, les données MIDI aftertouch, CC74, pitch bend et key release velocity deviennent accessible depuis le shader
  • le code lié au MIDI à été revu et optimisé
  • Un guide d'introduction dans l'application lors de la création d'une nouvelle session
  • plus d'examples de code, conversion polar/cartesian, PI, LP/BP/HP filtre etc..
  • amélioration du look & feel du launcher sous Windows
  • introduction des actions qui agissent sur le code: "suppresion des commentaires" and "supression des espaces"
  • un onglet pour les donations
  • correction d'un problème lors du téléchargement d'images avec le navigateur Chrome et navigateurs similaires
  • correction d'un problème avec l'import de masse
  • correction d'un problème lors du rechargement des samples
  • correction d'un problème avec le mode "wavetable" avec Firefox
  • correction d'un problèmes avec la sauvegarde des paramètres lié à la configuration de l'application
  • mise à jour du site et de la documentation

Aperçu des changements pour le serveur audio :

  • moteur sonore amélioré, plus de craquements
  • synthèse granulaire amélioré, plein de corrections lié au playback des grains, la synthése granulaire est quasi parfaitement implémenté
  • amélioration du chargement/playback des échantillons, un fondu d'ouverture et de fermeture est maintenant automatiquement appliqué sur les échantillons chargés, une conversion du taux d’échantillonnage est aussi effectué
  • plein de petites optimisations et d'améliorations qui améliorent les performances et la qualité audio

Dans les prochains mois je vais travailler sur l'implémentation du rendu sonore sur disque coté serveur audio, ce qui permettra d'enregistrer des sons ou des compositions sur disque avec un rendu parfait.

J'annonce aussi qu'un nouvel outil en ligne va voir le jour dans les prochains mois permettant de partager ce qui à été produit au sein de Fragment (ou autre synthétiseur basé sur des images), cet outil va même permettre à ceux qui n'utilisent pas Fragment de pouvoir télécharger des échantillons de sons crées au sein de Fragment (ou un synthétiseur au fonctionnement similaire), le résultat va être à peu près similaire au site freesound excepté que le matériaux initial est le spectre audio.

olinuxx utilisateur non connecté France
Chouette, j'ai mis une note dans le brouillon de l'éditorial pour que ce soit dans le prochain édito de linuxmao.

Afficher les articles :
Aller au forum :

Documentation [Afficher / Cacher]

Connexion
[Afficher / Cacher]


jjs95

Mégaphone [Afficher / Cacher]

sub26nico, 14:18, jeu. 23 Nov 2017: Salut et bienvenue à Sam Arche :-)
sub26nico, 08:38, jeu. 23 Nov 2017: Salut et bienvenue à Nijushihosho :-)
olinuxx, 18:45, mer. 22 Nov 2017: Bonjour et bienvenue à michel83 :-)
sub26nico, 23:48, mar. 21 Nov 2017: Salut et bienvenue à zakaila et SoulJazzDub :-)
sub26nico, 13:16, mar. 21 Nov 2017: Salut et bienvenue à ChimeraProd et nicolasCircus :-)
sub26nico, 08:59, mar. 21 Nov 2017: merci ycollet pour le lien, très intéressant en effet !
ycollet, 08:47, mar. 21 Nov 2017: Petit article sympa sur Faust sur LinuxFR: [Lien]
bluedid29, 21:05, dim. 19 Nov 2017: Sortie de LibraZiK 2 :-) [Lien]
sub26nico, 13:48, dim. 19 Nov 2017: Salut et bienvenue à JohnWebster :-)
sub26nico, 00:18, dim. 19 Nov 2017: Salut et bienvenue à jjs95 :-)
bluedid29, 04:28, sam. 18 Nov 2017: Bon samedi musical ! :-) Je sens qu'aujourd'hui il va faire beau ;)
sub26nico, 20:38, ven. 17 Nov 2017: Salut et bienvenue à caline10mao :-)