
Tenho uma ideia para um programa que desejo escrever, mas ele requer uma forma de converter áudio musical (guitarra única, na primeira aproximação) em notas (por exemplo, OCR/reconhecimento de fala para música).
Google encontrouIntelliScore, mas embora anuncie mais potência do que preciso (vários instrumentos), é proprietário e estou procurando algo que seja gratuito e compatível com GPL.
Existem programas ou bibliotecas gratuitas/GPL que podem fazer isso?
Responder1
HáNotado. Ele pode detectar notas e transcrevê-las na tela. É GPL, então você deve ser capaz de extrair e adaptar as rotinas de detecção/conversão.
Outra opção ékit de escriba musicalqual:
É um kit de ferramentas para transcrever um arquivo de áudio musical para notação musical comum. Isso é feito anotando manualmente um espectrograma ou algo semelhante e convertendo-o em um arquivo MIDI e em um arquivo de notação musical abc.
O programa proprietário Transcribe! tem umextensa listade outras ferramentas de transcrição de música, incluindo algumas de código aberto. Você também pode verificarFonteForgepara outros programas de transcrição de música de código aberto.
Responder2
Recomendado pelo Google waon
.
Originalmente ligadohttp://waon.sourceforge.net/Eu compilei no Xubuntu 18.04, incluindo GUI baseado em gtk.
O que é vagão
WaoN é um transcritor Wave-to-Notes, ou seja, o inverso da timidez de Tuukka Toivonen (e seus descendentes timidez++). (...) Minha intenção original é captar a sonoridade da harmonia a partir do som dos meus pianistas favoritos. (...)
Atualmente, WaoN contém três programas:
waon: transcriber (wav-to-mid converter) pv: phase vocoder for time-streching and pitch-shifting gwaon: GUI for waon and pv
WaoN é lançado sob a Licença Pública Geral GNU.
Onde encontrar o código-fonte
O CVS está desatualizado e o sourceforge está sendo descontinuado. Eu converti o histórico baseado em CVS para git e o hospedei novamente emhttps://github.com/fidergo-stephane-gourichon/waon.
Alguma opção?
Aqui está o resumo das opções que o executável oferece.
./waon --help
WaoN - a Wave-to-Notes transcriber, Version 0.10
Copyright (C) 1998-2007 Kengo Ichiki <[email protected]>
Web: http://waon.sourceforge.net/
WaoN is a Wave-to-Notes transcriber,
that is, a converter from sound file to midi file.
Usage: ./waon [option ...]
Options:
-h --help print this help.
-v, --version print version information.
OPTIONS FOR FILES
-i --input input wav file (default: stdin)
-o --output output mid file (default: 'output.mid')
options -i and -o have argument '-' as stdin/stdout
-p --patch patch file (default: no patch)
FFT OPTIONS
-n sampling number from WAV in 1 step (default: 2048)
-w --window 0 no window
1 parzen window
2 welch window
3 hanning window (default)
4 hamming window
5 blackman window
6 steeper 30-dB/octave rolloff window
READING WAV OPTIONS
-s --shift shift number from WAV in 1 step
(default: 1/4 of the value in -n option)
PHASE-VOCODER OPTIONS
-nophase don't use phase diff to improve freq estimation.
(default: use the correction)
NOTE SELECTION OPTIONS
-c --cutoff log10 of cut-off ratio to scale velocity of note
(default: -5.0)
-r --relative log10 of cut-off ratio relative to the average.
(default: no relative cutoff
= absolute cutoff with the value in -c option)
-k --peak peak threshold for note-on, which ranges [0,127]
(default: 128 = no peak-search = search only first on-event)
-t --top top note [midi #] (default: 103 = G7)
-b --bottom bottom note [midi #] (default: 28 = E1)
Here middle C (261 Hz) = C4 = midi 60. Midi # ranges [0,127].
-a --adjust adjust-pitch param, which is suggested by WaoN after analysis.
unit is half-note, that is, +1 is half-note up,
and -0.5 is quater-note down. (default: 0)
DRUM-REMOVAL OPTIONS
-psub-n number of averaging bins in one side.
that is, for n, (i-n,...,i,...,i+n) are averaged
(default: 0)
-psub-f factor to the average, where the power is modified as
p[i] = (sqrt(p[i]) - f * sqrt(ave[i]))^2
(default: 0.0)
OCTAVE-REMOVAL OPTIONS
-oct factor to the octave removal, where the power is modified as
p[i] = (sqrt(p[i]) - f * sqrt(oct[i]))^2
(default: 0.0)
Responder3
Não posso fornecer uma solução de software, mas posso resolver o problema subjacente: que é reconhecer os tons "naturais" em uma fonte arbitrária. A peça que falta no quebra-cabeça é fazer uso eficaz da parte de fase de um espectrograma parareatribuiras frequências no espectro para suas posições mais naturais (as "frequências instantâneas" no espectro). O resultado é uma maior concentração do espectro nas linhas chirp. Uma consideração semelhante também se aplica aos escalogramas – que diferem dos espectrogramas porque estão numa escala logarítmica de frequência, em vez de numa escala linear.
O pacote Loris é um pacote que conheço que fornece um conjunto de rotinas que incluem aquelas para estimar frequências instantâneas.
Como você está escrevendo seu próprio software, você pode tentar implementar diretamente métodos de reatribuição para espectrogramas ou escalogramas e usar isso como etapa intermediária em sua análise. Uma possibilidade pode ser experimentar as fórmulas que forneço na parte descritiva deste vídeo de demonstração. Existe um método, ajustado especificamente para escalogramas baseados em wavelets, chamado "synchrosqueezing", que faz o análogo escalaográfico da reatribuição.
As fórmulas que listo são muito mais simples e realizam uma análise semelhante de forma mais direta e têm a vantagem adicional de que os componentes individuais no escalograma também são componentes sonoros genuínos (já que a fase também está lá), de modo que o som total seria realmente a soma dos sons componentes. Em outras palavras, a transformação “inversa” (do escalograma para o som) é apenas uma simples adição.