Domanda

Attualmente sto lavorando sul mio progetto quarto anno (informatica) che prevede la trascrizione automatica della musica -> foglio di musica. Lo sto facendo in Matlab al momento, ma dovrà essere convertito in java a un certo punto.

Il mio problema:           Ho il mio programma di restituire le note giuste per i toni sinusoidali pure, ora ho incontrato un problema quando si tratta di recupero della frequenza fondamentale da una nota suonata da uno strumento naturale. Con alcune note, il picco corrispondente al fondamentale della nota sembra mancare del tutto. Per esempio quando gioco una nota G3 da GarageBand, si è mostrato come un G4, come solo il 1 °, 3 °, 5 ° e 7 ° armoniche stanno comparendo in mia trama. Ho provato ad aggiungere l'immagine, ma come questo è il mio primo post non mi avrebbe permesso. Eventuali puntatori nella giusta direzione sarebbe molto apprezzato.

È stato utile?

Soluzione

Questo non è insolito. E 'molto comune per il fondamentale mancare, o quasi, per voci maschili, grandi strumenti a corda, e molte altre sorgenti sonore acuto.

che fa uso di un risultato di picco FFT solo estremamente poveri a determinare le note musicali di strumenti musicali reali, al contrario di generatori di funzione sinusoidale. Questo perché passo è diverso dal picco di frequenza spettrale. Il passo è un fenomeno percettivo psico-acustica. Ecco, questo è ciò che è necessario leggere su. Ci sono tonnellate di articoli di ricerca sul tema.

Quindi è necessario guardare ad una serie completamente diversa di algoritmi. Prova cepstrums (analisi cepstrale), spettri di prodotti armonici, autocorrelazione e simili (AMDF, ASDF, ecc ritardi), RAPT (Robust Algoritmo per Pitch inseguimento), YAAPT, ecc.

ha aggiunto: Ho scritto una più dettagliata spiegazione dei suoni inclinati con i fondamentali manca in un post sul blog .

Altri suggerimenti

Non è insolito per la frequenza fondamentale di una nota strumento musicale per essere attenuata rispetto alle armoniche (noto anche come sfumature), e in alcuni casi la grandezza fondamentale frequenza può essere ben al di sotto della grandezza delle sfumature.

Date un'occhiata a questa trama frequenza / grandezza di un vero e proprio fagotto (non un fagotto sintetizzato) suonando una nota G3. Osservare il (196,39 Hz) rispetto fondamentale attenuato alla prima armonica. Ma anche osservare che tutte le armoniche interi-multipla sono visibili fino 10 ° armonica. In realtà, molti più armoniche sono presenti, ma non sono visibili su questo terreno grandezza lineare.

BassoonG3frequencyMagnitude

Nel tuo caso, il fatto che lo spettro aggiuntivo tuo G3 di nota musicale sta mostrando solo il 1 °, 3 °, 5 ° e 7 ° armoniche suggerisce che qualcosa non va. Il vostro suono di prova sembra essere sintetizzato, quindi il problema potrebbe essere con il modo in cui il suono è stato sintetizzato.

Gli spettri di strumenti musicali reali mostrano tipicamente la frequenza fondamentale e molte armoniche interi multiplo come 1, 2, 3 e così via, come visto sopra. E le armoniche tipicamente si estendono ben al di sopra 6KHz per la maggior parte le note suonate sulla maggior parte degli strumenti.

Date un'occhiata a questa trama frequenza / decibel_magnitude di un vero e proprio fagotto (non un fagotto sintetizzato) suonando una nota G3. Si osservi che un totale di 37 armoniche interi multiplo sono presenti, fino dissappear al rumore di fondo vicino -104 dB.

BassoonG3frequencyDecibelMagnitude

È possibile ascoltare questo campione fagotto e vedere il suo spettro qui: Fagotto spettro strumento musicale

Anche leggere questo post dettagliate sulla approcci analitici alle autonoma trascrizione musicale

Hai provato in esecuzione attraverso uno spettrogramma (funzione spettrogramma in MATLAB) per identificare cosa sta succedendo?

Non so che cosa si usa algoritmi, senza che tali informazioni, non possiamo dire che cosa non va. Ciò che mi allarma è che la vostra seconda terza armonica (secondo picco nella trama) è molto più grande di quanto il tuo seconda armonica (primo picco nella trama).

Sei sicuro di avere tutto il diritto di campionamento: vale a dire la vostra DFT ha solo le frequenze fino a metà della frequenza di campionamento (sia positivi che negativi gamma di frequenza)? Inoltre: come si fa a sopprimere ogni parte transitoria del segnale?

Il fatto che si vede picchi a 2f, 4f, 6f e 8f fortemente implica che sia i dati di input è in realtà di un'ottava sopra quello che si pensa che è, o che si sta interpretando male la scala frequenza dei vostri risultati. Se tu fossi solo perdendo la frequenza fondamentale, che ci si vede 3f, 5f e 7f pure.

Suggerimenti:

  • Tracciare i dati in ingresso prima di FT esso. Si dovrebbe essere in grado di bulbo oculare la frequenza del termine dominante.
  • Ascolta la nota prodotta da GarageBand. E 'al di sopra o al di sotto di mezzo C?
  • Verificare di capire dove i valori sulla scala delle frequenze sul vostro diagramma venuti.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top