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 Collaboratif
Dernier post

Fragment - Synthétiseur Spectrale 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 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 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 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 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 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 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 connecté France
Chouette, merci de nous tenir au courant !

Afficher les articles :
Aller au forum :

Documentation [Afficher / Cacher]

Connexion
[Afficher / Cacher]


Mégaphone [Afficher / Cacher]

sub26nico, 23:49, lun. 25 Sep 2017: Salut et bienvenue à djiel, Louis Cossement et labatrijador :-)
Willty, 21:08, lun. 25 Sep 2017: Salut, y-a-t-il parmis vous quelqu'un qui aurait déjà utilisé un correcteur de pièce (genre DRC)?
eazymaogeek, 17:02, lun. 25 Sep 2017: a voté sympa les sons
tenryu, 13:38, lun. 25 Sep 2017: A voté !
sub26nico, 08:43, lun. 25 Sep 2017: Salut et bienvenue à Ubuntu_Studio_User et Mary Haugen :-)
olinuxx, 14:15, dim. 24 Sep 2017: N'oubliez pas de voter pour la joute [Lien] :-)
ardoisebleue, 10:52, dim. 24 Sep 2017: A voté
sub26nico, 02:01, dim. 24 Sep 2017: Salut et bienvenue à MdMax :-)
olinuxx, 16:58, sam. 23 Sep 2017: OK sub26nico, merci. Allez @jz, t'es attendu dans les forums pour nous en parler maintenant :-)
sub26nico, 14:11, sam. 23 Sep 2017: @olinuxx, c'était juste pour répondre au coté 'libre', mais j'attends aussi le retour de @jz ;-)
olinuxx, 13:50, sam. 23 Sep 2017: @sub26nico : exact @sub26nico ! Mais on avait qu'une seule ligne, peut être que jz peut nous en dire un peu plusse ? :-)
sub26nico, 23:28, ven. 22 Sep 2017: olinuxx ,on en avait parlé dans l'édito de mars 2017, son code est open-source :S