Solución al taller del post anterior

A continuación una posible solución al taller planteado en el post anterior.

El primer punto que se planteó fue:

"a. La primera abstracción que debe crear es una para síntesis aditiva, en la cual se pueda especificar una frecuencia como fundamental y que internamente cuente con 5 componentes (con cualquier factor decidido por cada estudiante). La intensidad de cada componente será especificada de forma constante por cada estudiante. Debe agregarse un generador de envolventes que permita tener un tiempo de ataque, un periodo de sostenimiento y uno de decaimiento, adicionalmente también debe ser posible definir la intensidad máxima para la envolvente. Todo el proceso debe ser coordinado con un bang."

Si consideramos la metodología de identificar primero cuales pueden ser las posibles variables y constantes, vamos a encontrar lo siguiente:

1. Necesitamos 5 osciladores que dependerán de una frecuencia variable, pero el factor de cada oscilador es una constante que decide cada persona al programar la solución.

2. La intensidad de cada oscilador es constante y se espacifica en el momento de programar. Lo único con lo que se debe tener cuidado es con que la suma de las intensidades no sea mayor a 1.

3. Para el generador de envolventes tenemos cuatro variables: la intensidad máxima, el tiempo de ataque, el tiempo de sostenimiento y el tiempo de decaimiento.

4. Como todo el proceso debe ser coordinado a través de un bang, lo vamos a tomar como parte del listado de datos que vamos a ingresar, es decir, como una variable.

Basándonos en ese análisis de la situación sabemos que externamente se indicarán las variables (es decir, fuera de la abstracción). Adicionalmente, definimos los elementos que necesitamos dentro de la abstracción: cinco osciladores, a sus entradas de frecuencia se debe anteponer un objeto de multiplicación con un factor que se determina en el momento de programar; después de las salidas de los osciladores se debe ubicar un objeto de multiplicación con factores arbitrariamente definidos y cuya suma no puede superar el número 1; un generador de envolventes que recibe un mensaje para el ataque y depende de dos variables externas, un delay que retrase el mensaje de decaimiento por un tiempo especificado por una variable externa y un mensaje de decaimiento que toma su valor de tiempo de una variable externa.

Una posible implementación es la siguiente:

Primero solucionar la parte de síntesis aditiva que es el primer proceso que se lleva a cabo dentro de la abstracción.


Seguido a esto solucionar el generador de envolventes.



Luego se unen las dos funciones para que generen lo especificado, una abstracción de síntesis aditiva con una envolvente global.

Continuemos con la solución del segundo punto:

"b. La segunda abstracción debe ser para realizar síntesis FM. En este caso los sonidos producidos tendrán una intensidad fija y una envolvente corta que se explicará en el siguiente párrafo. Se debe poder especificar la frecuencia portadora, la frecuencia moduladora, un índice inicial y uno final. Todo el proceso debe ser coordinado por un bang."

 Si usamos el mismo procedimiento:

1. Necesitamos dos osciladores un objeto de suma de audio y dos objetos de multiplicación de audio para realizar la síntesis FM.

2. La envolvente va a ser con una forma que se especifica después (y que no cito acá) y es compuesta por constantes.

3. Las variables son: frecuencia portadora, frecuencia moduladora, indice inicial, indice final y bang de activación. El tiempo de transición entre un índice y otro es el mismo o menor al que se use para la envolvente, todos los objetos relacionados a este proceso pueden variar según la implementación. Para mi propuesta, una posible solución es:


Primero, solucionar todo lo relacionado a la síntesis FM. En este caso, añadiendo lo pertinente al cambio de índice en el tiempo.



Luego añadir la envolvente que se describió en el post anterior.

El tercer problema:

"c. La tercer abstracción será para realizar síntesis AM, en este caso usaremos la unipolar. se debe poder especificar la frecuencia portadora, una moduladora inicial y una moduladora final, es decir, la moduladora va a variar en un tiempo especificado y que coincide con el tiempo de la envolvente. La envolvente tendrá un sólo valor especificado, que será el de ataque. Para el decaimiento siempre tendrá un tiempo de 50 milisegundos. Todo el proceso debe ser coordinado con un bang."

 Procedemos de la misma forma que en los dos puntos anteriores:

1. Para hacer síntesis AM unipolar se necesitan: dos osciladores, una multiplicación de audio, una multiplicación de audio por 0.5 y una suma de audio con una constante de 0.5.

2. La frecuencia portadora será variable. La moduladora tiene una fluctuación lineal entre dos valores y esos dos con el tiempo en el cual se efectua el proceso son tres variables. Como el tiempo en el que ocurre el proceso coincide con el tiempo de la envolvente sólo se le debe sumar 50 milisegundos al tiempo que se especifique para el ataque, ya que el decaimiento es constante de 50 ms.  La activación es la última variable.

Procedamos a implementar la síntesis AM unipolar:


En este caso como lo relacionado a la frecuencia moduladora tiene variación lo consideraré como la siguiente parte que se debe programar.


Una vez solucionada la variación de frecuencia, procedemos a programar el generador de envolventes

Una vez que se ha terminado se puede proceder con el resto de la solución que sólo implica seguir los pasos descritos en el post para realizar las secuencias desde los números listados al final.

La solución del taller (taller.zip) puede ser descargada de la carpeta Pure Data ASAB

Comentarios

  1. Hotel Rohnert Park Casino, Racetrack & Spa - Mapyro
    See 17 photos and 제주도 출장안마 1 구리 출장마사지 tip from 35 상주 출장마사지 visitors 남양주 출장샵 to Hotel Rohnert Park Casino, Racetrack & Spa. "One of the nicer hotels out there." Rating: 정읍 출장안마 4.4 · ‎27 votes

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Conociendo lo básico de Pure Data

Pure data - Vanilla, lo básico, añadir externos

Síntesis aditiva