Una potente biblioteca JavaScript para operaciones matemáticas con claves rítmicas, basada en teoría de grupos y notación musical del grupo La Lengua.
- Descripción
- Instalación
- Teoría de Claves Rítmicas
- Manual de Claves Rítmicas
- DEMO
- Operaciones Básicas
- Uso de la Biblioteca
- Ejemplos
- Documentación
- Licencia
- Enlaces
CR (claves-ritmicas.class.js) es una biblioteca JavaScript que implementa operaciones matemáticas para manipular claves rítmicas. Permite realizar operaciones como concatenación (+), superposición (/) y multiplicación (*) de patrones rítmicos, así como análisis de simetría y generación de variaciones culturales.
La biblioteca está basada en la teoría de claves rítmicas, donde cada patrón se representa mediante una notación numérica que indica la duración entre golpes sucesivos.
<script src="claves-ritmicas.class.js"></script>import { cr } from './claves-ritmicas.class.js';Una clave rítmica es una pequeña frase o motivo rítmico mínimo que solo toma en cuenta la secuencia de golpes y no las alturas o los timbres. Se representa mediante una secuencia de números donde cada número indica la duración entre golpes sucesivos.
Las claves rítmicas se escriben en el formato longitud.secuencia, donde:
longitudes la duración total del patrónsecuenciason los valores que representan las duraciones entre golpes
Por ejemplo, la famosa clave de son se escribe como 16.33424, donde 16 es la duración total (3+3+4+2+4) y 33424 representa las duraciones entre cada golpe de la clave.
Las claves también pueden representarse en formato binario, donde:
1representa un golpe0representa un silencio
Por ejemplo, la clave 5.221 en formato binario sería 10101 (golpe, silencio, golpe, silencio, golpe).
Lee el Manual de Claves Rítmicas para obtener una explicación detallada de cómo se representan las claves rítmicas en la biblioteca.
- Visita la Calculadora de Claves Rítmicas Online para experimentar con diferentes operaciones y ver cómo se representan gráficamente.
La concatenación consiste en poner una clave después de otra. Se representa con el símbolo +.
7.2 + 5.2 = 7.2221 + 5.221 = 12.2221221
La superposición consiste en tocar dos claves al mismo tiempo, combinando sus patrones en la misma extensión total de tiempo. Se representa con el símbolo /.
2.11 / 3.111 = 6.2112
Para realizar esta operación:
- Se calcula el MCM de las longitudes (2*3=6)
- Se expanden ambas claves a la misma longitud (2.11→6.33 y 3.111→6.222)
- Se combinan los patrones (donde cualquier golpe en cualquiera de las claves produce un golpe en el resultado)
La multiplicación repite una clave un número determinado de veces. Se representa con el símbolo *.
3.21 * 2 = 6.2121
Los paréntesis se utilizan para agrupar operaciones y cambiar el orden de evaluación.
(5.2 + 7.3) / (7.2 + 5.3)
= 12.221331 / 12.222132
= 12.221111211
// Concatenación de claves (A + B)
const claveA = "7.2"; // 7.2221 expandido
const claveB = "5.2"; // 5.221 expandido
const resultado = cr.operar(claveA, claveB, '+');
console.log(resultado); // "12.2221221"
// Superposición de claves (A / B)
const superposicion = cr.operar(claveA, claveB, '/');
console.log(superposicion); // "35.A46825"
// Multiplicación de claves (A * B)
const multiplicacion = cr.operar(claveA, "3", '*');
console.log(multiplicacion); // "21.222122212221"// Convertir clave a representación binaria
const binario = cr.clave2binary("5.221");
console.log(binario); // "5.10101"
// Convertir representación binaria a clave
const clave = cr.binary2clave("10101");
console.log(clave); // [2, 2, 1]
// Completar una clave abreviada
const completa = cr.completarClave("7.2");
console.log(completa); // "7.2221"const expresion = "(5.2 + 7.3) / (7.2 + 5.3)";
const resultado = cr.fullParse(expresion);
console.log(resultado.result); // "12.221111211"
console.log(resultado.binaryResult); // Representación binaria// Generar una variación de clave afrocubana
const basePattern = "8.22";
const variacion = cr.generateCulturalVariation(basePattern, 'afroCuban');
console.log(variacion);// Crear un patrón modular aritmético
const patron = cr.createModularPattern(2, 5, 'arithmetic', { step: 1 });
console.log(patron);-
operar(a, b, op='+')
Realiza operaciones entre claves rítmicas ('+', '/', '*') -
concatenar(a, b, asarray=false)
Concatena dos claves rítmicas (a + b) -
superponer(a, b, asarray=false)
Superpone dos claves rítmicas (a / b) -
cruzar(a, x, asarray=false)
Multiplica una clave por un factor (a * x)
-
completarClave(c, asarray=false, reducir=false)
Completa una clave abreviada a su forma expandida -
abreviarClave(clave)
Abrevia una clave a su forma más compacta -
clave2binary(c)
Convierte una clave a representación binaria -
binary2clave(b)
Convierte una representación binaria a clave -
base62encode(integer)/base62decode(base62String)
Codifica/decodifica números en base62 para representación compacta
-
invertirClave(c)
Invierte el orden de una clave -
rotarClave(c, n)
Rota una clave n posiciones -
isPalindrome(c)
Verifica si una clave es palíndroma -
hasRotationalSymmetry(c, rotations)
Detecta simetría rotacional
-
createModularPattern(base, modulus, type, params)
Crea patrones modulares con diferentes secuencias -
createFractalRhythm(base, iterations)
Genera ritmos fractales mediante iteraciones -
generateCulturalVariation(basePattern, culture)
Genera variaciones culturalmente informadas
Este proyecto está licenciado bajo la Licencia Pública General de GNU v3.0 (GPL-3.0) - vea el archivo LICENSE.txt para más detalles.
Esta licencia garantiza que el software permanezca libre, permitiendo a los usuarios ejecutar, estudiar, compartir y modificar el software, pero requiere que cualquier distribución del código o trabajos derivados se realice bajo la misma licencia.
Desarrollado con ❤️ para músicos, programadores y matemáticos interesados en la teoría de grupos y la música original de los pueblos. Dile NO a la piratería de Spotify.
