Solución al primer parcial 2013-III FASAB
El primer punto a desarrollar era el siguiente:
- Se requiere de una abstracción que permita crear un sonido con síntesis aditiva. El sonido debe contar con mínimo 5 componentes. Los datos que se ingresan deben determinar la intensidad máxima del sonido, cada uno de los factores por los que se multiplicará la frecuencia fundamental y los porcentajes de intensidad de los diferentes componentes del sonido. La activación y desactivación del sonido se realizará externamente, por lo cual se usarán dos entradas sólo para este propósito.
Lo primero a tener en cuenta es que la cantidad de osciladores que se usarán dentro de la abstracción es de cinco, como lo indica el enunciado "El sonido debe contar con mínimo 5 componentes".
Posteriormente, se puede definir la información que entrará para generar el resultado sonoro que se requiere. "Los datos que se ingresan deben determinar la intensidad máxima del sonido, cada uno de los factores por los que se multiplicará la frecuencia fundamental y los porcentajes de intensidad de los diferentes componentes del sonido", lo cual quiere decir que hay 10 u 11 datos que entrarán, posiblemente como una lista, dependiendo de lo que se decida.
En este caso voy a considerar 11 datos que enviaré a la abstracción en una lista. Esos datos son respectivamente: intensidad, cinco factores de multiplicación, cinco porcentajes de intensidad.
Finalmente, usaremos dos inlet adicionales para controlar la activación y desactivación del sonido. Es posible hacerlo de otras formas, pero no es el caso que se contemplará en esta solución.
Comencemos entonces con la implementación del primer punto. Como cada uno de los componentes que va a tener el sonido recibe los mismos parámetros, lo más efectivo es crear uno de ellos y copiarlo las veces que sea necesario. Para ello usaremos algunas multiplicaciones, una división y un oscilador.
Antecediendo al oscilador se ha de colocar una multiplicación para que la frecuencia que entre sea multiplicada por el factor que le corresponda. El resultado de tal operación entra a la izquierda del oscilador, determinando la frecuencia que este tendrá.
Las demás operaciones tienen que ver con la intensidad. Como ingresamos una intensidad máxima y un porcentaje de intensidad que corresponderá a cada componente, lo que realizaremos será multiplicar esa intensidad máxima por el porcentaje para obtener la intensidad del componente. El programador puede elegir si el porcentaje lo envía como decimal (porcentaje definido dividido por 100) y de esa manera evita una de las operaciones. Sin embargo asumamos que no es así, que se ha decidido enviar el número y que la división por cien debe ser efectuada antes de multiplicar con la intensidad máxima.
Una vez realizada la operación se multiplica el resultado con la salida del oscilador, determinando de esa manera la intensidad que va a tener dicho componente.
Posteriormente, como hemos definido que en una sola lista ha de entrar la información necesaria para controlar el sonido, tenemos que usar un objeto unpack que nos permita tener todos los datos disponibles de manera individual.
En la imagen se puede observar una conexión individual de un componente, con el propósito de no enredar la visualización. En el siguiente gráfico se pueden contemplar las conexiones completas.
Para finalizar la abstracción sólo hace falta asignar la envolvente. En este caso tanto el valor del tiempo y de apagado son definidos por el programador. Los dos procesos son activados externamente, por lo cual se usan dos inlets para cumplir con esa tarea, tal como lo describe el enunciado.
Una vez terminada la abstracción es necesario guardarla en una carpeta que tengamos incluida dentro de las preferencias o en la misma carpeta en la que guardemos el patch principal.
Invocar la abstracción en el patch principal será una labor sencilla, sólo se necesita poner un objeto y escribir el nombre que se le ha dado a la abstracción.
El segundo punto fue el siguiente:
Usando las abstracciones creadas en el punto
anterior, implemente un patch en el cual pueda usar el teclado del computador
como instrumento. Las teclas A, S, D, F y G serán usadas como disparadores de
activación y envío de frecuencia. Las letras Q, W, E, R y T serán usadas como
disparadores de desactivación.
Existen varias opciones, es posible tener una abstracción para cada tecla de activación y desactivación, lo cual puede permitir la creación y evolución de diversos timbres, según lo que cada programador asigne. Por otro lado, en esta implementación sólo usaré una abstracción, a la cual serán enviados todos los datos. Esto con el propósito de permitir que los estudiantes exploren la opción mencionada previamente.
Una vez que se ha identificado el valor numérico de las teclas que se usarán, sus valores son escritos como argumentos del objeto select y se conectan a los mensajes que se envían a la abstracción. En el caso siguiente, sólo se usará una tecla para apagar el sonido.
Comentarios
Publicar un comentario