2010-10-27 24 views
38

Qu'est-ce qu'un bon algorithme de traitement de signal numérique qui est bon sur les accords de guitare? Depuis Fast Fourier Transform je pense que seulement est précis sur des notes simples jouées sur la guitare mais pas des notes qui sont jouées simultanément (c'est-à-dire des accords).Algorithme de reconnaissance d'accords de guitare?

Merci!

+2

Demandez aux gars de Melodyne: http://www.youtube.com/watch?v=jFCjv4_jqAY – herzmeister

+4

Sur quelle base pensez-vous que la FFT est inactive dans votre cas? – Biggles

Répondre

2

Eh bien, vous pouvez essayer un autre ensemble d'algorithmes pour les domaines fréquentiels, comme les ondelettes. Mais je ne suis pas sûr si cela va faire pour votre problème de précision. En fait, je n'ai pas compris de quelle façon vous avez des problèmes avec la FFT. Ce sera toujours une approximation de l'accord, il n'y a pas de moyen parfait pour récupérer ce genre d'information sur le son. Donc, cela dépend de l'analyse que vous faites sur ce spectre, avec des notes simples, il y a effectivement beaucoup de meilleurs algorithmes que la FFT, mais avec des accords, vous devrez très probablement travailler avec FFT. Le problème que vous aurez à résoudre est de séparer les harmoniques fondamentales des harmoniques supérieures, une chose qui peut aider est de considérer seulement les fréquences qui sont sur la plage de guitare. Si vous devez seulement travailler avec des sons de guitare, vous devriez prendre le temps d'étudier le graphique normal du domaine fréquentiel de la guitare et essayer de l'utiliser pour améliorer votre précision.

+0

Salut! Lorsque vous utilisez la FFT, est-il possible d'utiliser les intensités des cases pour essayer de déterminer les notes qui composent les accords? Parce que je pense qu'ils auront un certain type de corrélation les uns avec les autres. – user488792

2

Il existe certains outils raisonnablement efficaces qui utilisent la DFT (FFT), mais ils effectuent beaucoup de traitement après le calcul de la DFT.

Essayez this link pour un résumé de l'état actuel de la technique, ou google "Chordino" ou "Chordata" pour les algorithmes d'extraction d'accords open source.

64

La réponse courte est que vous avez besoin de beaucoup plus d'un algorithme. De bonnes méthodes de reconnaissance d'accords pourraient plus facilement être décrites comme des «systèmes», mais elles sont généralement basées sur une transformation initiale du domaine fréquentiel (le plus souvent DFT).

Si vous voulez un représentatons d'accords de la chanson similaire à ce

C G Am F7 F6 C ... 

alors c'est en fait un problème qui est légèrement retiré de reconnaître les notes dans un morceau de l'audio. En fait, il y a deux problèmes (grosso modo):

  1. conclusion qui emplacements sont présents à tout moment
  2. regrouper ces emplacements au fil du temps afin de pouvoir attribuer une étiquette d'accord à un intervalle de temps.

Il s'avère que la façon dont vous passez du domaine temporel (audio normal) au domaine fréquentiel (représentation spectrale) n'a qu'une importance limitée. C'est très important ce que vous faites par la suite, et souvent des modèles probabilistes sophistiqués (similaires à ceux de la reconnaissance vocale: HMM, DBN, ...) sont utilisés pour résoudre ce problème. Essayez google scholar "transcription d'accords", ou "détection d'accords", ou "accord d'accords" pour la recherche avancée dans ce domaine.

La plupart de ces approches utilisent une transformée de Fourier discrète (DFT) pour créer le spectrogramme initial. Au cours du traitement ultérieur, ils ont tendance à ne différer que légèrement, bien que différentes techniques de lissage de séries chronologiques aient été utilisées: modèles de Markov cachés, réseaux bayésiens dynamiques, machines vectorielles de support (SVMstruct) et champs aléatoires conditionnels entre autres. Les transcripteurs les plus avancés utilisent l'accord automatique, les informations clés, les informations sur les notes de basse et les informations sur la position de la métrique pour améliorer les résultats. Mon thesis (Chapitre 2) donne un bon aperçu.

algorithmes de détection d'accords Open Source:

Hope this helps.

+11

+1 pour une bonne réponse et pour pouvoir référencer votre propre thèse dans la réponse. – gary

+0

J'ai de la difficulté à utiliser LabROSA Chord Recognition, pouvez-vous me guider pour l'utiliser? j'utilise la commande terminal, extractFeaturesAndTrain_svm et doChordID_svm, mais elle n'est pas reconnue –

1

Il existe un contest entre scientifiques où les gens essaient d'analyser différents paramètres de la musique. Une des sections de ce concours est la reconnaissance d'accords. Ce concours est public afin que tout le monde puisse y participer et montrer les résultats dans cette sphère. Les résultats de l'année 2011 sont publiés here.

Un de mes amis a obtenu de bons résultats dans cette sphère (et dans ce concours aussi). Vous pouvez lire sur son approche sur son webpage.

2

La FFT peut vous fournir tous les sons simples si vous configurez correctement le logiciel. Tout le but de la FFT est de discriminer les sons, ou si vous êtes astrophysicien, vous voulez connaître les éléments individuels (sulpher, hydrogène ...) qui sont dans la lumière qui sort de l'étoile.

Les harmoniques ne sont pas un problème car ils ont moins de 'puissance' que la fréquence fondamentale, par exemple, C = 440hz, mais C = 880hz aussi, mais 880 sera le plus petit pic des résultats FFT.

+0

non, ce n'est pas vrai, si vous essayez de dessiner un spectre produit par FFT, par exemple, pour une note C5 jouée sur un violon, vous verrez que C5 a moins amplitude que C6. –

+0

@YuriyKravets Je pense qu'il veut dire que vous pouvez trouver la note fondamentale car elle sera celle qui aura le plus de 'pouvoir' comme il le dit –