Bonjour à tous !
Nous sommes 4 étudiants qui débutons en programmes informatiques, et dans le cadre d'un projet nous souhaitons réaliser une application qui puisse reconnaître des notes de musique à partir d'un son.
Nous avons réussi à écrire le principe du programme "sur le papier", mais nous sommes bloqués sur une question: comment convertir notre tableau de fréquences, en tableau de Notes de musiques ?
Nous avons pensé à une méthode "bourrine", c'est à dire lister toutes les notes, sur toutes les octaves et lister leur domaine de fréquence (ex: entre 80Hz et 85 Hz : mi), mais ça nous parait très long, connaîtriez-vous une autre solution ?
La distinction des octaves ne nous importe pas (on affichera do que ce soit un do3 ou un do4)
On créerait un classe Note, avec pour attributs, String nomNote; float [] domaineFrequence;
La première solution ça serait de mettre toutes les fréquences exactes d'une note dans le tableau domaineFrequence (par exemple pour la: (220,440, 880) , etc) mais on ne sait pas comment dire "au voisinage de 440, ça sera toujours un la", surtout que les intervalles entre les fréquences ne sont pas constants, vu que ça marche par puissances de 2 (si il y avait par exemple 4 Hz d'intervalle à chaque fois, ça serait plus simple, on compare nos fréquences aux fréquences des notes + ou - 2 hz). Dans cette solution qu'on ne sait pas appliquer, on aurait eu à créer seulement 12 instances de Note.
La deuxième solution, c'est de distinguer les octaves, du coup dans le tableau domaineFrequence, on rentrerait les "bornes" du domaine de fréquence (80,85) pour mi1 par exemple, mais dans ce cas-là on devrait créer pratiquement une centaine d'instances et écrire tous les domaines de fréquences à la main !
Bref un vrai casse-tête !
Si quelqu'un peut nous aider ça serait super !
Merci beaucoup !
Bibiche1
Partager