¿Quieres saber las notas que cantas y cómo afinarlas?

  • 1
#1 por jaime71 el 18/04/2015
Hola

He desarrollado un programa que te permite saber qué nota estás cantando en tiempo real y reproduce a la vez el sonido de la nota como un instrumento permitiendo afinar correctamente .

Lo mejor será que veáis este vídeo de menos de un minuto.

https://youtu.be/pennmuPxvL8

Especialmente útil para cantantes pero puedes conectarte con cualquier instrumento.

¿Qué os parece?
Subir
#2 por lucazepp el 19/04/2015
Excelente! :birras: En el video no logro apreciar bien como reacciona el programa si cantaras desafinado ¿Marca si la nota está baja o alta, como un afinador?
Subir
#3 por jaime71 el 19/04/2015
#2

Muchas gracias.
No exactamente aunque se hará eso que dices.
Mira este video de un minuto, aquí se aprecia mejor los desafines.

https://youtu.be/oDKkF16ugK4

Un saludo
Subir
#4 por vagar el 19/04/2015
Hola, Jaime.

Yo hice algo parecido hace unos años, también en Java, orientado a la enseñanza de la flauta dulce en primaria:

http://vagar.org/wordpress/?p=291&lang=es

El problema de Java es que las máquinas virtuales vienen cada vez más restringidas y conseguir que el usuario dé autorización para usar el micrófono puede llegar a ser complicado.

Metodológicamente no puedo estar de acuerdo con tus premisas: la afinación tiene que venir a priori desde el oído interno, no a posteriori desde fuera. Bonito uso del napolitano ;-), aunque tu sistema no convencional de notación de alteraciones también es un punto que educativamente puede resultar cuestionable. Si cantaras la sensible en el siguiente acorde, ¿saldría Db o C#?

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
#5 por catorze el 06/05/2015
#1
Hola Jaime
Me parece genial el programa! sigue adelante, para afinar con la voz ¿se podria elegir algun sonido que semeje mas la voz humana para ayudar con la afinación?

#4
Hola Luís
En ningun momento se dice el niver para el cual está indicado, en mi caso, toda la gente que pasa por mi estudio y necesita trabajo de afinación este programa le vendria de perlas para trabajarse la afinación y conocer las notas que hace.

Lo del oido interno que dices es muy relativo, hay gente que es capaz de memorizar la altura tonal y otras que no, como es mi caso, toco varios intrumentos, algunos a nivel profesional y no he consegido memorizar ni una nota, pero si tengo una referencia te puedo cantar una escala o un intervalo fácilmente, en mi caso necesitaria un aprendizaje específico para memorizar en tono real, corrigeme si no era eso a lo que te referias.

Saludos!
Subir
#6 por vagar el 06/05/2015
#5

Lo que propone Jaime es un software reconocedor de altura, que trabaja siempre a posteriori. Un cantante o un intérprete de instrumentos de afinación variable (cuerdas sin trastes, vientos...) tiene que ser capaz de producir su propia afinación antes de emitir el sonido. Los pianistas, guitarristas, etc. tienen la ventaja de que no pueden tocar desafinado, pero esta ventaja relativa también puede hacer al oído acomodaticio y resultar finalmente perjudicial para la musicalidad.

Creo que estás confundiendo oído absoluto con oído interno. El oído interno es la capacidad de imaginar sonidos, de evocar de manera consciente y controlada sensaciones auditivas sin que éstas se estén produciendo en la realidad física. La metodología que yo conozco de desarrollo del oído interno es siempre relativa, por interválica en contexto atonal y por grado funcional en el caso tonal.

Yo personalmente tampoco tengo oído absoluto, aunque con el tiempo se me están desarrollando algunas sinestesias muy curiosas, es fascinante cómo el cerebro hace asociaciones. Por ejemplo, imagino que estoy percutiendo un diapasón, su vibración en los dedos y la mayoría de las veces imagino escuchar el La 440 clavado, aunque a veces me he llevado chascos de hasta un semitono.

Evidentemente mientras se está aprendiendo es necesaria la realimentación. El alumno imagina el sonido y después lo emite con la garganta, octavado según sus posibilidades de registro, para que el profesor y el alumno puedan comprobar si la afinación interna es suficientemente precisa y estable. Quizá la herramienta de Javier podría utilizarse para este propósito, pero con tantas limitaciones que no la veo verdaderamente útil. El alumno estaría permanentemente tentado a emitir y dejarse corregir a posteriori por la herramienta, en lugar de hacer el esfuerzo imaginativo de afianzar bien la nota internamente antes de emitir.

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
#7 por supertorpe el 06/05/2015
lgarrido escribió:
El alumno estaría permanentemente tentado a emitir y dejarse corregir a posteriori por la herramienta, en lugar de hacer el esfuerzo imaginativo de afianzar bien la nota internamente antes de emitir.

Una posible solución consistiría en hacer que el software emitiese el tono de referencia y, a continuación, forzase un lapso de tiempo en silencio antes de capturar la entonación del alumno. Ese lapso debería ser suficientemente largo para forzar al alumno a "pensar" conscientemente el sonido.

Estudiando piano desde 01/03/2010 hasta 2015.
Mis cosillas
https://www.diigo.com/user/supertorpe

Subir
#8 por jaime71 el 21/05/2015
Hola

No sé porqué no me ha saltado lo de las respuestas. Pensé que no había contestado nadie. Disculpad mi tardanza.

Orfeo y los Argonautas; me encanta. Está en la misma dirección. Me parece muy interesante.

lgarrido escribió:
El problema de Java es que las máquinas virtuales vienen cada vez más restringidas y conseguir que el usuario dé autorización para usar el micrófono puede llegar a ser complicado.


A ver si puedo incorporar un sinte open source al micro del ordenador para que no se necesite nada más para usarlo, esa es la intención. Espero que se haga en breve, estoy en ello.

lgarrido escribió:
Si cantaras la sensible en el siguiente acorde, ¿saldría Db o C#?


Te aparecen las dos. Se podrá seleccionar en breve el que quieras de antemano pero te aparecen las dos. Tú lo interpretas como quieras.

Me encantaría que lo probases con un micro. Es una sensación muy chula, estoy enganchado tipo a un karaoke. Me puse a cantar encima de un tema en B ("A tu lado" de Los Secretos) y puse la armadura. Como yo escucho y utilizo el Do móvil, cuando cantaba Do Re Mi y veía a la vez las notas reales, B, C#, D#, me crujía el cerebro ya que estás manejando el sistema fijo y móvil constantemente sólo con el esfuerzo de mirar . No es sencillo cantar sin que se mueva la bolita ,el poder mantener una nota perfectamente es un tema complicado y muy buen ejercicio para todos .

catorze escribió:
¿se podria elegir algun sonido que semeje mas la voz humana para ayudar con la afinación?


Puedes seleccionar cualquiera del los standar midi (o algo así), tienes de todo aunque no de muy buena calidad, lo suyo es que en un futuro tenga mejores sonidos y la posibilidad de coger sonidos de fuera.

lgarrido escribió:
El alumno estaría permanentemente tentado a emitir y dejarse corregir a posteriori por la herramienta, en lugar de hacer el esfuerzo imaginativo de afianzar bien la nota internamente antes de emitir.


Creo que no te has imaginado bien como funciona, no te corrige nadie, si no lo cantas no suena. Eres tú el que corrige la nota al escuchar lo que acabas de cantar porque ves la nota real que estás produciendo al momento y si no es la que quieres, la cambias. El sonido lo emites tú primero.

Por otro lado, siempre tienes la opción de bajar el volumen del sinte y no escuchar nada más que tu voz viendo las notas que cantas.

supertorpe escribió:
Ese lapso debería ser suficientemente largo para forzar al alumno a "pensar" conscientemente el sonido.


Buena idea pero se sale de la función principal aunque se llegará con suerte. El software tal y como está ,es un controlador con la voz o con el instrumento que sea vía midi. Nunca va a emitir ningún sonido que no hayas producido con la voz previamente.


Muchas gracias a todos por los las respuestas y disculpad de nuevo mi tardanza.

Espero que lo podáis probar y me digáis. Para cantar es especialmente útil. Yo lo uso y me sorprendo del progreso a diario.

Un saludo
Subir
#9 por vagar el 21/05/2015
jaime71 escribió:

A ver si puedo incorporar un sinte open source al micro del ordenador para que no se necesite nada más para usarlo, esa es la intención. Espero que se haga en breve, estoy en ello.


Las máquinas virtuales java traen integrado un pequeño banco GM de tabla de ondas, no sé si es lo que estás usando ahora. En tiempos era de 4-8 MB para la versión de escritorio y de 1 MB para móviles, no sé cómo andará actualmente.

http://docs.oracle.com/javase/7/docs/technotes/guides/sound/index.html

Por supuesto se puede añadir otro motor de síntesis. De hecho yo en Argoflautas directamente uso muestras de cada nota en vez del sinte, ya que sólo necesito un sonido en un registro muy restringido.

Pero el problema que te comento es el acceso al micrófono, que está restringido por seguridad, en algunas plataformas más que en otras. Es lo que a mí me dio más problemas, incluso con la JAR firmada.

jaime71 escribió:
No es sencillo cantar sin que se mueva la bolita ,


¿No te parece que la realimentación visual puede distraer de la auditiva?

jaime71 escribió:
El sonido lo emites tú primero.


Sí, pero lo que me preocupa es que la tendencia del alumno sería emitir sin la debida preparación y dejarse corregir por el programa, sin hacer suficiente trabajo interno.

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
#10 por jaime71 el 22/05/2015
lgarrido escribió:
no sé cómo andará actualmente.


La verdad es que de informática yo sé lo justo, a nivel usuario.

lgarrido escribió:
De hecho yo en Argoflautas directamente uso muestras de cada nota en vez del sinte, ya que sólo necesito un sonido en un registro muy restringido.


Me encanta el Argonauta, enhorabuena!

Asumo entonces que es otro sistema, tienes grabado cada muestra y luego me imagino que por comparación si coincide haces el movimiento en el gráfico correspondiente . Creo entender que tienes un afinador al principio que hace que se mueva una barra como en un afinador normal y por otro lado un sistema de muestras distinto, no es así.

¿Se puede ampliar ese registro ?, ¿necesitarías más muestras?, ¿sólo con flauta dulce o se podría ampliar a otros instrumentos?, ¿podrías tener las doce notas y en lo de los peces hacer algo que distinga los que tienen alteraciones de los que no los tienen?

lgarrido escribió:
Pero el problema que te comento es el acceso al micrófono, que está restringido por seguridad, en algunas plataformas más que en otras. Es lo que a mí me dio más problemas, incluso con la JAR firmada.


Esto no lo sabía, lo voy a ver en breve, te lo comentaré, espero que haya solución.

lgarrido escribió:
¿No te parece que la realimentación visual puede distraer de la auditiva?


Bueno, creo que la retroalimentación visual en este caso va junto a la auditiva y se representa en un pentagrama, lo que refuerza la conexión con la partitura, como en ejercicios tipo "ear master " Creo que el humano aprende visualmente y que un instrumento tiene su forma pero la voz te la tienes que imaginar, esto sólo te proporciona un sitio donde poder hacerlo que coincide con una partitura.

Creo que es muy útil saber qué notas estás cantando , sobre todo al principio y cuando no estás seguro de qué nota es la que cantas. En cualquier caso, mirar es una ayuda para el que la quiera en los momentos que quiera. Este software es una herramienta y se puede usar de muchas formas muy interesantes.

Tienes una retroalimentación visual para saber qué nota es (puedes no mirar) y otra acústica para poder imitar y corregir (que puedes bajar o subir el volumen), es como un instrumento físico accionado con la voz. Puedes saber si cantas afinando o no y de qué manera lo haces. Es muy útil , piensa también en la mayoría de la gente que canta pero no tiene ni idea de música escrita.

lgarrido escribió:
lo que me preocupa es que la tendencia del alumno sería emitir sin la debida preparación y dejarse corregir por el programa, sin hacer suficiente trabajo interno.


Eso no lo entiendo, el programa no te corrige nada, actúa de sinte de tu voz, no va a tocar nada que tú no hayas emitido. La bolita se mueve como un afinador y el volumen del sonido lo puedes bajar y subir. El escuchar el sonido del sinte hace que puedas corregir de esta forma:1- cantas una nota, 2-te dicen qué nota es, 3-la reproducen con un instrumento perfectamente afinado 4- lo escuchas para poder corregir si hay oscilaciones. Todo ello en un instante en tiempo real.
Creo que hay que hacer un trabajo interno, como dices , pero creo que ver y oír las notas cantadas en tiempo real es de una gran ayuda, sobre todo para la imaginación, para que la conversión entre lo que uno canta y las notas escritas en la partitura no sea abstracta.
Subir
#11 por vagar el 22/05/2015
jaime71 escribió:
La verdad es que de informática yo sé lo justo, a nivel usuario.


¿Qué estás usando para detectar la altura, entonces?

jaime71 escribió:
Creo entender que tienes un afinador al principio que hace que se mueva una barra como en un afinador normal y por otro lado un sistema de muestras distinto, no es así.


No, son dos cosas distintas.

El núcleo del software es un detector de tono (pitch).

http://en.wikipedia.org/wiki/Pitch_detection_algorithm

En mi caso yo implementé uno relativamente sencillo usando autocorrelación. Para un sonido monofónico, de espectro sencillo y rango limitado y relativamente agudo (la nota más grave es un Do5 a 523,25 Hz) como el de la flauta dulce va perfecto. Hice pruebas de voz y piano y también funcionaba bien, pero posiblemente sea mucho menos fiable.

En aquel entonces me apoyaba en los libros de la carrera sobre DSP y en artículos del IEEE.

Hoy en día hay software libre del que se puede extraer código fuente con algoritmos más sofisticados y de mejor calidad. Por ejemplo hoy me iría directamente a adaptar código de aubio o a algún otro software de análisis de audio como CLAM o SonicVisualiser/VAMP.

El detector de tono está constantemente generando eventos de medición de frecuencia cada pocos milisegundos, no recuerdo el tamaño de la ventana de análisis, son los que uso para la parte del afinador. A partir de ellos también puede generar eventos Note On - Note Off parecidos a una entrada MIDI (de hecho, se me acaba de ocurrir que en Java se podría encapsular como un dispositivo MIDI estándar, para que fuera intercambiable con otros).

El resto del programa responde a esos eventos y reacciona consecuentemente.

Las muestras se usan sólo en la actividad de reconocimiento de altura (las sirenas, 2:47 en el vídeo) para emitir las notas que el alumno tiene que imitar. En aquellos tiempos no me fiaba de la implementación del sinte de tabla de ondas que traía la JVM.

jaime71 escribió:
¿podrías tener las doce notas y en lo de los peces hacer algo que distinga los que tienen alteraciones de los que no los tienen?


Sí, sin problemas, el detector reconoce cualquier frecuencia. Se podría escribir la alteración como un dibujo en las escamas del pez, por ejemplo.

jaime71 escribió:

Esto no lo sabía, lo voy a ver en breve, te lo comentaré, espero que haya solución.


El problema es que la solución pasa por la intervención del usuario, y la configuración de los mecanismos de autorización es complicada, dependiente de la plataforma y llena de mensajes aterradores sobre lo que le puede pasar a tu equipo si das permisos. En este hilo intento ayudar a un usuario muy competente y no lo consigo:

http://www.hispasonic.com/foros/teoria-musical-para-ninos-coches-concepto-peculiar/465131

Hoy en día no usaría Java como plataforma de desarrollo, posiblemente cambiaría a OpenFrameworks, o quizá a las APIs de audio que está sacando Google para Chrome.

jaime71 escribió:
refuerza la conexión con la partitura,


Esa es la parte que más me convence de tu proyecto, el asociar altura y posición en el pentagrama, aunque difiero en usar el desplazamiento lateral para las alteraciones.

Pero es un elemento que para mí siempre viene después, lo primero es darle significado a la altura, asociar el nombre de la nota o su función tonal o interválica con el sonido.

jaime71 escribió:
cuando no estás seguro de qué nota es la que cantas.


Para eso está el oído interno, que es lo que hay que desarrollar. El esfuerzo hay que hacerlo antes de cantar, no después, porque después ya no sirve de nada más que para verificar que te has equivocado y volver a empezar. Lo cual no es poco, pero el proceso de evaluación/corrección hay que integrarlo metodológicamente para que no vaya en contra del proceso de aprendizaje.

jaime71 escribió:
el programa no te corrige nada


Si cantas la nota más desafinada de medio semitono tu programa me imagino que responde con la nota más cercana, que no es la que se pretende cantar. En ese caso la corrección sería visual, siempre que el alumno sepa de partida el nombre de la nota que querría haber cantado.

Si cantas la nota buena, pero desafinada, el programa responderá con la nota bien afinada y el cantante corregirá su afinación para imitar la del programa.

En mi opinión ésta no es una buena dinámica de educación del oído. Yo cuando he dado clase de oído no permito corregir la afinación durante la emisión, la realimentación tiene que venir de dentro, a partir de una imagen mental clara de la nota que se pretende cantar. Si la nota cantada no es correcta hago al alumno parar, si lo necesita le doy la nota en el piano u otra nota que le sirva de apoyo para lo que estemos trabajando en ese momento (tónica, origen de un intervalo atonal, acorde incompleto...), y le vuelvo a pedir que imagine la nota antes de cantarla. Funciona mucho mejor que ponerle a hacer efecto doppler hasta que se enganche con la nota que está sonando.

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
#12 por jaime71 el 22/05/2015
lgarrido escribió:
¿Qué estás usando para detectar la altura, entonces?


Me da rabia que mis conocimientos no lleguen a eso, me voy a informar de esos detalles que no los tengo tan claros. Me hicieron la aplicación a partir de otra anterior que me servía para un prototipo físico y cerrado que ya tengo , luego la fueron ampliando haste ser lo que es. Sé que algo detecta el sonido y lo convierte en un número que se traduce en un evento midi. El interface es la representación de cómo se tocaría esa nota en ese aparato con la función de armadura correspondiente.

Me gusta lo de aubio. Lo voy a mirar.
Estamos mirando esto http://0110.be/. para el sinte. Una persona que tiene cosas muy ineresantes, échale un ojo, te gustará.

Voy a enterarme bien de lo de los permisos. Muchas gracias.


lgarrido escribió:
En ese caso la corrección sería visual, siempre que el alumno sepa de partida el nombre de la nota que querría haber cantado.


De acuerdo, sería visual y acústica (opcional).

lgarrido escribió:
Si cantas la nota buena, pero desafinada, el programa responderá con la nota bien afinada y el cantante corregirá su afinación para imitar la del programa.


Esto creo que no es así, el programa no responde con nada ajustado que tu no hayas cantado antes, si no afinas no mantienes el sonido y no puedes corregir. El programa no corrige las desafinaciones ni te da un sonido para que puedas corregir que no hayas cantado antes.

Me encantaría que lo probases, conozco métodos de auditivo (hace algunos años ya que tengo el título superior de Jazz, he tenido que pasar por ello) y maneras de practicarlo, con este software obtienes muchos beneficios inmediatos que no sé de qué otra manera los puedes obtener.

Muchas gracias por todo.

Un saludo
Subir
#13 por vagar el 22/05/2015
jaime71 escribió:

Me da rabia que mis conocimientos no lleguen a eso, me voy a informar de esos detalles que no los tengo tan claros.


En este hilo hay recopilados unos cuantos recursos, por si te quieres formar algo:

http://www.hispasonic.com/foros/primeros-pasos-programando-plugins-lv2/464255

Pero hacer un detector de altura interactivo no es programación básica, hacen falta conocimientos de DSP, programación multitarea, interfaz de usuario controlada por eventos asíncronos y un buen conocimiento del lenguaje y la plataforma. Tirando a final de titulación superior en informática, o equivalente autodidacta.

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
#14 por vagar el 22/05/2015
jaime71 escribió:
Estamos mirando esto http://0110.be/. para el sinte. Una persona que tiene cosas muy ineresantes, échale un ojo, te gustará.


Tiene muy buena pinta, sí. Ten en cuenta, no obstante, que ese software está sujeto a licencia GPL, eso significa que no puedes usarlo si no liberas tu código fuente bajo la misma licencia o una compatible.

http://www.gnu.org/licenses/gpl-faq.html#LinkingWithGPL

La librería TarsosDSP, que no sé si es la que estáis usando, está bajo licencia GPL y hay que tener en cuenta también que uno de los algoritmos de detección que implementa es YIN, que está bajo patente y no se puede usar comercialmente sin pagar licencia.

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
#15 por jaime71 el 22/05/2015
Muchas gracias, me sirve de mucho todo esto. Tengo a un teleco amigo que me lo está mirando, vamos a ver si hay suerte.

El software es gratis y voy a mirar lo de liberar el código para todo esto, te iré contando.

:ook:
Subir
Respuesta rápida

Regístrate o para poder postear en este hilo