Pongo aquí la explicación que colgué en otro sitio...
Funciones por trozos: la faja sonora
Tanto pwe como pwl son funciones por trozos (en inglés piece wise fuctions). pwl es acrónimo de piece-wise-lineal, y pwe, piece-wise-exponential.
Las funciones por trozos se comportan de distinta manera según en la zona de qué hablemos. La siguiente función es una función por trozos o segmentos lineales, que simula el típico ADSR.
[ Imagen no disponible ]
Cuando x vale 0 y vale 0. Con valor 0.2 en la x, la y toma el valor 1, así sucesivamente. Podríamos resumir la función en esta lista de valores
x y
0 0
0.2 1
0.4 0.5
0.8 0.5
1 0
Sólo hay que apuntar los puntos de cambios, que se unen por segmentos lineales.
Parecida a esta función por trozos lineales, se podrían definir otras funciones por trozos, pero que en vez de cambiar linealmente, varien de otra manera, por ejemplo exponencial. Esta figura representa una función de ese tipo:
[ Imagen no disponible ]
Cuando x vale 0, y vale 1. Cuando x vale 0.4 y 0.5 etc. Sólo que ahora, el dibujo entre punto y punto se hace con una función de caida exponencial. Como imaginarás los tipos de funciones por trozos son infinitas, según eligas el sistema que quieras para dibuajar entre punto y punto.
Es muy usual este tipo de funciones para el control de parámetros. En el caso de la informática musical, el plugin Cristal VST tiene un pequeño panel donde se usan estás funciones para modular parámetros sonoros.
[ Imagen no disponible ]
--------------------------------------------------------------
Sonido y Audacity
En audacity puedes dibujar las funciones anteriores. Desde el comando nyquist se pueden generar funciones piece-wise. Por ejemplo para hacer la primera función escribiríamos:
(pwl 0 0 0.2 1 0.4 0.5 0.8 0.5 1 0)
Sólo que lo que antes llamábamos x ahora es tiempo. Tiempo relativo, es decir 0.5 significa la mitad del sonido 0.75 significa el 75% del sonido...
De igual manera se usan las pwe, versión exponencial. (nota: pwe no puede tomar el valor 0)
Imagina la situación de una onda sinusoidal de una determinada frecuencia.
[ Imagen no disponible ]
Aunque para concretar, sólo nos quedaremos con la onda entre 0 y 1.
Eso en Audacity lo escribimos así, -por ejemplo 300 hz- :
(hzosc 300)
Podemos variar la amplitud de la onda, multiplicándola por otra función. Si multiplicamos la función por 0.5, todos los valores se reducirán a la mitad, y en la gráfica queda escalada, encogida. Ahora bien, genero la función por trozos (en este caso un sólo trozo) como esta:
[ Imagen no disponible ]
En nyquist/audacity eso se escribe así
(pwe 0 1 1 0.01)
es decir, al principio valdrá 1, y al 100% o 1, valdrá 0.01 -recuerda que pwe no puede valer 0. ¿Y para qué sirve?. Si multiplico la onda por esta función, varío (modulo) su amplitud, así:
[ Imagen no disponible ]
Multiplicando entonces ambas funciones obtenemos ese efecto de caída. lo cual se escribe así:
(mult (pwe 0 1 1 0.01) (hzosc 300))
Dicho en cristiano: "multiplicar ese pwe por ese oscilador"
--------------------------------------------------
En lo que venimos haciendo en este hilo, se trata de sumar siete parciales y darle al sonido resultante un efecto de caída. Podría parecer, que es todo muy complicado explicado así, pero en realidad es muy sencillo. En el tema de la síntesis no es ni el tema 0: sumar ondas y multiplicar -intentando que no saturen
. Creo que la única manera de que "no nos den gato por liebre", es que intentemos comprender qué es un gato y qué es una libre
(ah para no saturar, tienes que escalar el resultado, para encajonarlo entre -1 y 1. O bien escalar cada uno de los parciales. Tienes entre -1 y 1 para repartir entre todos)
espero que te sirva.