En esta sección veremos operaciones que podemos utilizar para manipular el contenido musical. Muchas veces, en la creación tenemos un motivo melódico, una serie de notas que queremos transformar para dar nuevas ideas. Para esto, utilizamos cosas como transposición, inversión, retrógrado y otros tipos de operaciones. Aquí veremos cómo vamos a aplicar esto desde el punto de vista numérico. Si tenemos una melodía en un arreglo, podemos correrla en un "Pbind". Una de las operaciones más sencillas que podemos hacer, es transponer las notas. Esto lo logramos al sumar o restar un número al arreglo, por ejemplo: +1, +2, +3, +4. Podemos concatenar estos arreglos para lograr un efecto de transposición secuencial. Intentemos el siguiente ciclo, donde cada paso transportamos la secuencia "arr" y la concatenamos a la lista de resultados con la operación doble suma. Escuchemos el resultado en un "Pbind". El retrógrado es otra transformación musical que puede ser interesante. Logramos esto al llamar la función "reverse". Podemos lograr efectos interesantes, donde el retrógrado aplique sólo a las duraciones o a las notas. Otra operación muy usada es el inverso de intervalos. De acuerdo a la teoría de la música, la inversión de una nota con respecto a un eje se obtiene con la siguiente fórmula: tomar el negativo de la nota y sumar el número que sería el espejo. Podemos crear una función que tome como entrada una lista y nos regrese la inversión de cada uno de ellos, con respecto a un eje. En este caso "ls", es la lista de entrada y "n", sería la nota sobre la cual queremos hacer el espejo. Utilizamos el "collect" para que nos regrese una nueva lista, donde cada elemento es el inverso de la original. Intentemos graficar estos arreglos de notas. Podemos realizar esto con el comando "plot". Al tomar el inverso vemos que la gráfica es una especie de espejo. Intentemos crear una melodía donde suene en primera parte la original y la concatenemos con la inversión. De la misma forma como podemos concatenar arreglos con la doble suma, podemos concatenar "patterns" o patrones, con la doble suma también. Con relación a la música serial, podemos generar un conjunto de notas cuyos valores van a empezar a cambiar uno a uno, reacomodándose, y que no se repita ningún valor en el orden de la secuencia. A esto se le llama permutaciones, lo cual implica un reacomodo de los elementos. SuperCollider contiene una función para permutar los elementos de un arreglo. Un arreglo tiene "n" factorial, diferentes permutaciones. Para indicar cuál es la que queremos, se indica con un número en el argumento de la permutación, cuál es la permutación que deseamos. Por ejemplo, el arreglo 0,1,2. Podemos pedir la primera permutación, la segunda permutación, la tercera, etcétera. SuperCollider utiliza un orden de menor a mayor complejidad en la permutación. Veamos cómo podemos permutar un arreglo más grande, con un ciclo "do". En este caso tenemos los números del 0 al 4 y los permutamos 24 veces, imprimiendo cada uno de ellos. Escuchemos un ejemplo de cómo sonarían estas permutaciones. El siguiente ciclo toma un grupo de notas y las va agregando a una lista con una permutación nueva. Le agregamos un silencio al final de cada permutación para poder distinguirlas. En este caso, "lista" es la original y "listaLarga" va a ser una lista donde vamos a ir juntando cada permutación del arreglo, separadas por un silencio. En este caso, corremos 24 veces y vamos concatenando una permutación nueva, cada vez que da una vuelta el ciclo. Ahora intentemos escucharlas. Por otra parte, en un "Pbind" podemos indicar en qué escala deseamos trabajar y los números de los arreglos representarían ahora grados de la escala, en lugar de semitonos. Por ejemplo, si en este "Pbind" le damos la llave "Scale" y damos el objeto "Scale.major", ahora cada elemento del arreglo "Pseq" será tomado como un grado de la escala. Cabe notar que debemos cambiar la notación; en lugar de indicar la llave "note", ahora indicamos "degree". SuperCollider tiene varias escalas predefinidas: mayor, menor y una lista grande, la cual podemos ver en esta lista de código. Podemos aplicar esta técnica de permutación a cualquier parámetro, como serían las duraciones, amplitudes, etcétera, lo que nos permite obtener resultados al estilo de la música serial. Intentemos crear listas de parámetros permutados. En este caso, grados, duraciones, amplitud y una nueva llave llamada "legato", lo cual nos indica qué tan separadas o pegadas están las notas entre sí. Si le damos un valor de 1 las notas duran su duración normal; si le damos un valor menor a 1, éstas durarían esa fracción de su duración; si le damos un valor mayor, la duración se escalaría a más grande y se traslaparían las notas. En este ciclo, estamos generando concatenación de parámetros para cada uno de ellos. Escuchemos el resultado de esto, utilizando la escala menor. En este video vimos cómo aplicar algunas de las ideas de la música serial a la programación. En específico, vimos el retrógrado, la inversión, la transposición de acordes, por medio de arreglos. En el siguiente video veremos otras nuevas ideas para generar contenido musical. A esto se le llamará "autómatas", que son una serie de reglas con las cuales construimos diferentes iteraciones que suenan diferente.