En este video veremos el uso de gramáticas para la creación musical. Esto implica establecer una serie de reglas básicas de asociación entre elementos, las cuales se van iterando para generar niveles de complejidad. Como primer paso, es necesario introducir el concepto de "un diccionario". Este funciona como una especie de arreglo, pero en lugar de índices cero, uno, dos, tres y cuatro, los cuales son secuenciales, se utilizan identificadores o "key" para realizar las asociaciones. Podemos comenzar un diccionario con el objeto "Dictionary.New". Luego, agregamos las reglas una a una, indicando el valor índice primero, seguido de un símbolo "flecha", que escribimos con un guión y el símbolo de "mayor que" seguido de la regla de asociación que deseamos. En este caso vemos que la llave "Casa" está asignada al número dos, la llave "Estudio" al número cinco y el número "128" al arreglo 7,3. Podemos enlazar diferentes tipos de llaves y objetos de esta manera. Podemos realizar asociaciones entre cualquier tipo de variables, ya sean textos, números o arreglos. Si imprimimos el diccionario, nos regresará una lista con las reglas que hemos definido. Podemos acceder a las reglas llamándolas una a una de acuerdo a su llave, en este caso, "Casa", "Estudio" o "128". También podemos definir un diccionario completo en una sola línea por medio de paréntesis. Por ejemplo, el diccionario pasado también se puede definir de esta forma: con un paréntesis e indicando los pares "llave" y "valor" separados por un punto y coma, y cada regla separada por coma. En nuestro caso, usaremos reglas que consisten, principalmente, de números MIDI y arreglos. Por ejemplo, en el siguiente diccionario, "Do" está asociado a "Re", "Mi" está asociado al acorde "Mi/Sol" y "La" está asociado a "Do". Un sistema Lindenmayer es un conjunto de reglas que se siguen para la sustitución iterativa de elementos. Este tipo de sustitución nos genera diferentes capas, las cuales van teniendo una estructura de tipo fractal. Por ejemplo, supongamos que tenemos este diccionario donde "cero" está asignado al arreglo "cero uno" y "uno" está asignado al "cero". Comencemos en un primer nivel, cero. Si aplicamos las reglas de sustitución de acuerdo al diccionario, en el nivel cero tendríamos sólo "cero". Ahora, pasemos al siguiente nivel. De acuerdo a la regla, el "cero" se cambiaría por "cero" y "uno". Este sería nuestro nivel uno. Ahora, para pasar al nivel dos, tenemos dos elementos: el "cero", de acuerdo a la regla, se cambiaría a "cero uno" y el "uno", de acuerdo la regla, se cambiaría a "cero". Por lo cual, en el nivel dos tendríamos los números "cero", "uno", "cero". Para pasar al nivel tres, realizamos las mismas sustituciones: el "cero" se cambia por "cero" y "uno", y los valores que tengan "uno" se cambian por el "cero". Podemos seguir así consecutivamente hasta tener una pirámide que resulta de las sustituciones de esta regla, las cuales nacen desde un elemento único y se va generando un material más complejo. En SuperCollider existe un patrón llamado "Prewrite" que nos permite utilizar un diccionario para encontrar estos niveles. Como entrada, toma el índice inicial y el diccionario con las reglas, así como el nivel que deseamos generar. Veamos a continuación el resultado de llamar al diccionario anterior. Con esta línea pedimos que se construya la pirámide comenzando en el valor cero y llegando al nivel tres. Pedimos los diez siguientes valores. Ahora, veamos lo mismo con el nivel cuatro. A diferencia de la pirámide, si pedimos más valores de los que la capa tiene, simplemente se repetirá de inicio a fin. Probemos esto escuchando los valores, ya que es un poco más fácil distinguir los cambios. Definimos el diccionario y ahora hago un "Pbind" que corra sobre estas notas en la capa cuatro. Intenten cambiar los valores de la capa y verán cómo aparecen patrones cada vez más complejos. Ahora, intentemos un diccionario más completo. En este caso, el "cero" está asociado al arreglo "cero nueve cinco", el "nueve" al "seis", el "cuatro" a un arreglo con la nota "cero" y un silencio, el "cinco" al "cero" y el "seis" al arreglo "cuatro nueve". Los invito a que cambien el valor de la capa y escuchen qué pasa. Probemos ahora un sistema "L", pero con ritmos. En este caso, la duración de un medio se sustituye por dos valores de un cuarto y un valor de uno, y así consecutivamente. Por último, hagamos algo más complejo. Creemos una rutina que vaya corriendo por los diferentes "Pbines" de diferentes pirámides, cada uno con una capa distinta de acuerdo a la iteración "i" y escuchemos cómo se van generando nuevos patrones, nuevos ritmos y nuevas figuras melódicas. Los sistemas "L" son muy interesantes, ya que desde unas reglas muy sencillas podemos generar material complejo. Esto sucede debido a la iteración y sustitución que se da en cada capa. Es necesario revisar con diferentes niveles y diferentes reglas para ver qué tipo de sonidos y ritmos podemos obtener.