Pergunta

Atualmente, estou trabalhando no meu quarto ano de projeto (ciência da computação), o que implica o automático de transcrição de música -> folha de música.Eu estou fazendo isso no Matlab no momento, mas terá que ser convertido para o java em algum momento.

Meu problema:Eu tenho o meu programa de retornar as notas corretas para senoidal pura tons, eu já encontrou um problema quando ele vem para a obtenção da freqüência fundamental de uma nota tocada por um natural do instrumento.Com certas notas, o pico que representa o fundamental da nota parece estar totalmente ausente.Por exemplo, quando eu jogar um G3 nota do garageband, ele é mostrado como um G4, como apenas o 1º, 3º, 5º e 7º harmônicos estão aparecendo no meu enredo.Tentei adicionar a imagem, mas como esse é meu primeiro post ele não iria me permitir.Os ponteiros na direção certa seria muito apreciada.

Foi útil?

Solução

Isso não é incomum.É muito comum que o fundamental para ser ausente, ou quase isso, para vozes masculinas, grandes instrumentos de corda, e muitos outros acamparam-se as fontes de som.

O que torna o uso de uma FFT de pico resultado sozinho extremamente pobres na determinação de notas musicais a partir de instrumentos musicais reais, em oposição a sinewave geradores de função.Isso porque o campo é diferente de pico espectral de freqüência.O Pitch é uma psico-acústicos, perceptivos fenômenos.Então, é isso que você precisa ler sobre.Há toneladas de artigos de pesquisa sobre o assunto.

Então você precisa olhar para um conjunto completamente diferente de algoritmos.Tente cepstrums (análise cepstral), harmônica produto espectros, autocorrelação e similares (AMDF, ASDF, etc.gal), RAPT (Robusto Algoritmo para o Campo de Seguimento), YAAPT, etc.

ADICIONADO:Eu escrevi uma análise mais detalhada do explicação de sons de frequência muito com falta de fundamentos em um post de blog.

Outras dicas

Não é incomum que a frequência fundamental de uma nota de instrumento musical seja atenuada em relação aos harmônicos (também conhecidos como conotações) e, em alguns casos, a magnitude da frequência fundamental pode estar bem abaixo da magnitude das conotações.

Dê uma olhada nesse gráfico de frequência/magnitude de um fagote real (não um fagote sintetizado) tocando uma nota G3. Observe o atenuado fundamental (196,39 Hz) em relação ao primeiro harmônico. Mas também observe que todos os harmônicos inteiros multiple são visíveis até o 10º harmônico. Na verdade, muitos outros harmônicos estão presentes, mas eles não são visíveis nesse enredo de magnitude linear.

BassoonG3frequencyMagnitude

No seu caso, o fato adicional de que o espectro do seu G3 Note está mostrando apenas o 1º, o 3º, o 5º e o 7º harmônicos sugere que algo está errado. Seu som de teste parece estar sintetizado, portanto o problema pode ser com a maneira como o som foi sintetizado.

Os espectros de instrumentos musicais reais geralmente mostram a frequência fundamental e muitos harmônicos inteiros multiplos, como 1, 2, 3 e assim por diante, como visto acima. E os harmônicos normalmente se estendem bem acima de 6kHz para a maioria das notas tocadas na maioria dos instrumentos.

Dê uma olhada nesse gráfico de frequência/decibel_magnitude de um fagote real (não um fagote sintetizado) tocando uma nota G3. Observe que um total de 37 harmônicos multiple -multiple está presente, até que eles dissipam no piso de ruído próximo a -104 dB.

BassoonG3frequencyDecibelMagnitude

Você pode ouvir esta amostra de fagote e ver seu espectro aqui:Espectro de instrumentos musicais de fagote

Leia também este post detalhado sobre Abordagens analíticas para transcrição musical autônoma

Você já tentou executá -lo através de um espectrograma (função espectrograma no matlab) para identificar o que está acontecendo?

Não sei quais algoritmos você usa, sem essas informações, não podemos dizer o que está dando errado. O que me alarma é que o seu segundo terceiro harmônico (segundo pico no enredo) é muito maior que o seu segundo harmônico (primeiro pico no enredo).

Tem certeza de que tem toda a amostragem corretamente: ou seja, seu DFT possui apenas frequências até metade da frequência de amostragem (faixa de frequência positiva e negativa)? Além disso: como você suprime qualquer parte transitória do seu sinal?

O fato de você ver picos em 2F, 4F, 6F e 8F implica fortemente que seus dados de entrada são realmente uma oitava acima do que você acha que é ou que está interpretando mal a escala de frequência dos seus resultados. Se você estava perdendo apenas a frequência fundamental, veria 3F, 5F e 7F também.

Sugestões:

  • Plote seus dados de entrada antes de tê -los. Você deve ser capaz de ocular a frequência do termo dominante.
  • Ouça a nota produzida pelo GarageBand. Está acima ou abaixo do meio c?
  • Verifique se você entende de onde vieram os valores na escala de frequência em sua trama.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top