2010-10-27 13 views
38

Qual è un buon algoritmo di elaborazione del segnale digitale che sia valido per gli accordi di chitarra? Dal momento che Fast Fourier Transform, penso che sia preciso solo su singole note suonate sulla chitarra ma non su note riprodotte simultaneamente (ad esempio, accordi).Algoritmo di riconoscimento della chitarra accordata?

Grazie!

+2

Chiedi ai ragazzi di Melodyne: http://www.youtube.com/watch?v=jFCjv4_jqAY – herzmeister

+4

Su quale base pensi che la FFT sia inattaccabile nel tuo caso? – Biggles

risposta

2

Bene, puoi provare un altro set di algoritmi per il dominio della frequenza, come le wavelet. Ma non sono sicuro che ciò accada per il tuo problema di accuratezza. In realtà, non ho capito in che modo stai avendo problemi con la FFT. Sarà sempre un'approssimazione dell'accordo, non esiste un modo perfetto per recuperare quel tipo di informazione sul suono.

Quindi, dipende dall'analisi che fai su quello spettro, con note singole, ci sono in realtà molti algoritmi migliori rispetto alla FFT, ma con gli accordi molto probabilmente dovrai lavorare con FFT.

Il problema che dovrete affrontare è dividere le armoniche fondamentali dalle armoniche superiori, una cosa che può aiutare è considerare solo le frequenze che si trovano sulla gamma della chitarra. Se devi solo lavorare con i suoni della chitarra, dovresti dedicare del tempo per studiare il normale grafico del dominio della frequenza della chitarra e cercare di usarlo per migliorare la tua precisione.

+0

Ciao! Quando si utilizza la FFT, è possibile utilizzare le intensità dei raccoglitori per cercare di determinare le note che comprendono gli accordi? Perché penso che avranno un qualche tipo di correlazione tra loro. – user488792

2

Esistono alcuni strumenti ragionevolmente efficaci che utilizzano DFT (FFT), ma eseguono molte elaborazioni dopo aver calcolato il DFT.

Prova this link per un riepilogo dello stato attuale della tecnica, o "Chordino" o "Chordata" di Google per gli algoritmi di estrazione degli accordi open source.

64

La risposta breve è che è necessario molto più di un algoritmo. I buoni metodi di riconoscimento degli accordi potrebbero essere più opportunamente descritti come "sistemi", ma di solito sono basati su una trasformazione iniziale nel dominio della frequenza (spesso DFT).

Se si desidera un representaton accordo della song simile a questo

C G Am F7 F6 C ... 

allora questo è in realtà un problema che è un po 'rimosso dal riconoscere le note in un pezzo di audio. In realtà, ci sono due problemi (grosso modo):

  1. constatazione che piazzole sono presenti in qualsiasi momento
  2. raggruppare questi posti nel tempo in modo da essere in grado di assegnare un'etichetta accordo ad un intervallo di tempo.

Si scopre che il modo in cui si trasforma dal dominio del tempo (audio normale) al dominio della frequenza (rappresentazione spettrale) è solo di importanza limitata. È molto importante ciò che fai dopo, e spesso i sofisticati modelli probabilistici (simili a quelli del riconoscimento vocale: HMM, DBN, ...) sono usati per affrontare questo problema.

Prova google scholar "trascrizione della corda" o "rilevamento degli accordi" o "etichettatura degli accordi" per la ricerca avanzata in questo settore.

La maggior parte di questi approcci utilizza una trasformata di Fourier discreta (DFT) per creare lo spettrogramma iniziale. Durante l'ulteriore elaborazione, tendono a differire solo leggermente, anche se sono state utilizzate diverse tecniche di smoothing delle serie temporali: modelli Markov nascosti, reti Bayesiane dinamiche, macchine vettoriali di supporto (SVMstruct) e campi casuali condizionali - tra gli altri. I trascrittori più avanzati utilizzano la sintonizzazione automatica, le informazioni chiave, le note delle note basse e le informazioni sulla posizione metrica per migliorare i risultati. Il mio thesis (capitolo 2) offre una buona panoramica.

Aperte algoritmi di rilevamento fonte di accordi:

Spero che questo aiuti.

+11

+1 per una buona risposta e per poter fare riferimento alla propria tesi nella risposta. – gary

+0

ho difficoltà ad usare il riconoscimento ChOOS LabROSA, puoi guidarmi su come usarlo? io uso il comando terminale, extractFeaturesAndTrain_svm e doChordID_svm, ma non è riconosciuto –

1

C'è uno contest tra scienziati in cui le persone cercano di analizzare diversi parametri della musica. Una delle sezioni di questo concorso è il riconoscimento degli accordi. Questo concorso è pubblico, quindi chiunque può parteciparvi e mostrare i risultati in questa sfera. I risultati dell'anno 2011 sono pubblicati here.

Un mio amico ha ottenuto buoni risultati in questa sfera (e anche in questo concorso). Puoi leggere il suo approccio sul suo webpage.

2

La FFT può e vi darà tutti i toni singoli se il software è stato impostato correttamente. L'intero punto della FFT è discriminare i toni, o se sei un astrofisico, vuoi conoscere i singoli elementi (sulpher, idrogeno ...) che sono nella luce che si stacca dalla stella.

Le armoniche non sono un problema perché hanno meno 'potenza' rispetto alla frequenza fondamentale, ad esempio C = 440hz, ma C = 880hz, ma 880 sarà il picco più piccolo nei risultati FFT.

+0

no, non è vero, se provi a disegnare lo spettro prodotto da FFT, ad esempio, per C5 nota suonata su un violino vedrai che C5 ha un valore inferiore ampiezza rispetto a C6. –

+0

@YuriyKravets Penso che significhi che puoi trovare la nota fondamentale in quanto sarà quella con il più grande 'potere' mentre lo mette –

Problemi correlati