Bonjour
Je me présente, je m'appelle Arthur et j'étudie actuellement en première année d'école d'ingénieur (à l'ESIEE).
Dans le cadre d'un projet personnel, d'autres élèves et moi-même avons souhaité réaliser un clavier numérique (piano) exclusivement sous Matlab.
Le projet étant assez concluant, nos professeurs ont décidé de présenter notre projet au "Jour des projets" qui se déroulera dans quelques jours au sein de mon école.
Actuellement, le clavier permet de jouer des sons en appuyant sur des touches du clavier (on a reproduit une gamme complète) et le son joué est celui d'une guitare.
Bref, on aurait aimé améliorer un peu les fonctionnalités de notre clavier en ajoutant le support de plusieurs instruments. Pour vous aiguiller, le design du code actuel fonctionne comme ça : on configure tous les boutons, et on lance la fonction de synthèse sonore qui va extraire d'un son monodique de guitare (un Fa3) une fréquence fondamentale et appliquer Fourier avant d'ajouter l'enveloppe, classique.
Ensuite, le programme associe chaque bouton à un intervalle (on utilise un switch qui incrémente une valeur i représentant l'intervalle qui varie en fonction de chaque case, donc de chaque bouton), et voilà. On a aussi ajouté le support d'octave, dans ce cas là c'est une variable P qui est ajoutée en plus du i (au départ P = 0).
Donc en gros, la plupart des calculs se font au lancement, ce qui permet lors de l'utilisation une latence infime (le son est déjà crée, il suffit juste d'y appliquer un intervalle et jouer le son).
On souhaiterait garder cette fluidité en ajoutant d'autres instruments. Pour le moment, j'ai créé un bouton guitare et un autre piano (qui ne font rien), et le but serait, lorsqu'on appuie sur la touche correspondante, de changer d'instrument. Or ce changement d'instrument implique tout d'abord un changement de fichier source (on utiliserait plus guitare.wav mais piano.wav, par exemple), mais aussi d'enveloppe (l'enveloppe d'une guitare n'est pas celle d'un piano et encore moins celle d'un violon).
Donc si on souhaite garder une certaine fluidité, il faudrait que je copie/colle toute la partie traitement qu'on a déjà créé, que je l'adapte au piano, et que je différencie les cas (si piano alors blabla, si guitare alors blabla).
Sinon, si je suis prêt à attendre quelques secondes entre chaque instrument, il faudrait exécuter un cas par défaut (exemple piano) et si je veux passer en guitare, je ré exécute ce même cas en changeant les variables.
Bref, j'ai des idées, mais je ne sais pas laquelle est la meilleure et s'il y aurait d'autres possibilités encore plus pratiques (je débute en Matlab...).
Merci d'avance pour votre aide et n'hésitez pas à me signaler si j'ai manqué de clarté
Partager