Accordeur automatique de guitare

Portrait de Hugo

Bonjour !

Alors déjà bravo et merci pour cette chaine youtube qui m'a permis de bien découvrir l'arduino !

Je suis en prépa PT et pour les concours, dans le cadre du TIPE, j'aimerai présenter un accordeur de guitare automatique.
Sur le plan théorique tout va bien: le principe serait de faire l'acquisition par un micro du son d'une corde jouée à vide, puis par un développement en série de Fourier trouver la fondamentale et enfin faire faire fonctionner un moteur pour ajuster la tension de la corde en fonction de la fréquence obtenue.

L'idéal serait d'avoir un système asservi, mais pour l'instant, un système qui marche serait déjà une grande réussite

Le problème c'est qu'il y a à peine quelques mois je ne connaissais pas l'arduino et je n'ai donc pas vraiment de compétences dans ce domaine (nos cours d'infos sont en python ou scilab). Je me suis renseigné sur des forums, acheté pleins de composants, essayé de faire tourner une FFT (fast Fourier transform) mais pas facile d'avancer.

J'essaye de relier tes tutos entre eux (comment faire fonctionner un moteur CC ou celui sur la reconnaissance vocale)
Est ce que vous auriez des conseils ou des directives à me donner pour avancer dans mon projet ? :)

Cordialement, Hugo

Portrait de Alex

Bonjour Hugo,

Merci à toi et bienvenue sur le forum!

L'idée de ton projet est très bonne, la théorie est effectivement très simple mais c'est techniquement assez compliqué si tu n'as pas de solides bases en traitement du signal.

Tu sembles bien avoir décomposé ton système en trois sous-systèmes que sont:

 - Acquisition du son

 - Génération de la FFT

 - Modification de la tension de la corde

La principale difficulté est la génération de la FFT est l'analyse de cette dernière.

Là il y a deux approches pour deux philosophies: Analogique ou Numérique.

Dans le cas d'une approche par traitement analogique, tu vas utiliser des filtres passe-bande (Butterworth ou Chebyshev idéalement) pour ne laisser passer que la fréquence attendue pour chacune de tes cordes, un peu comme pour un equalizer.

Lorsque le signal de sortie de chacun de ces filtres (un filtre par corde) dépasse un seuil de tension (AOP) alors tu peux considérer que ta corde est accordée. A toi de faire des réglages par la suite et éventuellement d'améliorer le gabarit de tes filtres (c'est tout un art).

Dans le cas d'une approche par traitement numérique, il te faudra utiliser la librairie ftt d'Arduino: http://wiki.openmusiclabs.com/wiki/ArduinoFFT et te réorienter sûrement sur un Arduino Due pour sa fréquence d'horloge de 84MHz.

Cette approche me semble être la plus accessible dans ton cas. En plus, elle te permettra de réaccorder tes cordes plus rapidement.

Voici un lien intéressant en Français qui résume plutôt bien les deux approches: http://www.pobot.org/Traitement-du-son-par-FFT-fast.html?lang=fr

Voici d'autres liens très intéressants:

http://www.arduinoos.com/2010/10/sound-capture/

http://wiki.openmusiclabs.com/wiki/ArduinoFHT

http://members.shaw.ca/el.supremo/Arduino/fft/ffttest.htm

http://www.arduinoos.com/2010/10/fast-fourier-transform-fft/

C'est un projet ambitieux mais faisable pour un élève de prépa, si tu y parviens tu auras toutes mes félicitations.

wink

 

Portrait de Hugo

Merci pour ta réponse rapide et détaillée,

Sachant que les filtres sont un gros chapitre du programme, je pense que je vais essayer les deux méthodes et puis les comparer. C'est justement ce point qui doit être interessant à étudier car nous sommes plus évalués sur la demarche scientifique que sur la finalité du projet.

Je vous tiendrai au courant de l'avancée, merci encore :)

Portrait de Alex

Effectivement c'est une très bonne démarche de comparer les deux solutions.

Bon courage!

wink