Osciladores, expr, if
30 mins
Onda sinusoidal. osc
El objeto osc~ es un generador de ondas sinusoidales, también conocidas como ondas puras. Debe recibir en su inlet izquierdo la frecuencia de la onda que queramos generar en Hz. Este objeto va a generar una onda pura, esto quiere decir una onda sin armónicos, constituida por una sola frecuencia y con una amplitud de 1, por lo que generara valores de -1 a 1.
Onda de sierra: phasor
Estas ondas suenan más agresivas y estridentes que las ondas sinusoidales. La forma de esta onda son una sucesión de rampas iguales que van de 0 a 1 en un tiempo determinado. Al llegar a 1 los valores caen inmediatamente a 0 desde donde comienza de nuevo la rampa. Cada rampa será una repetición y la frecuencia de esta onda vendrá determinada por el número de rampas sucedido en una unidad de tiempo. Tenemos una onda de sierra que va de 0 a 1, luego su amplitud sera de 0.5, por lo que vamos a normalizarla, que quiere decir ajustar el centro del desplazamiento transversal de una partícula en 0 con una amplitud de 1. Para ello la multiplicaremos por dos para obtener una amplitud de 1 y para colocar su centro en 0 le restaremos 1.
Normalizartoggles verdes activan y desactivan la onda sin normalizar y la onda normalizada para que podáis compararlas en el patch xxx. Si encendéis los dos a la vez tendréis una combinación de ambas ondas.
Onda rectangular: phasor + filtro
Su forma se alterna entre 0-1 y 1, generando una onda rectangular. Para conseguir esta onda vamos a partir de una onda de sierra que vamos a transformar con el objeto "expr~". Vamos a ver un poco cómo funciona el objeto expr:
Este objeto nos va a permitir evaluar expresiones utilizando operadores matemáticos (<, ==, +, ...) o estructuras condicionales (si esta condición se cumple, entonces envía en valor A, si esta condición no se cumple envía el valor B. En programación por defecto las situaciones ciertas se representan con un 1, y las falsas con un 0.
Como sabemos la onda de sierra es una rampa lineal que va de 0 a 1 en un tiempo determinado. Esta rampa pasa por valores intermedios entre 0 y 1, la onda rectangular que queremos crear ahora no pasa por ningún valor intermedio, va de 0 a 1 inmediatamente. Para convertir esta rampa lineal en un salto vamos a decirle al objeto expr~ que la condición se cumple cuando los valores son superiores a 0.5. por lo tanto, todos los valores de 0 a 0.5 pasenpasaran a ser un 0 y que todos los valores de 0.5 a 1 pasenpasaran a ser uno.un Como1, porya defectoque, verdadero es igual a 1 y falso es igual a 0, no tendremos que añadir estos parámetros en la expresión que quedara de la siguiente manera:0:
$v1 sera la señal que el "phasor~" en via al inlet de "expr~". Cuando los valores generados por el phasor sean mayores que 0.5 la expresión devolverá por su output un 1, cuando los valores sean menores que 0.5 devolverá por su output un 0.
Ahora tenemos una onda rectangular que va de 0 a 1, luego su amplitud sera de 0.5, por lo que vamos a normalizarla como hicimos anteriormente con la onda de sierra. La multiplicaremos por dos para obtener una amplitud de 1 y para colocar su centro en 0 le restaremos 1.
Onda triangular
ExplicarSu forma se compone de rampas ascendentes y descendentes que van de -1 a 1 y de 1 a -1. Para construirla vamos a partir de nuevo de una onda de sierra. A mitad de la progresión de esta onda de sierra vamos a invertir la pendiente de la progresión, de manera que al llegar a 0.5 en lugar de seguir subiendo hasta 1, comience a bajar hasta 0. Para ello vamos a utilizar dentro del objeto expr~ el ifcondicional if, que nos va a permitir configurar outputs distintos cuando la condición se cumpla o no.
Os dejo los patches de lo que hemos visto anteriormente y un patch con todas las ondas para que podáis compararlas.