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

Traitement du signal Discussion :

detecter les pics, basse, percution, dans une musique (temps reel)


Sujet :

Traitement du signal

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Points : 25
    Points
    25
    Par défaut detecter les pics, basse, percution, dans une musique (temps reel)
    plop,

    voila un projet qui dure depuis des années^^ detecter en temps reel les "pic" dans de la musique.

    j'ai ici un systeme qui marche tres bien, mais uniquement pour de la techno la ou les basse snt parfaitement definit

    le rock et autre ne sont pas adapté a mon systeme.

    voila ma technique actuelle, je filtre tout ce qui est superieur a 100HZ
    puis je redresse le signal (valeur absolue)
    ensuite j'en extrait l'envellope (passe bas a 10HZ) et j'extrait la valeur moyenne de cette envellope (passe bas a 1Hz)

    quand l'envellope est superieure de 1.35 fois a la valeur moyenne alors il y a un pic, une percution

    (ha oui, j'ai un bts electronique, tous le programme est embarqué dans un micro-C, je tourne a 20MHz/4 et j'ai moins d'1 Mo d'espace pour le programme, mais je peux, avec un autre micro monter a 120MHz/4 et avoir plus de place)

    comme vous l'avez vu la majorité du traitement est analogique, le micro ici ne me sert qu'a numeriser les tension, effectuer une multiplication puis comparer les deux et décider si oui ou non il faut allumer les del

    ce que je voudrais savoir :

    je n'ai aucune connaissance dans le domaine de l'audio, on trouve des algo qui cherche la voix, l'extrait et tout (mais c'est vrai que je n'en ai pas vu en temps reel) on devrait trouver la meme chose pour les percution non?
    ou encore un algo qui detecte une certaine "recurence"

    des idée sur comment faire?

    merci

    ps : n'oublier pas que c'est en temps reel je n'ai pas acces a la suite de la musique avant qu'elle ne soit joué

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Quel microcontrôleur utilises-tu et avec quel langage écris-tu tes programmes ?

    Ton algo de détection de pics est déjà bon. Qu'est-ce que tu cherches encore . S'il y a quelque chose que tu veux savoir, sois clair et précis.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Melem Voir le message
    Quel microcontrôleur utilises-tu et avec quel langage écris-tu tes programmes ?

    Ton algo de détection de pics est déjà bon. Qu'est-ce que tu cherches encore . S'il y a quelque chose que tu veux savoir, sois clair et précis.
    non il n'est pas bon, certaine percussion (a la batterie) sont filtrée des le depard.

    des fois les voix tres grave arrive a passer, ce qui declenche les led alors que je ne le veux pas.

    si mon cerveaux est capable de reconaitre les percution, on devrai pouvoir le mettre en algo non?

    j'utilise un PIC microchip 16F876A cadancé a 20MHz, mais j'ai aussi a disposition des DSpic pouvant aller bien plus vite.
    j'ecrit ça en C avec le compilateur CCS

    ps : ou alors sinon, autre solution, comment inplementer dans le fichier mp3 (je ne demande pas a ce que ça survive a une recompression) une donnée, allant de 0 a 255, capable de changer toute les 10ms sans qu'il y ai de repercution audible? ainsi je pourrais faire un soft pc, modifier le mp3 et ensuite le systeme electronique pourra extraire cette donnée et agir en consequence

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par sliders_alpha Voir le message
    non il n'est pas bon, certaine percussion (a la batterie) sont filtrée des le depard.

    des fois les voix tres grave arrive a passer, ce qui declenche les led alors que je ne le veux pas.
    Regarde du coté des filtres en peigne, qui permettent d'avoir moins de faux-positifs qu'un filtre basé uniquement sur l'energie.

    Il y a un lien sur wikipedia (Beat_detection) vers un article de GameDev.net sur le sujet.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Points : 25
    Points
    25
    Par défaut
    merci =D

    ça m'a l'air d'etre exactement ce que je cherche! je potasse ça, je ne sais pas si j'aurais le temps de mettre ça en appliquation maintenant par contre (en prepas + job etudiant, rentrée lundi)

    merci beaucoup

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par sliders_alpha Voir le message
    si mon cerveaux est capable de reconaitre les percution, on devrai pouvoir le mettre en algo non?
    Heu, si c'était aussi simple que ça, tu aurais un robot humanoïde à la Asimov chez toi qui ferait toutes les corvées à ta place...

    Non, ce n'est pas parce que ton cerveau est capable de faire quelque chose que l'on peut pondre un algo équivalent, hélas.

    Comme l'as indiqué pseudocode, je pense que tu devrais aller voir du côté des détecteurs de BPM pour effectuer ce genre de choses. Ton problème avec le rock est surtout lié au fait qu'une percussion n'est pas forcément basse, pour commencer : tu as aussi des caisses claires et des cymbales, et pas uniquement une grosse caisse. De plus, il y a peu de groupes de rock sans une guitare basse, qui va très certainement mettre un joli boxon dans ton algo, sans parler d'un chant façon Lamb of God !

    Dans tous les cas, il est quand même assez peu probable que tu puisses avoir quelque chose qui soit à la fois générique ET parfait : tu risques d'être forcé d'avoir plusieurs "réglages" à faire en fonction du type de musique que tu es en train d'analyser. La techno étant générée par ordinateur, elle est en général assez facile à analyser car les signaux sont souvent "parfaits", et surtout identiques entre eux.
    Par contre, sur de la musique réellement jouée par des humains, même le meilleur batteur du monde, dans le meilleur studio et avec le meilleur matos possible n'est pas capable de produire exactement le même son à chaque percussion : ils sont forcément tous légèrement différents les uns des autres, ce qui t'oblige à tenir compte d'erreurs plus importantes que dans de la musique électronique, et donc tu te retrouves obligatoirement avec plus de faux positifs au final.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    C'est quoi un "pic"? Peux-tu nous en donner une définition mathématique rigoureuse? Sinon, il nous sera impossible de t'aider et tu ne trouvera jamais la solution de ton problème: on ne peut pas trouver tant qu'on ne sait pas ce qu'on cherche.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Points : 25
    Points
    25
    Par défaut
    et bien un pic dans ce cas, est une varition de l'envelloppe du signal qui atteint une valeur superieure a 1.3 fois sa moyenne

    ce que je voulais savoir etait surtout, comment identifier caisse claire et autre.

    je pense avoir trouver ma reponse, pour du temps reel : c'est impossible

    comme il l'a été preciser plus haut, les percussion ne se trouve pas uniquement dans les basse frequence, en fonction du type de musique ou de l'origine (occidentale, orientale) les instrument de percution seront different

    meme mon cerveau n'est pas capable d'identifier correctement ces percution (il faut entendre 2-3 fois le morceau avant d'etre capable de le faire)

    alors pourquoi ne pas effectuer un marquage dans la musique elle meme fait a la main?

    en ajoutant un signal allant de 17KHz a 18KHz, j'ai un signal inaudible et sans problemme une resolution de 255 pour la luminosité de mes led.

    par contre, je ne pourrais l'ajouter que dans un WAV, car n'ayant aucune connaissance en compression mp3 (et ni le temps d'apprendre comment ce la fonctionne cette année en tous cas) je ne pourrais ajouter ce signal dans un mp3

    qu'en pensez vous?

Discussions similaires

  1. Detecter les applis IPhone installées dans une WebApp
    Par Fooshi dans le forum Développement iOS
    Réponses: 3
    Dernier message: 30/04/2012, 08h28
  2. Rajouter les numéros de ligne dans une colone d'une requete
    Par AntiSAL dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 02/11/2005, 19h07
  3. Réponses: 1
    Dernier message: 22/09/2005, 20h46
  4. Pouvoir gérer les actions des boutons dans une classe
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 08/07/2005, 12h08
  5. capter les messages d'interbase dans une appli
    Par devalender dans le forum InterBase
    Réponses: 6
    Dernier message: 25/06/2004, 16h58

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