Journal Voice2MIDI : Publication en libre d'un module de reconnaissance de notes de musique chantées

Posté par .
Tags : aucun
19
23
oct.
2008
Cher journal,

Je viens de publier les sources (et binaires) d'un petit programme que j'ai codé l'an dernier sur la reconnaissance de notes de musiques chantées au micro.

Mon besoin était le suivant : j'avais un air en tête, et je voulais retrouver les notes de musique associées (do ré mi ...). J'étais incapable de le faire avec un piano ; les notes s'embrouillaient dans ma tête.

Avec ce petit programme, il suffit de pouvoir chanter la musique au micro.

J'ai publié ce programme ici (et l'ai baptisé voice2midi) :
http://davidferaoun.free.fr/eric/zik/voice2midi.php

Les sources sont aussi disponibles en GPL3 et LGPL.

C'est fait en java avec une applet signée (sinon, impossible de pouvoir écouter le micro...) ; les sources permettent aussi d'en faire une application stand-alone, mais je trouve cela moins pratique.
  • # Enfin !

    Posté par (page perso) . Évalué à 8.

    un soft pour apprendre à chanter correctement :)

    tu l'envoies à la star'ac ?
  • # en fait !

    Posté par (page perso) . Évalué à 10.

    J'ai pas de micro, je chante pas, j'aurais sûrement jamais besoin de ton soft mais …

    tu as eu une putain de vraie bonne idée !!! je trouve vraiment ça super.

    Chapeau l'artiste :) c'est avec ce genre de petite histoire que j'ai envie d'apprendre à programmer, juste pour le plaisir de dire, j'en ai rêver, je l'ai fait !
    • [^] # Re: en fait !

      Posté par . Évalué à 2.

      C'est clair que c'est un programme super démonstratif et sympathique. C'est typiquement le genre d'exemple très parlant montrant l'intérêt d'apprendre de la théorie comme ici le traitement du signal (Fourrier toussa).
  • # pika plop !

    Posté par (page perso) . Évalué à 3.

    Très très sympa le programme.

    Par contre ça fait planter mon Firefox donc je passe par l'appletviewer.

    Par contre, peux-tu nous "rappeler" comment on importe ton certificat pour autoriser ton applet à accéder au micro ?
    J'a réussi à la faire marcher en éditant le fichier ~/.java.policy et en y mettant :


    grant codeBase "http://davidferaoun.free.fr/-" {
    permission javax.sound.sampled.AudioPermission "record";
    };


    Mais là je n'utilise pas le mécanisme de signature mais juste l'url de l'applet.

    Ensuite je lance avec :

    appletviewer http://davidferaoun.free.fr/eric/zik/voice2midi.php

    Merci

    L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire

    • [^] # Re: pika plop !

      Posté par . Évalué à 2.

      Il me semble que je n'ai pas de certificat, mais juste une signature.

      Quand je le teste chez moi (juste testé sous XP pour l'instant), firefox me demande si je veux bien exécuter l'applet, et ça tourne... Peut-être que ça dépend de la config ?

      Merci en tous cas de l'astuce pour le faire fonctionner sans browser.
      • [^] # Re: pika plop !

        Posté par . Évalué à 2.

        cela me semble pas mal du tout, malheureusement je n'ai pu tester chez moi parce que je n'arrive pas (plus) à utiliser mon micro pour enregistrer :)

        Est-ce que c'est une limitation technique ou conceptuelle qui fait que l'on ne peut enregistrer une suite de notes ? Cela serait pratique de pouvoir avoir toutes les notes en une seule prise, avec éventuellement les longueurs des notes d'exprimées à la fin pour avoir les rythmes.

        Il existe également le format abc qui permet d'afficher des notes et convertir en midi, cela pourrait faire un bon format d'exportation en mode texte :
        http://abcnotation.org.uk/

        Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

        • [^] # Re: pika plop !

          Posté par . Évalué à 1.

          C'est une limitation dans la mesure où ça ne faisait pas partie du périmètre que je m'étais fixé (je n'en ai pas vraiment besoin...)

          En pratique, j'utilise ensuite un autre logiciel pour rentrer les notes manuellement.

          Utiliser ce format ABC pourrait être effectivement une évolution intéressante. Je ne vois pas de raison que cela soit impossible techniquement ou conceptuellement...
          • [^] # Re: pika plop !

            Posté par . Évalué à 2.

            je viens de voir qu'il existait une api pour java : http://code.google.com/p/abc4j/
            Cela pourrait permettre d'afficher les notes :)

            Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

  • # Petite faute...

    Posté par . Évalué à 2.

    ... sur le site : Cette application vous permet de déterminer la note de musique au moment où vous la chantez.

    Sinon je peux pas essayer ça ici au boulot, mais vivement ce soir que je fasse mumuse avec !

    T'as essayé avec des instruments monophoniques (flute, sax, guitare sur une seule note...)
  • # Un moteur de recherche musical?

    Posté par (page perso) . Évalué à 2.

    J'avais pensé à un moteur de recherche qui permettrait de retrouver un titre en chantant le thème dans un micro.
    Je me demande si tu n'as pas codé la partie client d'un tel moteur.

    Chapeau

    Vincent
    • [^] # Re: Un moteur de recherche musical?

      Posté par (page perso) . Évalué à 2.

      Salut,

      lorsque j'étais à l'université d'Aalborg, un groupe d'étudiants en Master travaillaient sur un projet similaire, qui consistait à savoir retrouver des morceaux lorsqu'on n'en connaissait que quelques notes.

      Evidemment c'était plus complexe qu'une simple base de données "parfaite" car on ne trouverait rien à moins de se rappeler le morceau parfaitement et de savoir bien chanter! Or justement quand on veut utiliser ce genre de système de recherche, c'est souvent qu'on ne se rappelle pas bien le morceau d'une part, et même en s'en rappelant, on ne chante pas toujours parfaitement juste.
      En effet il faut prendre en compte uniquement les intervalles d'une part (on peut changer le même morceau à diverses tonalités, ce qui compte est les intervalles), et aussi on peut chanter mal (donc être aux mauvaises notes, même en ne considérant que les intervalles). En fait, si je me souviens, le système créait des sortes de "partitions simplifiées" pour les mélodies qui notaient surtout les montées/descentes en fréquences. De sorte même qu'on pouvait faire des recherches sans chanter, ni micro. On est devant l'ordi et on se rappelle une mélodie. On n'y connaît pas forcément grand chose en musique, donc trouver des notes semble impossible. Par contre, tout le monde arrive plus ou moins à "sentir" que là, ça "monte", là ça "descend"... Et donc, on pourrait créer une sorte de pseudo-partition du genre "v^^--v" etc. pour dire "au début ça descend, puis on monte deux fois, ça reste à la même note, puis ça descend", etc.

      Je sais pas trop jusqu'où ils sont arrivés avec ce projet, mais c'est assez intéressant. En appliquant à cela des stats (comme presque toujours en IA) pour gérer les erreurs, trouver les résultats les plus probants, etc. je pense qu'on peut obtenir quelque chose de sympa. :-)
      A plouche.

      Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

  • # LAD / LAU

    Posté par . Évalué à 2.

    Bonjour

    Mille fois merci, d' abord.
    Eric, as tu pensé à poster la nouvelle sur les listes de diffusion ayant trait à la MAO avec gnu/linux ? Par exemple celle centrale de Linux Audio Developers et Linux Audio Users :

    http://lad.linuxaudio.org/subscribe/lau.html

    Celle devrait donner une belle visibilité à ton développement, auprès des utilisateurs chevronnés de linux pour l' audio, ainsi qu' auprès des developpeurs rendant notre chère plateforme si efficace dans ce contexte là aussi.

    Cordialement.
    • [^] # Re: LAD / LAU

      Posté par . Évalué à 2.

      Bonne idée, je vais faire cela.
  • # Cool

    Posté par (page perso) . Évalué à 2.

    Ça fait aussi accordeur de guitars ? :p
  • # Etre dans le rythme

    Posté par . Évalué à 1.

  • # Plantage :-(

    Posté par (page perso) . Évalué à 2.

    L'idée est intéressante mais ça plante quand je clique sur le bouton start, avant même que j'ai le temps de chanter :-(

    Je vais jeter un oeil au source ; ce genre de fonction pourrait être sympa à ajouter dans un logiciel d'écriture de partition comme Songwrite 2 :-) (http://home.gna.org/oomadness/fr/songwrite/index.html)
    • [^] # Re: Plantage :-(

      Posté par . Évalué à 2.

      Je viens de mettre à disposition la version standalone du programme.

      Est-ce que cela fonctionne mieux ?
      • [^] # Re: Plantage :-(

        Posté par (page perso) . Évalué à 1.

        Ça plante encore ; cette fois-ci j'ai les traces suivantes :

        jiba dans tmp : java -version
        java version "1.6.0_06"
        Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
        Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode)

        jiba dans tmp : java -cp ./Voice2Midi-0.1-standalone.jar Voice2MidiJFrame
        javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian not supported.


        J'ai l'impression que le format de son de mon micro n'est pas supporté... pour info, il s'agit d'un micro sur port USB (qui fonctionne normalement bien sous Linux).
        • [^] # Re: Plantage :-(

          Posté par . Évalué à 1.

          Pareil, j'ai la même erreur. Mon micro est celui de mon PC portable. Internement, je n'ai aucune idée du branchement.

          Sinon, très bonne idée de logiciel, bravo !
          • [^] # Re: Plantage :-(

            Posté par . Évalué à 1.

            Heu, je viens de tester sur un autre PC avec un micro "normal" (prise jack) et j'ai exactement la même erreur...
  • # ...

    Posté par . Évalué à 1.

    Purée, on va pouvoir siffler la Marseillaise dans les stades ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.