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

Posté par eric () le 22 octobre 2008
19
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.

> Lire le journal (24 commentaires, moyenne: 2,3).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Enfin !

Posté par Moun's (page perso, ) le 22/10/2008 à 23:16. (lien). Évalué à 8.

un soft pour apprendre à chanter correctement :)

tu l'envoies à la star'ac ?

en fait !

Posté par Marc Poiroud (Jabber id, page perso, ) le 22/10/2008 à 23:39. (lien). É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 !

--
La chanson est une industrie parce qu’une poignée d’imbéciles a réussi à être moins con que le reste.
(Coluche)
  • [^]Re: en fait !

    Posté par suJeSelS () le 23/10/2008 à 09:11. (lien). É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 Infernal Quack (Jabber id, page perso, ) le 23/10/2008 à 00:19. (lien). É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

  • [^]Re: pika plop !

    Posté par eric () le 23/10/2008 à 01:07. (lien). É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 uᴉpɹɐʌɹɐɟ (page perso, ) le 24/10/2008 à 19:08. (lien). É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/

      --
      "C’est un grave danger et seuls les imbéciles l’ignoreront, jusqu’au jour où il sera trop tard"
      ---------
      Les dalles brillantes c'est moche et nul
      • [^]Re: pika plop !

        Posté par eric () le 24/10/2008 à 21:03. (lien). É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 uᴉpɹɐʌɹɐɟ (page perso, ) le 24/10/2008 à 21:29. (lien). É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 :)

          --
          "C’est un grave danger et seuls les imbéciles l’ignoreront, jusqu’au jour où il sera trop tard"
          ---------
          Les dalles brillantes c'est moche et nul

Petite faute...

Posté par gbetous () le 23/10/2008 à 09:08. (lien). É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 Nitchevo (page perso, ) le 23/10/2008 à 09:33. (lien). É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 Jehan (page perso, ) le 23/10/2008 à 13:17. (lien). É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.

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

      Posté par Gusufyr () le 23/10/2008 à 19:19. (lien). Évalué à 2.

      Cela me fait penser à http://fr.musipedia.org/ , cela ne m'a jamais donné de bon résultat mais le concept est vraiment intéressant. Et apparemment le code en question (qui ne prend en compte que les intervalles) est le code de Parsons.

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

      Posté par zx81 () le 23/10/2008 à 21:49. (lien). Évalué à 1.

      Je sais pas trop jusqu'où ils sont arrivés avec ce projet
      Jusqu'au DRH de google ?

LAD / LAU

Posté par tankey () le 23/10/2008 à 12:57. (lien). É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 eric () le 23/10/2008 à 22:14. (lien). Évalué à 2.

    Bonne idée, je vais faire cela.

Cool

Posté par Snarky (Jabber id, page perso, ) le 23/10/2008 à 15:50. (lien). Évalué à 2.

Ça fait aussi accordeur de guitars ? :p

--
Milite pour un about:black sur les navigateurs ! ( シ Sauvons la planète ツ )

Etre dans le rythme

Posté par jraf () le 23/10/2008 à 17:05. (lien). Évalué à 1.

http://www.bored.com/songtapper/

Plantage :-(

Posté par Jiba (page perso, ) le 23/10/2008 à 21:32. (lien). É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 eric () le 23/10/2008 à 22:04. (lien). Évalué à 2.

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

    Est-ce que cela fonctionne mieux ?

    • [^]Re: Plantage :-(

      Posté par Jiba (page perso, ) le 24/10/2008 à 21:26. (lien). É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 outreal () le 26/10/2008 à 14:26. (lien). É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 outreal () le 26/10/2008 à 14:59. (lien). É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 tankey () le 25/10/2008 à 09:47. (lien). Évalué à 1.

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

Revenir en haut de page