Ayuda con una aplicación web de armonía

#31 por Javi Arce el 04/12/2015
supertorpe escribió:
Otra idea más para la lista: hacerla adaptable, por ejemplo con bootstrap.
Si aprendes AngularJS, el siguiente paso lógico sería Ionic, y lanzar la app. móvil correspondiente. Casi ná.


Lo de Bootstrap sí lo voy a hacer. Lo uso prácticamente a diario, por lo que me supondrá poco esfuerzo aplicarlo. Ahora que lo dices, me pregunto por qué no lo apliqué a la plantilla inicial cuando empecé este proyecto, supongo que sería porque empezó como algo de uso exclusivamente personal y poco a poco fue creciendo.

Estoy siguiendo los tutoriales de Google sobre AngularJS, de momento me está gustando mucho, me parece más comprensible y fácil de usar que ReactJS. Ya se me ocurren bastantes aplicaciones útiles, de momento cambiar todas las funciones de presentación de mi código "generaTablaAcordes", "generaDiapason", "genera...". Lo de Ionic lo dejo para la vuelta de navidades, que con esto ya tengo hardcore para rato jejeje...

Ésta es mi música:
https://corona-borealis.bandcamp.com/releases
Y ésta es mi aplicación web de teoría musical (beta):
http://codamusica.com/

Subir
#32 por Javi Arce el 04/12/2015
#28

Esta es una duda que he tenido desde el principio. Puedo hacer que al usuario se le impida escoger la escala de, por ejemplo, A# Mayor y obligarle a coger su enarmónica correcta según el círculo de quintas, Bb Mayor. Pero mi pregunta es, ¿hay algún caso en que a algún usuario pueda interesarle generar la escala y acordes de A# Mayor? Si no veis que está justificado, simplemente puedo limitar las opciones del usuario para que éste siempre escoja la tonalidad correcta, enarmónicamente hablando.

Ésta es mi música:
https://corona-borealis.bandcamp.com/releases
Y ésta es mi aplicación web de teoría musical (beta):
http://codamusica.com/

Subir
#33 por Javi Arce el 04/12/2015
Epiphone escribió:
Es bastante más sencillo de lo que pensé en un principio, consiste en generar una escala de notas naturales, a partir de la nota base.

Por una parte tendríamos la escala Real y por otra una escala Guia que serviría para decidir en su caso que nota enarmonica es la que pertenece.

Ejemplo :

Se genera la escala Real, por ejemplo Mi Mayor (Mi , Fa#/Solb, Sol#/LaB, La, Si, Do#/Reb, Re#/Mib)

Se genera la escala Guia, ( Mi, Fa, Sol, La, Si, Do, Re)

Y se escoge la nota enarmonica en función de la nota de la Escala Guia


Me gusta tu solución. Tenía pensado hacer una función que comprobase si hay algún numero de grado repetido (y por tanto notas repetidas), y en caso de que así fuese cambiase la última repetición por su enarmónica, pero tu solución es más elegante y eficiente. Se genera la escala guía sin alteraciones, y a partir de ahí se construye la escala real. Me gusta, te la voy a copiar antes de que la patentes y tenga que pagarte royalties :mrgreen: Muchas gracias por la ayuda.

Ésta es mi música:
https://corona-borealis.bandcamp.com/releases
Y ésta es mi aplicación web de teoría musical (beta):
http://codamusica.com/

Subir
#34 por Javi Arce el 04/12/2015
Epiphone escribió:
Por otra parte en el circulo de quintas las tonalidades mayores de las notas alteradas deberían ser todas en Bemoles, el Fa# debería cambiarse por Solb, y la escala menor relativa es Mib, el resto de alteraciones esta bien.


Ése debería ser un cambio muy sencillo. Voy a probarlo ya.

EDIT: comprobado, funciona todo bien. En la próxima versión estará corregido.

Ésta es mi música:
https://corona-borealis.bandcamp.com/releases
Y ésta es mi aplicación web de teoría musical (beta):
http://codamusica.com/

Subir
#35 por JaviMittens el 05/12/2015
Yo hablaré de lo único en lo que puedo opinar, el lado más puramente musical. Y aplicado a las cosas que he visto así, de primeras. Se podrían decir muchas cosas positivas. Voy a ser capullín y en vez de centrarme en los elogios, voy a por el lado contrario, que supongo que será lo que más necesite Javi.

- Lo que de primeras más me incomoda es que, al elegir todo sostenidos, cuando vemos, p. ej., G-, aparece G-A#-D-F. Uffff... Tal vez sea sencillo de programar que, al estar los acordes construidos por 3as, siempre sea "una nota (letra) sí, una no". Supongo que en programación se podrá hacer una "tabla" de forma sencilla con todas las equivalencias enarmónicas A#=Bb, etc. Y luego hacer que siempre tome "una letra sí, una letra no" desde la nota de partida, la fundamental. Así, si el acorde parte de G, el programa sabría que solo pueden aparecer las letras G, B, D, F y, a partir de ahí, escogería Bb en lugar de A#. No sé si me explico claramente. Así de primeras me parece relativamente sencillo con todo lo que sabrás de programación.

- Siendo tocanarices con la filosofía de "menos es más", quizás la aparición de subdominantes secundarios y II menor relativo sea bastante superflua y puede llegar a incordiar más que aportar. Al menos a mí no me dice nada realmente. Donde sí me diría es en contextos más complejos al analizar una pieza con múltiples modulaciones, pero aun así es algo más secundario y quizás para lo que esté pensada la aplicación no tenga mucho sentido. Ahora mismo supongo que no hay problema, pero quizás sí sería algo para tener en cuenta si en el futuro se añaden más funciones, para que al final no resulte una aplicación que confunda más que aclare. En lugar de esa función, quizá sería más útil alguna otra como poner los acordes más comunes para modular a otros tonos, por ejemplo. Es decir, si estamos en "armonía extendida de C mayor", podría poner las progresiones de acordes más habituales para ir de ese C mayor a E menor, a B mayor, etc. En el fondo, si ponemos un par para cada tono, no son tantas (creo que 47 (24*2-1) de una escala mayor a cada una del resto de escalas mayores y menores, y otras tantas para ir de una escala menor al resto de menores y al resto de mayores). Luego solo sería que apareciesen transportadas a cada tono, como supongo que estará hecho aquí con cada parámetro. Menuda paja mental mía expresada públicamente... Pero vamos, lo que quiero decir es que esa función me parecería más útil que la de las subdominantes secundarias ;-).

Como con cada tantas creaciones humanas... ¡anda que no tiene que haber horas ahí detrás!

¡Un abrazo grande, tocayo!

http://www.javiervazquez.net

Subir
#36 por Javi Arce el 10/12/2015
#35
Muchas gracias por tus opinones Javi :)

JaviMittens escribió:
- Lo que de primeras más me incomoda es que, al elegir todo sostenidos, cuando vemos, p. ej., G-, aparece G-A#-D-F. Uffff... Tal vez sea sencillo de programar que, al estar los acordes construidos por 3as, siempre sea "una nota (letra) sí, una no". Supongo que en programación se podrá hacer una "tabla" de forma sencilla con todas las equivalencias enarmónicas A#=Bb, etc. Y luego hacer que siempre tome "una letra sí, una letra no" desde la nota de partida, la fundamental. Así, si el acorde parte de G, el programa sabría que solo pueden aparecer las letras G, B, D, F y, a partir de ahí, escogería Bb en lugar de A#. No sé si me explico claramente. Así de primeras me parece relativamente sencillo con todo lo que sabrás de programación.


Sí, éste es el problema que veníamos comentando atrás, y quizá sea el más "cantoso" de todos... en principio podrían aplicarse criterios restrictivos para el usuario:

Si el usuario escoge Sol menor, la aplicación automáticamente cambia a bemoles, ya que la armadura de Sol menor es ♭♭. Lo que vendría a significar que, para cada escala y modo elegidos, la aplicación intenta cambiar a la armadura de la tonalidad adecuada, si ésta existe.

Esto, aparte de simplificarme la vida, haría la aplicación más clara y correcta. Sin embargo, me queda la duda que ya planteé anteriormente: vosotros que tenéis infinitamente más estudio y práctica que yo, ¿creéis que existe algún contexto donde al músico le interese generar la escala de Sol menor utilizando sostenidos en lugar de bemoles? Si ese contexto no existe, o es muy marginal, creo que valdrá la pena aplicar la política restrictiva que he comentado, la cual elimina de un plumazo la necesidad de desarrollar algoritmos como el que comentas, o el que describió epiphone unos cuantos mensajes atrás.

JaviMittens escribió:
- Siendo tocanarices con la filosofía de "menos es más", quizás la aparición de subdominantes secundarios y II menor relativo sea bastante superflua y puede llegar a incordiar más que aportar. Al menos a mí no me dice nada realmente. Donde sí me diría es en contextos más complejos al analizar una pieza con múltiples modulaciones, pero aun así es algo más secundario y quizás para lo que esté pensada la aplicación no tenga mucho sentido. Ahora mismo supongo que no hay problema, pero quizás sí sería algo para tener en cuenta si en el futuro se añaden más funciones, para que al final no resulte una aplicación que confunda más que aclare. En lugar de esa función, quizá sería más útil alguna otra como poner los acordes más comunes para modular a otros tonos, por ejemplo. Es decir, si estamos en "armonía extendida de C mayor", podría poner las progresiones de acordes más habituales para ir de ese C mayor a E menor, a B mayor, etc. En el fondo, si ponemos un par para cada tono, no son tantas (creo que 47 (24*2-1) de una escala mayor a cada una del resto de escalas mayores y menores, y otras tantas para ir de una escala menor al resto de menores y al resto de mayores). Luego solo sería que apareciesen transportadas a cada tono, como supongo que estará hecho aquí con cada parámetro. Menuda paja mental mía expresada públicamente... Pero vamos, lo que quiero decir es que esa función me parecería más útil que la de las subdominantes secundarias ;-).


Esto que comentas (progresiones "modulantes") está planificado para próximas versiones, es algo que yo también veo como muy útil. Tengo que releerme los capítulos de Piston y de Zamacois sobre este tema, para cubrir todas las posibilidades, pero creo que al menos la base será relativamente sencilla de programar. Sin embargo, si no recuerdo mal, había varios tipos de modulación aparte de dominantes y subdominantes secundarias o 2ºs relativos, cada una con sus particularidades, que si acordes pivotes, que si modulación cromática, que si enarmonías,... son cosas que tengo que repasar. Haré lo que dices, intentar integrar esa "armonía extendida" dentro de progresiones que realmente aporten utilidad en la práctica.

Ésta es mi música:
https://corona-borealis.bandcamp.com/releases
Y ésta es mi aplicación web de teoría musical (beta):
http://codamusica.com/

Subir
#37 por JaviMittens el 10/12/2015
Muy buenas, Javi.

Respecto a lo de sostenidos vs. bemoles, creo que sería mejor, en vez de por la armadura de la escala, hacer que el acorde siempre sea por terceras (nota sí, nota no). Creo que así te valdría para todo caso posible, incluidas dominantes secundarias, etc. Por ejemplo, en sol menor, aunque la armadura sea dos bemoles (además de aparecer el fa# en las funciones de dominante), en la dominante secundaria A-C#-E(/Eb)-G, el do sería sostenido, no Db. Cosas de esas pueden ser obviadas por el programa metiéndole la armadura, pero no lo serán si le obligas a que siempre construya los acordes por terceras. Creo que es mejor opción esto de obligarle a hacer terceras ("nota sí, nota no" para el programa). Hombre, si te es infinitamente más fácil de programar por armadura, adelante.

Respecto a lo de sostenidos vs. bemoles en sol menor que preguntas, en ningún caso de los que tratas en el programa, va a resultar mejor que aparezca A# en vez de Bb, o D# en vez de Eb. En cambio, si en algún sitio tuviese que aparecer B-D#-F#-A, por ejemplo, ahí sí que sería mejor D#. Aunque creo que ese acorde no aparecería en ninguna opción de las que muestra. De todas formas, para evitar problemas, por eso digo lo de que siempre vaya, desde la fundamental, letra sí, letra no. De esa forma el programa podría "saber" que con la fundamental B, tendría que poner D# y no Eb, por ser una letra sí, una letra no.

Aunque repito que, quizás para las opciones que se dan ahora en el programa, nunca se de el caso.

Un abrazo ;-)

http://www.javiervazquez.net

Subir
#38 por Javi Arce el 14/12/2015
Entiendo lo que quieres decir, pero es que entonces pueden aparecer algunas paradojas, por ejemplo, que el usuario escoja la escala de Sol menor con sostenidos, y aparezca su escala así:

G - A - A# - C - D - D# - F

Pero luego, al construírse los acordes, aparezcan así:

G-Bb-D-F
A-C-Eb-G

Etc.

El usuario podría pensar, "si he escogido sostenidos, ¿por qué la escala sí aparece con sostenidos, pero los acordes que se forman con dicha escala aparecen con bemoles?". Además, al pasar por encima de los acordes, las notas que se iluminarían en la Vista de instrumento no serían las correctas (aunque enarmónicamente hablando sean las mismas).

No sé, no está del todo mal pero es un poco raro. Por eso comentaba lo de ser totalmente estrictos con las armaduras e impedir que el usuario pueda seleccionar Sol menor con sostenidos (automáticamente, cuando el usuario selecciona Sol menor, la aplicación pasa a trabajar con bemoles).

Ésta es mi música:
https://corona-borealis.bandcamp.com/releases
Y ésta es mi aplicación web de teoría musical (beta):
http://codamusica.com/

Subir
#39 por JaviMittens el 15/12/2015
No, claro, claro. Que el usuario no pueda seleccionar sostenidos ni bemoles. No sé de ninguna situación en la que tendría sentido realmente. ;-)

http://www.javiervazquez.net

Subir
#40 por Javi Arce el 15/12/2015
Ahh, vale, te había entendido mal Javi. Entonces voy a quitar sin miedo la elección del usuario entre sostenidos y bemoles, y que el sistema decida qué es lo correcto. Eso simplifica mucho la programación y de paso dejará bien formadas tanto las escalas diatónicas "tonificables" como el resto (modales, artificiales, sintéticas, exóticas), aunque requiere de un cambio muy gordo en el modelo que venía utilizando hasta ahora (basado en saltos interválicos en lugar de en alteraciones).

Por ejemplo, yo tengo definida la escala húngara menor II (gipsy) así :

0-2-1-3-1-1-3

Es decir, una notación propia e interna de saltos (intervalos).

Cuando en realidad, debería definirla así (y dejarme de tonterías):

1 – 2 – b3 – #4 – 5 – b6 – 7

Con la notación actual que empleo (mala) no puedo reflejar correctamente los matices de la escala, y en lugar de b3 - #4 - b6, puedo representar o bien b3 - b5 - b6, o bien #2 - #4 - #5 , siendo ambos casos erróneos. Para corregir este defecto, podría desarrollar algoritmos como el que tú me has sugerido, o el que comenta epiphone más atrás, pero creo que hay que abordar el problema desde la raíz, olvidarse de patrones de saltos, e ir a definir cada escala como debe definirse, en este caso: 1 – 2 – b3 – #4 – 5 – b6 – 7

Si de salida ya parto de esta definición de escala, luego no tendré que poner parches, simplemente programar con respecto a esos datos correctos.

Ésta es mi música:
https://corona-borealis.bandcamp.com/releases
Y ésta es mi aplicación web de teoría musical (beta):
http://codamusica.com/

Subir
1
#41 por vagar el 15/12/2015
La aplicación que estás haciendo es lo que de toda la vida han sido los tesauros de acordes, escalas, patrones melódicos, fórmulas armónicas, etc., tochos de fórmulas en todas las tonalidades.

La utilidad práctica de estas herramientas no es mucha, o yo al menos no las uso nunca, conozco las fórmulas y sé trasponer, y es lo que yo recomendaría aprender a hacer para no tener que andar con tesauros a cuestas.

Las aplicaciones que se me ocurren:

- Como corrector mientras se está aprendiendo a trasponer.

- Como una herramienta más de inspiración algorítmica cuando uno anda buscando material nuevo y no se le ocurre nada. Hay un caso muy famoso, por lo visto Coltrane se inspiró para escribir Giant Steps en un libro (Thesaurus of Scales and Melodic Patterns de Nicolas Slonimsky) que presentaba patrones traspuestos por terceras mayores.

#40

Exacto, el modelo de datos interno tiene que reflejar con la mayor fidelidad los objetos que se están manejando para facilitar los algoritmos.

Una escala está compuesta de grados, que a su vez están compuestos de dos coordenadas: posición y calidad (tercera menor, séptima disminuida, etc.)

La posición tiene que ser un número del 1 al 7 (o del 0 al 6 si te resulta más cómodo internamente, pero yo te recomendaría del 1 al 7 para facilitar la depuración de los algoritmos), ya que los nombres de las notas provienen de las escalas heptatónicas y son conjuntos de 7 elementos (Do-Si, A-G), a no ser que quieras considerar el sistema alemán con la H para el Si natural. Con la tónica y la posición deduces el nombre de las notas.

Si la posición es el nombre del grado, y te da el nombre de la nota, la calidad sería el "apellido" del grado, y te da la alteración de la nota. Ojo, que no es lo mismo calidad que alteración. Para calcular la alteración necesaria (bb, b, nat, #, ##) necesitas tener una función/tabla que te indique la calidad del intervalo entre dos nombres naturales y factorizar la alteración de la tónica.

Calidades:

Cuartas, quintas, octavas: doble disminuida, disminuida, justa, aumentada, doble aumentada.
Segundas, terceras, sextas, séptimas: doble disminuida, disminuida, menor, mayor, aumentada, doble aumentada.

Calidades de intervalos naturales:

Segundas: A-B mayor, B-C menor, C-D mayor... G-A mayor
Terceras: A-C menor, B-D menor, C-E mayor... F-A mayor
etc.

Supongamos que tengo una escala que necesita una séptima disminuida y cuya tónica es F#:

Calculo el intervalo de séptima a partir de F, que sería E, ya tengo el nombre.

Calculo el intervalo natural entre F y E, sería una séptima mayor.

Para convertir una séptima mayor en una disminuida tengo que rebajar dos semitonos. Pero como F es sostenido se reduce la distancia entre nombres naturales y sólo haría falta rebajar uno. Así que la nota que busco es Eb.

A la hora de modelar escalas no sé si estás previendo que puedes eventualmente querer hacerlas de 5 notas o de 8 notas, así que usa una estructura de longitud variable.

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

Subir
#42 por Javi Arce el 17/12/2015
#41

Sí, tienes razón, si tienes práctica con la transposición, la herramienta no servirá de mucho. Por eso especifico que es una utilidad destinada a estudiantes en primer lugar, para que sea utilizada como referencia y no como sustituto del esfuerzo mental que supone transponer. Partiendo de esta base, la aplicación tiene alguna ventaja con respecto a un tesauro: es digital, no ocupa espacio (a veces son bastante mamotretos, por ejemplo el de Slonimsky), no consume papel, puede consultarse desde cualquier lugar del mundo y ofrece pequeñas funcionalidades extra, como hacer click y poder escuchar los acordes generados. Quizá cuando añada progresiones y cadencias tonales, y posibles formas de modulación, la aplicación adquiera más valor.

Gracias por refrescar lo que sería el modelo básico de datos. A veces me pierdo en otros niveles de abstracción y se me olvida lo fundamental, de ahí vienen errores como partir de un extraño patrón de semitonos para construir las escalas. Siempre es bueno tomar referencias de lo esencial y dejarse de marcianadas que a largo plazo no funcionan, aunque ahorren tiempo a corto.

La aplicación sí tiene en cuenta la longitud variable de las escalas. Hay ejemplos de pentatónicas, hexatónicas como la de blues u octatónicas.

Ésta es mi música:
https://corona-borealis.bandcamp.com/releases
Y ésta es mi aplicación web de teoría musical (beta):
http://codamusica.com/

Subir
#43 por elnotas el 17/12/2015
buena aplicacion javi. menudo curro y estos "tesauros" ayudan mucho a desarrollar un algortimo musical de las escalas y acordes. Lo del formato, parece engmatico, haztelo facil sino te metes en berenjenales.
Las definiciones de los acordes esta implementado? pej. C 9/6.
saludos arce.
Subir
#44 por kakasle el 17/12/2015
No se si conoces esto http://puredata.info/ quizás te sirva aquí o en otros escenarios.

Los acordes suenan bastante bien en la página, muy buena iniciativa.

Sólo los peces muertos siguen la corriente...........

Hay dos tipos de música, la que me toca el corazón y la que me toca los coj****
Salvador dixit.

Subir
#45 por Javi Arce el 18/12/2015
#43
Gracias elnotas. ¿Con lo de C 9/6 te refieres a un C6 / 9? ¿Un acorde de Do con la sexta mayor y la novena mayor añadidas (C-E-G-A-D)? No, ahora mismo a partir de escalas se forman cuatriadas básicas. Con respecto a los acordes, en la lista de actualizaciones tengo dos cosas importantes pendientes: mostrar las posibles inversiones de cada uno, y mostrar algunas de sus tensiones, al menos las catalogadas como "disponibles" y "propias". Aún no sé muy bien como presentar esa información, pero a nivel de programación tanto inversiones como tensiones son datos muy fáciles de inferir siempre que se tenga clara la teoría que hay detrás, así que tendré que pegarle un buen repaso.

Ésta es mi música:
https://corona-borealis.bandcamp.com/releases
Y ésta es mi aplicación web de teoría musical (beta):
http://codamusica.com/

Subir
Respuesta rápida

Regístrate o para poder postear en este hilo