IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Signal Discussion :

Reconnaissance de note


Sujet :

Signal

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut Reconnaissance de note
    Bonjour,

    je cherche à reconnaitre les notes de musique jouer dans un fichier wav. Il n'y a qu'un seul instrument dans le fichier (un piano).
    Mon idée est d'obtenir une courbe représentant la fréquence en fonction du temps. Par exemple, si au temps t la fréquence est de 440Hz, alors je saurais qu'il s'agit d'un La.
    Seulement, je ne connais pas très bien Matlab, et je ne sais pas comment faire pour obtenir une telle courbe. Je pense qu'il faut utiliser la transformée de Fourier (fft), mais il me semble qu'elle ne peut être appliquée que sur un signal périodique.

    Comment dois-je faire pour obtenir cette courbe ?

    Merci de votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut
    Bonjour,

    j'ai beau chercher je n'arrive pas à obtenir cette courbe. Et sans elle, impossible de faire l'analyse pour déterminer quelle note est jouée.

    Personne ne peut m'aider ?

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Par défaut
    C'est le contraire, un signal périodique n'a pas de transformée de Fourier au sens des fonctions, parce qu'il sont à énergie infinie.
    Par contre, ils ont une transformée de Fourier au sens des distributions.

    Pour faire ce que tu as envie, je pense qu'il faut que tu fasses une fft de ton signal à intervalle de temps régulier. Et pour chaque fft tu analyses le résultat.

    Mais tu te lances dans quelque chose de complexe mais faisable, surtout si tu as peu de connaissances en traitement du signal.
    Bon courage.

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut
    Me revoilà.

    J'ai finalement réussi à reconnaitre une note jouée dans un fichier. Par contre, ca ne fonctionne que s'il y a un seule note jouée. Mon problème est donc maintenant de pouvoir séparer automatiquement un fichier avec un plusieurs notes. Manuellement, ca fonctionne.

    Par exemple, j'ai un signal f, contenant 100000 valeurs, avec 5 notes de musique dedans. Je sépare donc de 20 000 en 20 000, et j'obtiens bien les notes.
    Je chercher comment faire cette séparation automatiquement, en détectant lorsqu'il y a un changement de note.

    Merci de votre aide.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut
    En fait, je me suis trompé.

    Lorsqu'il y n'y a qu'une seule note, pas de souci, elle est bien reconnue.
    Par contre, lorsque mon fichier wav contient plusieurs notes de suite (Do Re Mi par exemple), et que je sélectionne juste la partie avec le Do, la note n'est pas correctement reconnue.
    Je ne comprend pas pourquoi, pourtant je fais la même analyse que sur une seule note.
    Pour l'analyse d'ailleurs, je fais une fft et je recupère la fréquence dont l'amplitude est la plus grande.

    Quelqu'un sait comment faire ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut
    J'avais oublié ce sujet. Pour ceux que ca intéresse, je mets ce que j'ai réussi à obtenir à disposition. Ce n'est que moyennement concluant (il y a un paramètre assez dur à régler), mais ca fonctionne.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Citation Envoyé par Renaud-62 Voir le message
    J'avais oublié ce sujet. Pour ceux que ca intéresse, je mets ce que j'ai réussi à obtenir à disposition. Ce n'est que moyennement concluant (il y a un paramètre assez dur à régler), mais ca fonctionne.

    Si tu peux attacher aussi notes.wav ca pourrait aussi plus utile!

    Merci!

    Je suis interesse!

    Amicalment,

    Michel

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut
    Désolé, mais le fichier notes.wav est trop gros pour être déposé sur le forum.
    Cependant, il n'est pas très intéressant, il contient juste les notes :
    C5 (note C sur l'octave 5)
    E5
    F4
    D6
    B3
    F3
    E6
    A4
    B2
    Par contre, les octaves ne sont pas détecté correctement. La transformée de Fourier me permet d'avoir la bonne note, mais pas le bonne fréquence (juste un multiple en fait). Je ne fait des tests que sur des fichiers générés par ordinateur, je ne sais pas du tout ce que ca vaut sur une "vraie" musique.

    Bonne journée.

  9. #9
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 14
    Par défaut
    Salut, ca m'interesse pas mal ce que tu fais .

    J'ai un peu regardé ton code, t'es sur de l'implémentation de tes vecteurs temps et fréquence? T'as plotté tes signaux pour les verifier?

    Il fait combien en taille ton fichier wav? Tu pourrais l'envoyer par mail?

    Benoît

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut
    Bonsoir,

    alors d'abord je suis sur de rien. Tout ce que je sais, c'est que ca marchait assez pour ce que je devais faire.
    Je me rend compte d'ailleurs que je n'ai pas expliqué comment ca fonctionne.
    L'idée c'est qu'on a un fichier avec plusieurs notes de musiques. Pour la reconnaissance d'une seule note, il suffit de faire une transformée de Fourier. On arrive ainsi dans le domaine fréquentiel. Je récupère alors la fréquence qui correspond à l'amplitude la plus élevée, et j'en déduis simplement la note. Le problème des octaves vient d'ailleurs de là, puisque parfois (souvent) ce n'est pas la fondamentale qui a la plus grande amplitude.
    Le problème est d'être capable dans un fichier qui contient plusieurs notes de pouvoir séparer ces notes, afin d'effectuer l'analyse que je viens juste d'expliquer.
    Pour cela, j'ai essayé deux techniques :
    - la première est simple, on fait l'analyse sur des portions du fichier régulièrement (par exemple toutes les x secondes). Cela convient si on sait que le morceaux est parfaitement régulier. On se retrouve en général cependant à la fin avec des notes redondantes (plus de musiques, mais le fichiers ne s'interrompt pas brutalement). Le problème de cette technique est de trouver le bon rythme, et surtout que si c'est de la musique enregistrée faite par des musiciens, elle n'est surement pas exactement dans le bon rythme.
    - l'autre méthode consiste a lisser la courbe du fichier et a obtenir tous les maxima locaux. En effet, a chaque fois qu'on joue une nouvelle note, on peut voir qu'il y a un pic. On lisse donc la courbe, on récupère les maxima locaux, et on fait l'analyse entre chaques points récupérés. Le problème de cette technique est la façon de régler le lissage. Si on lisse trop la courbe, on risque de perdre des notes, ou d'avoir des maxima décalés par rapport au vrai maxima ; cependant, si on ne la lisse pas assez, on va se retrouver avec des maxima locaux qui auraient du disparaitre.

    Dans les deux cas, c'est très difficile de bien faire les réglages. Une autre technique consiste a mettre un seuil. Chaque fois que l'amplitude du signal, en temporelle, dépasse un certain niveau, il y a une nouvelle note. Je n'ai pas essayé.

    Et pour finir, oui je peux envoyer les fichiers par mails.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Reconnaissance de notes de musique
    Par jpclabaux dans le forum Langage
    Réponses: 5
    Dernier message: 18/12/2022, 14h23
  2. Reconnaissance de notes d'une guitare
    Par Invité dans le forum Mathématiques
    Réponses: 4
    Dernier message: 03/10/2013, 11h34
  3. Reconnaissance de note
    Par hammerkill dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 27/06/2009, 19h07
  4. reconnaissance note: fft et transformee en cosinus discrète
    Par acx01b dans le forum Traitement du signal
    Réponses: 6
    Dernier message: 27/01/2008, 23h10
  5. Note de musique
    Par DelphiCool dans le forum Composants VCL
    Réponses: 52
    Dernier message: 30/06/2003, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo