
Tengo una idea para un programa que deseo escribir, pero requiere una forma de convertir audio musical (una sola guitarra, en primera aproximación) en notas (por ejemplo, OCR/reconocimiento de voz para música).
Google encontróIntelliScore, pero aunque anuncia más potencia de la que necesito (varios instrumentos), es propietario y estoy buscando algo que sea gratuito y compatible con GPL.
¿Existe algún programa o biblioteca gratuito/GPL que pueda hacer esto?
Respuesta1
haynota. Puede detectar notas y transcribirlas en la pantalla. Es GPL, por lo que debería poder extraer y adaptar las rutinas de detección/conversión.
Otra opciones eskit de escritura musicalcual:
Es un conjunto de herramientas para transcribir un archivo de audio musical a notación musical común. Esto se hace anotando manualmente un espectrograma o algo similar y convirtiéndolo en un archivo MIDI y en un archivo de notación musical abc.
El programa propietario Transcribe! tiene unlista extensade otras herramientas de transcripción de música, incluidas algunas de código abierto. También puedes consultarFuenteForgepara otros programas de transcripción de música de código abierto.
Respuesta2
Recomendado por Google waon
.
Originalmente enhttp://waon.sourceforge.net/Lo compilé en Xubuntu 18.04, incluida la interfaz gráfica de usuario basada en gtk.
que es waon
WaoN es un transcriptor Wave-to-Notes, es decir, lo inverso de timidity de Tuukka Toivonen (y sus descendientes timidity++). (...) Mi intención original es captar la voz de la armonía del sonido de mis pianistas favoritos. (...)
Actualmente, WaoN contiene tres programas:
waon: transcriber (wav-to-mid converter) pv: phase vocoder for time-streching and pitch-shifting gwaon: GUI for waon and pv
WaoN se publica bajo la Licencia Pública General GNU.
Dónde encontrar el código fuente
CVS está anticuado y Sourceforge se está eliminando progresivamente. Convertí el historial basado en CVS a git y lo realojé enhttps://github.com/fidergo-stephane-gourichon/waon.
¿Alguna opción?
Aquí el resumen de opciones que proporciona el ejecutable.
./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)
Respuesta3
No puedo ofrecerle una solución de software, pero puedo abordar el problema subyacente: que es el de reconocer los tonos "naturales" en una fuente arbitraria. La pieza que falta en el rompecabezas es la de hacer un uso eficaz de la fase de un espectrograma parareasignarlas frecuencias en el espectro a sus posiciones más naturales (las "frecuencias instantáneas" en el espectro). El resultado es una mayor concentración del espectro en las líneas de chirrido. Una consideración similar también se aplica a los escalogramas, que se diferencian de los espectrogramas en que están en una escala logarítmica de frecuencia, en lugar de una escala lineal.
El paquete Loris es un paquete que conozco que proporciona un conjunto de rutinas que incluyen aquellas para estimar frecuencias instantáneas.
Dado que está escribiendo su propio software, puede intentar implementar directamente métodos de reasignación, ya sea para espectrogramas o escalogramas, y utilizarlos como paso intermedio en su análisis. Una posibilidad puede ser experimentar con las fórmulas que proporciono en la parte de descripción de este video de demostración. Existe un método, adaptado específicamente para escalogramas basados en ondas, llamado "synchrosqueezing" que realiza el análogo escalaográfico de la reasignación.
Las fórmulas que enumero son mucho más simples y llevan a cabo un análisis similar de manera más directa y tienen la ventaja adicional de que los componentes individuales en el escalograma también son componentes de sonido genuinos (ya que la fase también está allí), de modo que el sonido total sería realmente la suma de los sonidos componentes. En otras palabras, la transformada "inversa" (de escalograma a sonido) es simplemente una simple suma.