this post is also available in english

Prenez Firefox, FluidSynth, js-ctypes, une sf2 soundfont, secouez tout çà, et hop... un vrai synthétiseur, utilisable en temps réel ou comme séquenceur, à l'intérieur de mon navigateur :) .

FluidSynth est une bibliothèque multi-plateforme en C qui utilise des soundfonts sf2.
Au début, c'était une expérimentation, ouvrir cette lib via js-ctypes dans Firefox, et jouer avec.

Mais çà a si bien marché, que j'ai créé 3 petites applis, combinées en une collection nommée Music Toys, qui peut être utilisée comme extension Firefox, ou comme une appli XULRunner autonome (lançable avec Firefox).
Ces applis sont entièrement en JavaScript, utilisant une partie de l'API FluidSynth à travers js-ctypes.


  • La première appli est un Clavier, temps réel et polyphonique, avec 128 instruments disponibles. Vous pouvez jouer avec votre souris, ou le clavier physique de votre ordinateur.


  • La seconde appli est Drum Machine, une boite à rythme. Elle consiste en une liste de pistes, divisées en mesures, temps par mesures, et divisions par temps, contenant des boutons pour allumer les notes (avec vélocité variable).
    47 instruments de percussions sont disponibles, et vous pouvez changer de jeu d'instruments.
    Changer le tempo, jouer votre morceau en temps réel dans une boucle. Et vous pouvez enregistrer/ouvrir vos morceaux dans des fichiers.


  • La troisième appli est un lecteur de fichier Midi. Il peut lire des fichiers mid standard (SMF), encapsulés RMI ou non, et les fichiers kar.
    Il est possible de se déplacer dans le fichier, mettre en pause, changer le volume, modifier la tonalité.

Une petite vidéo de tout çà :

liens directs vers la vidéo :
musictoys.mp4 | musictoys.webm | musictoys.ogv

Si vous souhaitez l'essayer, vous pouvez télécharger çà depuis sa page dédiée : Music Toys. Il y a des versions autonomes pour Linux, Windows, et Mac OSX (avec inclus la lib FluidSynth et une soundfont par défaut), et l'extension Firefox.
Tout le code source est MPL 2.

On peut imaginer plus pour la suite.

Il est envisageable de créer une extension pour Firefox qui exposerait seulement le wrapper vers la lib FluidSynth, et les auteurs d'extensions pourraient y accéder.
Et plus, on pourrait exposer certains objets de base comme un synthé Synth aux pages web (mais la sécurité est à prendre en compte).

Ensuite, il est peut être possible de compiler FluidSynth sur Android, quelques recherche sur la toile montre que certains y seraient arrivé, donc une extension pour Firefox Mobile devrait être possible.
Et peut être qu'on peut compiler FluidSynth pour Firefox OS également (FluidSynth dépend de glib) ?

Mais pour l'instant, faites moi savoir ce que vous en pensez, et si cette beta marche chez vous, j'ai testé principalement sur Linux, donc vos retours depuis divers Windows, 32 ou 64 bit, et Mac, sera précieux ;) .