Obtenir la fréquence d'une note de guitare (CPGE)
Répondre à la discussion
Affichage des résultats 1 à 24 sur 24

Obtenir la fréquence d'une note de guitare (CPGE)



  1. #1
    Akita21

    Smile Obtenir la fréquence d'une note de guitare (CPGE)


    ------

    Bonjour à tous !

    J'ouvre cette discussion pour vous demander votre avis. Je bosse actuellement sur un projet de fin de prépa dans lequel mon but est à partir d'un enregistrement, écrire un esquisse de partition et/ou de tablature.
    Alors voilà je peux utiliser toutes sortes de logiciels pour enregistrer mon signal mais je souhaite passer par python pour obtenir ma fréquence.
    Plusieurs idées me sont alors venues à l'esprit :

    --> obtenir le spectre de fourrier de la note jouée, et réussir à en lire la fréquence du fondamental (auquel cas je vous demande si vous connaissez un logiciel me permettant d'avoir le spectre de fourrier d'un son et de le transcrire dans un fichier .txt par exemple)

    --> obtenir à partir du signal sinusoïdal la période de celui-ci en faisant la moyenne des Tij=Tj-Ti (avec j=i+1) ou les Tij correspondent au temps entre deux sommets consécutifs de la sinusoïde. Je pourrais peut-être, en faisant la moyenne de ses temps, m'approcher d'une valeur correcte de la période et me ramener ainsi à la fréquence du signal.

    Au final ça ne me fait que deux idées, pour lesquelles je voudrais votre avis et surtout un peu d'aide si possible.

    Je vous remercie à l'avance pour vos réponses et du temps que me consacrerez !


    -----
    Dernière modification par Akita21 ; 24/09/2016 à 15h33.

  2. #2
    LPFR

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Bonjour et bienvenue au forum.
    Si vous calculez le spectre de tout le signal, vous n’en tirerez rien.
    Il faut calculer le spectre pendant une coure durée (la durée de la note la plus brève), et ceci pour tous les petits bouts dans lequel il faut découper le concert.

    Le procédé qui donne ça est le sonagramme.
    Et un des très bons logiciels gratuits qui le fait est Audacity.

    Mais remarquez qu’il vous donne le vrai spectre, avec la fondamentale et ses harmoniques.
    Pour écrire la partition, il faut trouver la fondamentale (plutôt les fondamentales).
    Au revoir.

  3. #3
    Akita21

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Bonjour !

    Merci beaucoup pour votre réponse. Je vais tâcher de comprendre comment fonctionne le sonagramme et comment en tirer l'information qui m'intéresse.
    Je pensais effectivement qu'il fallait que je cherche à capter la fréquence de mon son sur une courte durée car lors d'un morceau de musique les notes s'enchaînent à une certaine vitesse, et je dois faire attention à cela.

    Après si Audacity me donne le vrai spectre, est-ce possible de retranscrire les valeurs de la fondamental et des harmoniques dans un fichier .txt ? Je vais me renseigner là-dessus et si c'est le cas je pourrais traiter le fichier sur python et ce sera nickel !

    Merci beaucoup du coup de main

  4. #4
    lou_ibmix_xi

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Après si Audacity me donne le vrai spectre, est-ce possible de retranscrire les valeurs de la fondamental et des harmoniques dans un fichier .txt ? Je vais me renseigner là-dessus et si c'est le cas je pourrais traiter le fichier sur python et ce sera nickel !
    Il doit y avoir une foultitude + 1000 de bibliothèques python qui te calculent la FFT...
    Pour vérifier tes résultats (si tu n'as pas les partoches) le logiciel "sonic-visualiser" fait de la détection de rythme et de notes.

  5. A voir en vidéo sur Futura
  6. #5
    LPFR

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Citation Envoyé par lou_ibmix_xi Voir le message
    Il doit y avoir une foultitude + 1000 de bibliothèques python qui te calculent la FFT...
    Pour vérifier tes résultats (si tu n'as pas les partoches) le logiciel "sonic-visualiser" fait de la détection de rythme et de notes.
    Bonjour lou_ibmix_xi.
    Je ne connaissais pas Sonic Visualizer. Il semble être un très bon logiciel.
    Je l’ai téléchargé et je fouille parme les plugings à charger, lequel peut aider Akita21 à donner la liste de notes à partir de la bande son.
    Je me suis farci la description des plugins et je n’ai pas trouvé.
    C’est peut-être une question de vocabulaire. Connaissez-vous le plugin adéquat ?
    Merci.
    Au revoir.

  7. #6
    lou_ibmix_xi

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Je l’ai téléchargé et je fouille parme les plugings à charger, lequel peut aider Akita21 à donner la liste de notes à partir de la bande son.
    Je me suis farci la description des plugins et je n’ai pas trouvé.
    Pas besoin de plugin, tu as les 3 type spectrogrammes dispo (menu Pane), le 1er spectrogramme classique, et les deux autres ("melodic range" et "frequency peak") mettent mieux en évidence les "fréquences instantanées" (je ne sais pas les techniques employées), du coup il est assez facile de balader la souris et d'avoir la note dans le rectangle des données curseur.
    Tu as également le "Notes Layer" (menu Layer, Add new notes layer), mais je sais encore moins comment il marche.
    Bon ce n'est peut-être pas miraculeux sur des arpèges ou autres...

  8. #7
    LPFR

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Re.
    Merci.
    Effectivement, avec le « layer » notes, il affiche un clavier de piano et il semble qu’il affiche les notes jouées. Je ne suis pas musicien et suis incapable d’être affirmatif. Je lui ai pourtant donné quelque chose de « facile à reconnaître » : les premiers secondes d’Asturias d’Albéniz, à la guitare.

    Le problème sera, comme avec Audacity, de réussir à lui faire cracher le résultat dans un fichier. Je n’ai pas trouvé ni avec Audacity ni avec Sonic Visualizer.
    A+

  9. #8
    Akita21

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Re !
    Merci encore de vos réponses.
    Ton logiciel qui fait la détection de note c'est vraiment chouette seulement voilà je voudrais partir de python et écrire moi même le programme qui reconnaîtra les notes jouées. Le fait de pouvoir détecter le rythme c'est génial mais peut-être que ce n'est pas si compliqué à implémenter en python.
    Le must du must serait de passer uniquement par python bien évidemment car le plus important pour mon projet reste la valeur ajouté. Or si je me sers trop de logiciels j'imagine que celle-ci sera d'autant moins conséquente.

    C'est pourquoi je pense que je vais me contenter pour l'instant d'essayer d'arriver à faire quelque chose juste par python, je vous enverrai des screen de mes lignes de codes et des résultats que ça me donne lorsque j'aurai quelque chose !

    Bye et merci !

  10. #9
    LPFR

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Re.
    Je ne comprends pas votre attachement à Python.
    Peut-être que vous avez subi un traumatisme pendant votre enfance

    Plus sérieusement, avec le temps, vous vous apercevrez que tous les langages sont similaires, sauf pour des cas très particuliers, comme le calculs avec des complexes en Fortran. Ou les rendez-vous d’Ada (dont vous n’avez probablement pas entendu parler).
    A+

  11. #10
    Akita21

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Je ne suis pas vraiment maniaque de python, à vrai dire je serai plus tard amener à utiliser plutôt des langage de type C+ etc., seulement voilà mon projet rentre dans le cadre de mes oraux de concours. Cela s'appelle le TIPE, or dans mon TIPE je dois me servir le plus possible de ce qui est mon programme en classe préparatoire, et python et le seul langage que nous voyons en classe prépa (malheureusement, mais au moins c'est une bonne mise en bouche.).
    Voilà pourquoi je trouverai ça plutôt sympathique de passer par python, après rien ne m'empêche d'utiliser 1 à 2 logiciels tierces

  12. #11
    lou_ibmix_xi

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    je voudrais partir de python et écrire moi même le programme qui reconnaîtra les notes jouées. Le fait de pouvoir détecter le rythme c'est génial mais peut-être que ce n'est pas si compliqué à implémenter en python.
    pour les notes il faut certainement partir d'une FFT par morceau, pour le rythme quelque chose à base de corrélation... Mais je pense que les détails ne sont pas évident, surtout si le signal d'origine se complique... L'avantage de sonic-visualiser est qu'il est open-source, tu peux jeter un oeil pour voir comment ils ont fait et avec un peu de chance c'est même documenter (s'amuser avec OCTAVE avant de se lancer avec python est souvent une bonne idée...)

    [QUOTE][Je ne comprends pas votre attachement à Python./QUOTE]
    AMHA python est tout indiquer:
    - relativement simple à prendre en main, mais ce n'est pas un jouet
    - reste généraliste
    - foultitude de bibliothèques, notamment pour le traitement du signal et plus

    J'ai même l'impression que MATLAB/OCTAVE est de plus en plus remplacé par python (julia?)

  13. #12
    Akita21

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Bonjour !
    J'ai essayé Octave très récemment avant de venir poser ma question mais je n'ai pas compris si c'est ce que cela m'apporterai de plus que python. Ce qu'il y a de bien c'est que le langage sur Octave est de même niveau que celui sur python, simplement quand j'ai testé de faire la FFT d'un signal eh bien j'avais quelques soucis du genre des modules qui manquent.

    Pfiou lala ça va pas être évident, mais après je ne cherche pas à faire un travail parfait, le plus important c'est d'avoir passer beaucoup de temps dessus et avoir un résultat expliquable et qui tient la route.

  14. #13
    lou_ibmix_xi

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Citation Envoyé par Akita21 Voir le message
    Bonjour !
    J'ai essayé Octave très récemment avant de venir poser ma question mais je n'ai pas compris si c'est ce que cela m'apporterai de plus que python. Ce qu'il y a de bien c'est que le langage sur Octave est de même niveau que celui sur python, simplement quand j'ai testé de faire la FFT d'un signal eh bien j'avais quelques soucis du genre des modules qui manquent.

    Pfiou lala ça va pas être évident, mais après je ne cherche pas à faire un travail parfait, le plus important c'est d'avoir passer beaucoup de temps dessus et avoir un résultat expliquable et qui tient la route.
    OCTAVE est plus simple que python à prendre en main (enfin je trouve), et comme il est fait pour faire du calcul numérique, tu y trouves tout ou presque prêt à l'emploi, c'est ma solution de prédilection pour prototyper mes algos un peu matheux avant de le faire "pour de vrai" (en C ou C++). Par contre je ne comprends pas comment tu n'as pas réussi à faire une fft sous OCTAVE, à moins qu'il faille la "toolbox" signal ? Il te suffirait donc de la télécharger. Autre remarque, la compatibilité avec MATLAB est proche de 100%, et il y a peut-être plus de résultat avec MATLAB qu'avec OCTAVE quand tu fais tes recherches dans le googol.

    Une dernière remarque en passant, MATLAB/OCTAVE sont des excellents outils de prototypage qui ont été développés à une époque où les langages de haut niveau comme python n'existaient pas vraiment. Aujourd'hui, je ne suis plus si sûr de leurs pertinences face à un python qui n'est pas beaucoup plus compliqué mais qui reste généraliste. Mais ils restent le langage de prédilection des milieux universitaires...

  15. #14
    Akita21

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Oui bien sûr je suis d'accord sur tout, et je crois qu'en en effet il me manquait quelque chose du genre un module d'OCTAVE pour faire ma fft correctement. M'enfin c'était bizarre, la commande marchait pour un simple sinus dépendant de n (n variant de 1 à 10 000) que j'implémentai moi même, encore que le résultat était bizarre....

    Peut-être pourriez vous m'envoyer un script d'une fft pour un signal simple ?

    Merci beaucoup

  16. #15
    lou_ibmix_xi

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Peut-être pourriez vous m'envoyer un script d'une fft pour un signal simple ?
    !!! comment fonctionne la FFT ne dépends pas de ton signal... tu as un signal réel x (donc sous octave un vecteur colonne de nombre réel), tu obtiens ta transformé de Fourier avec fft(x) et voilà.
    Tu as une aide en ligne pour les fonctions d'OCTAVE, "help fft" par exemple.
    A mon avis il y a un truc de base que tu n'as pas pigé, montre moi comment tu fais pour créer ton sinus et calculer sa FFT.

  17. #16
    Akita21

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    C'est bon en faite il n'y a pas de soucis, c'est la commande sound que je n'arrive pas à faire fonctionner mais elle ne me sera pas utile.
    Du coup j'ai enregistré un son test que j'ouvre en wavread sur Octave comme ceci :oc1.jpg

    J'obtiens ainsi une liste de valeurs qui j'imagine représente les amplitudes de mon signal à un certains nombres d'instants:oc2.jpg

    Et en passant à la fft j'obtiens quelque chose d'assez barbare:oc3.jpg
    Les transformées de fourrier n'étant plus au programme de PSI je n'ai peut-être pas bien saisi comment m'en servir, mais là j'avouerai que je ne vois pas trop comment trouver la fréquence qui m'intéresse à partir de ça :/

    Une idée ?

  18. #17
    LPFR

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Bonjour.
    Je crois vous avoir dit qu’il fallait faire des fft sur des petits bouts de signal et non sur l’ensemble.
    Commencez par le faire sur un morceau de signal dans lequel il n’y a qu’une seule note.

    Le dernier tableau montre la partie réelle et la partie imaginaire (remarquez le 'i') de chaque terme du développement en série. Le module de chaque nombre complexe donne l’amplitude de l’harmonique.
    Au revoir.

  19. #18
    Akita21

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Bonsoir, j'avais bien noté ce qu'il fallait faire et je compte bien le faire.. Cependant je demandais juste quelques informations sur ma fft, d'accord pour l'amplitude, j'avais bien vu que c'était du complexe seulement je ne savais pas que le module représenterai l'amplitude simplement parce que j'aurais pu penser que la partie réelle représenterai l'amplitude.

    M'enfin j'ai eu la réponse qu'il me fallait, me reste qu'à identifier la fondamentale pour une noté et essayer de faire ceci sur une suite de note..

    Merci.

  20. #19
    LPFR

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Bonjour.
    L’apparition des complexes est simplement une simplification d’écriture.
    Au lieu de faire les deux jeux d’intégrales avec les cosinus pour les coefficients ‘a’ et les sinus pour les coefficients ‘b’, on utilise la formule d’Euler et on intègre avec exp(-j n ωt). La partie réelle donne les coefficients ‘a’ et la partie imaginaire les coefficients ‘b’.
    Au revoir.

  21. #20
    Akita21

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Merci pour toutes ces belles infos, je vous ferai part des mes résultats

    Bonne fin de week-end !

  22. #21
    Akita21

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Bonjour bonjour me revoilà !

    Voilà après tout ce temps j'ai trouvé une méthode plutôt efficace d'obtenir les fréquences de mes notes avec un résultat relativement précis, du moins l'écart entre la valeur théorique et obtenue est suffisamment faible pour ce que j'envisage. J'utilise l'autocorrélation avancée que propose Audacity, j'utilise les données de ce spectre dans un fichier '.txt' que je traite sous python et les fréquence obtenues sont bonnes.

    Seulement voilà maintenant se pose le problème des accords. Ou simplement si celui qui enregistre son morceau à la guitare joue plusieurs cordes simultanément, là dans ce cas je ne sais pas trop quoi faire.
    Je m'explique, je vous rappelle que mon but et d'obtenir l'ensemble des fréquences des notes/accords joués dans un enregistrement, pour ensuite écrire une esquisse de partition.
    Seulement voilà plusieurs accords différents peuvent me donner la même fréquence, je ne trouve donc pas de moyen d'identifier précisément de quel accord il s'agit.
    Même problème quand plusieurs cordes sont jouées simultanément, j'ai trouvé que la fréquence obtenue lorsque plusieurs cordes sont jouées est environ égale à la moyenne géométrique des fréquences de chaque corde jouée. Seulement c'est bien mais il y a plusieurs façon de tomber sur cette fréquence.

    Après je me suis dit autre chose, une certaine fréquence correspond à une certaine note jusque là on est OK, ainsi quand j'écrirai la partition j'écrirai la note qu'il faut jouer à tel ou tel instant, celui ou celle qui lira la partition peut parfaitement la note comme il l'entend n'est ce pas ? Dans le sens où si on part d'une certaine note sur une corde, on peut obtenir la même mais avec un timbre différent sur les cordes d'en dessous, par exemple la 5e frette de la 1ère corde donne la même note que la 2e corde grattée à vide ( par 1ère corde, 2e etc. j'entends qu'on part de la corde du haut lorsque on porte la guitare de façon à jouer).

    C'est pourquoi je me suis dit que retrouver simplement la note jouée à chaque fois et non l'accord serait suffisant n'est ce pas ?

    Si oui, je voulais savoir s'il était possible de différencier pour une même note, un accord jouée et une simple corde jouée, à partir du spectre de Fourier certainement ? Si ce n'est pas le cas ce n'est pas grave je me contenterai d'écrire la partition et j'abandonnerai la tablature qui exige plus de détails.

    M'enfin si vous n'avez pas tout compris de mon roman, posez moi vos questions j'essaierai d'être plus clair
    En espérant que vous puissiez m'éclairer !

    Merci d'avance

  23. #22
    LPFR

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Bonjour.
    Les fréquences ne se mélangent pas. Quand vous jouez plusieurs notes vous avez toutes les fréquences et tous les harmoniques de toutes les notes.

    Quand vous jouez un accord par exemple do-mi-sol-do, la fréquence la plus basse est celle du do. La suivante est celle du mi, et ainsi de suite. Mais quand vous arrivez au second do, vous ne pouvez pas savoir, à priori, s’il s’agit de l’harmonique 2 du premier do, ou de la fondamentale du second do.
    Peut-être qu’en analysant les amplitudes de harmoniques des deux notes on peut le départager. Mais me connaissances en musique ne me permettent pas de l’affirmer.
    Je crois savoir que les personnes avec oreille absolue n’ont pas de problème pour faire la différence.
    Au revoir.

  24. #23
    Akita21

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Merci pour la réponse, malheureusement mon ordinateur n'a pas l'oreille absolue J'avais fait quelques recherches et j'avais pu trouver ce que vous venez de me dire, et j'ai justement fait le test, mais quand j'enregistre mon accord, j'obtiens une seule fréquence, je ne peux donc pas donner avec précision de quel accord il s'agit.

    Cependant la fréquence que je trouve, je peux la faire correspondre à certains accord, imaginons que deux accords aient la même fréquence mais qu'à l'oreille on remarque un timbre différent, je peux proposer avec mon programme de choisir entre les accords possibles et d'adapter la suite de l'enregistrement à cet accord. Par exemple si on retombe sur cette fréquence plus loin lors de l'enregistrement, alors cette fréquence correspondra à l'accord choisi. Si A et B ont même fréquence, l'utilisateur aura le choix entre deux partitions/tablatures, une qui renverra A à chaque fois que la fréquence de (A,B) est captée, une autre qui renverra B dans le même cas. Je pourrais également proposé de renvoyer un résultat sous forme de "chords" où la rythmique sera précisé.
    Un exemple de "chords": http://www.boiteachansons.net/Partit...hp?ref=accueil
    Cette idée facilite beaucoup l'écriture des "chords" mais si jamais la véritable façon de jouer l'enregistrement utilise plusieurs accord à même fréquence; par exemple si A et B sont joués normalement, alors là le rendu ne sera pas le bon. Après tout celui qui se servira de mon programme pourra avoir l'enregistrement sous la main et bien remarquer que même si les fréquences sont les mêmes, les accords sont différents.

    Je proposerai d'ailleurs un son jouant chaque accord connu, ce sera un petit bonus assez sympathique (même s'il serait déjà bien d'arriver à atteindre mon objectif premier).

    Au pire si je n'arrive pas le cas des accords, tant pis ! Le jury appréciera déjà que je puisse écrire une partition relative à des notes simples jouées à la suite, il faut simplement que je puisse expliquer pourquoi le cas des accords m'a posé problème.

    Merci en tout cas d'avoir répondu, je continuerai de donner des nouvelles de mon projet !


  25. #24
    phuphus

    Re : Obtenir la fréquence d'une note de guitare (CPGE)

    Bonsoir,

    Citation Envoyé par Akita21 Voir le message
    Merci pour la réponse, malheureusement mon ordinateur n'a pas l'oreille absolue J'avais fait quelques recherches et j'avais pu trouver ce que vous venez de me dire, et j'ai justement fait le test, mais quand j'enregistre mon accord, j'obtiens une seule fréquence, je ne peux donc pas donner avec précision de quel accord il s'agit.
    Non, ce que décrit LPFR est juste, et si tu te situes volontairement dans l'octave du fondamental, il n'y a pas de raison que tu ne retrouves pas toutes les notes. Tu auras du mal à partir de la 13ème, mais c'est assez peu important.

    Comment calcules-tu la "fréquence" de ton accord ? Comment se situe-t-elle par rapport aux fréquence théoriques des notes de ton accord ? (au hasard : PPCM...)
    Et si, ton ordinateur a "l'oreille absolue", puisqu'il peut calculer des fréquences.

    Par contre, les approches physiques de quantification du timbre ayant toutes échoué à ma connaissance, bon courage si tu t'orientes dans cette voie.

Discussions similaires

  1. Accès aux CPGE avec une telle note au regional du Maroc
    Par AdepressedPerson dans le forum Orientation après le BAC
    Réponses: 1
    Dernier message: 07/07/2016, 05h32
  2. Obtenir fréquence guitare électrique
    Par invite480f4512 dans le forum Électronique
    Réponses: 9
    Dernier message: 05/07/2011, 12h58