A propos

A propos de l'auteur

Je suis Stéphane Damo, un développeur de 28 ans travaillant principalement sur la conception et réalisation d'applications web. Mon temps libre est quant à lui dédié à la musique et à des projets comme celui-ci. J'aime l'expérimentation, le bricolage et la recherche.

Vous trouverez mon parcours pro détaillé ici : sdamo.io

Le projet FM Composer

Si vous souhaitez soutenir le développement de FM Composer, vous pouvez faire un don :

J'ai commencé à travailler sur ce projet il y a 4 ans. Pas le logiciel actuel, mais plutôt des essais et prototypes en tout genre. En tant que musicien et développeur, je voulais vraiment réaliser un logiciel de musique. Il fallait aussi qu'il permette de créer ses propres instruments plutôt que de lire des samples pré-enregistrés. J'aimais beaucoup les possibilités de création sonore qu'offre la FM -technique de création sonore apparue dans les années 80-, j'ai donc entrepris la création d'un programme 'tout-en-un' permettant à la fois de créer ses sons et de faire un morceau avec.

L'interface laisse à désirer mais le prototype est fonctionnel.

Les paramètres des instruments doivent être écrits directement dans un fichier texte car il n'y avait pas d'éditeur.

Ce projet m'a appris à gérer les buffers audio, l'allocation des canaux, les historiques d'annulation, les bases du fonctionnement d'une interface graphique... Puis j'étais prêt pour le projet suivant.

C'est seulement un éditeur d'instruments, impossible de composer quoi que ce soit avec. Son moteur audio est inspiré de la puce sonore Yamaha YM2612, celle utilisée dans la Megadrive. Elle possède 6 canaux, donc 6 sons jouables simultanément, et 4 opérateurs.

J'ai appris quelques techniques d'optimisation. La synthèse FM peut être relativement lourde pour le processeur si mal implémentée. J'ai choisi de rester en C pour avoir les meilleures performances possibles et un code portable. Le moteur audio tient sur environ 1000 lignes de code, le double avec les fonctions annexes permettant l'édition de divers paramètres (Voir le code sur Github). L'interface est quant à elle écrite en C++.

C'est le moment d'assembler le synthétiseur et le séquenceur en un seul et unique logiciel :

Je l'avais initialement baptisé LightFMtracker vu qu'il devait être un outil léger et minimaliste. Il l'est toujours, je pense, mais son nom fût changé pour FM Composer, plus représentatif.

L'interface graphique a quant à elle subit de nombreux changements pour être plus attrayante. Tous les éléments (boutons, scrollbars, lists) ont été développés de zéro. Je ne recommande à personne de faire pareil, sauf pour le fun ou pour apprendre. Les champs texte sont par exemple relativement compliqués à gérer.

Entre temps j'ai rencontré deux experts du synthétiseur, Claire et Masami. Leurs conseils ont permis d'améliorer la gestion du MIDI et d'apporter diverses améliorations à l'ergonomie de FM Composer.

La tâche la plus longue a été de rechercher des idées pour faciliter l'utilisation de l'outil, et de travailler sur les petits détails qui vont rendre l'application agréable à utiliser. On entend souvent que les 10% manquants sont les plus difficiles quand il s'agit de mener un projet jusqu'au bout, et je peux confirmer que ce fût effectivement le cas. Ceci dit, aussi travaillé soit-il, un logiciel est généralement amené à vivre au travers de plusieurs versions chacune apportant leurs lots d'améliorations et de correctifs. C'est ce que je m'engage à faire ici : maintenir cet outil, l'améliorer selon les remarques de la communauté, et assurer la compatibilité entre les différentes versions.