Skip to main content

Práctica 4: Kick drum y random

1h

Una vez sabemos qué es y cómo utilizar un envelope, vamos a crear un sonido que imita el kick drum de una batería. 

Crearemos una version sencilla con los elementos de Pure data que hemos aprendido hasta el momento. Vamos a utilizar dos envelopes, uno para el volumen y otro para la frecuencia.frecuencia.

Empecemos

Envelope conque controla el envelope del volumen:

volumen

image-1667398233968.PNGimage-1668851429554.PNGFigura 1. patch Kick-drum-sencillo-paso-1.pd

Vamos a utilizar un oscilador y vamos a regular su volumen con un envelope utilizando el objeto "vline~". Los parametrosparámetros del vline"vline~" son los que nos van a permitir conseguir el efecto del kick-drum. En este caso nuestro envelope parte de 0.5 lo que va a generar un pequeño golpe, el attackAttack es muy rápido, va de 0.5 a 0.8 en 5 milisegundos. El decay mucho más largo que en el attack baja de nuevo a 0.5 en 60 milisegundos,milisegundos. noNo tendremos sustain e inmediatamente después del decay comenzaremos con el release, que sera la parte masmás larga de nuestro envelope, bajando a 0 en 400 milisegundos. Contenido del mensaje que recibe el "vline~":

0.5, 0.8 5, 0.5 60 5, 0 400 65
RampasValor inicialValor FinalDuración (milisegundos)Delay. Tiempo desde el inicio del envelope, hasta el comienzo de esta Rampa (milisegundos)
Attack0,50.850
Decay0.80.5605
Sustain----
Release0.5040065 = 60 + 5


Ejercicio 1: Abrir el patch talKick-drum-sencillo-paso-1.pd y completar comosiguiendo las instrucciones que encontrareis a lo largo de la lección para crear un Kick drum.

Subir un poco el volumen, aseguraros de que el "osc~" está recibiendo un valor con el que vibrar (con activar el "osc~" os he ayudado un poquitito con el objeto "loadbang" que envía automáticamente un bang al abrir el patch). Ahora hacer click en el bang azul del patch. ¿Escuchais algo? ¿Veis cómo se indicadibuja ala continuación.onda cada vez que enviáis el bang? 

HabréRecordar que, si no tenéis encendido el DSP, Pure Data no procesara señales y ni oiréis ni veréis nada 

Cuando enviamos el bang para activar el envelope que controla el volumen, habréis podido comprobar que cada vez suena un poco diferente.diferente, al igual que el dibujo de la onda que veis en el array "$0-scope3", que cada vez se empieza a dibujar en un punto distinto. Esto pasa por que la fase de la onda cada vez que activamos el kickenvelope es distinta.distinta.


Figura 2. Muchos aros girando con diferentes fases unos de otros.

¿Os acordáis de lo que es la fase? Lo vimos en la lección "Algo de teoría sobre las ondas". Para que suene siempre igual tendremos que inicializar la fase del oscilador cada vez que activemos el kick,Kick drum, haremos esto a través del inlet derecho del oscilador. Podéis probar diferentes valores para la fase buscando el sonido que más os guste.guste:


image-1667462679555.PNGimage-1668851446233.PNG

Figura 2. Añadimos un control de fase al oscilador del patch Kick-drum-sencillo-paso-1.pd

 
Envelope que controla la frecuencia

Hasta el momento la frecuencia del kick drum se mantiene constante desde el inicio al final del sonido del kick drum, en la imagen superior es de 7471 Hz. Para continuar dándole forma al kick drum vamos a introducir un envelope que modifique la frecuencia,frecuencia, siendo mas aguda al principio que al final. En este caso nuestro envelope tres secciones, la primera un attackAttack que va de 6 a 2 en 2 milisegundos.milisegundos. La segunda un sustainSustain que dura 3 milisegundos y la ultima un releaseRelease que va de 2 a 0 en 458 milisegundos.milisegundos. En este caso nuestro envelope no tiene Decay

6, 2 2, 0 458 5
RampasValor inicialValor FinalDuración (milisegundos)Delay. Tiempo desde el inicio del envelope, hasta el comienzo de esta Rampa (milisegundos)
Attack6220
Decay
---
Sustain22-3 = 5 - 2
Release204585

 

image-1667465968294.PNG

Como podéis comprobar, hemos hecho coincidir el tiempo de duración total del envelope que regula la frecuencia y el del envelope que regula el volumen, 465 milisegundos, si estos tiempos fueran distintos, la duración del kick drum vendría determinada por el envelop de menor duración.

Como podéis ver, multiplicamos nuestro envelope por un valor que va a condicionar el rango de frecuencias de nuestro kick drum. En el ejemplo de la imagen superior, la frecuencia inicial del kick drum es de 6x51= 306, tras 2 milisegundos esa frecuencia baja y se mantiene 3 milisegundos en 2x51= 102 Hz y de ahí descenderá a 0 en 458 milisegundos.  

Ahora, vamos a hacer regulable una parte del envelope que controla la frecuencia, en concreto el comienzo del kick, utilizando el símbolo $, esto va a afectar al golpe inicial del kick drum. ¿Qué notáis al variar ese valor?

image-1667466977076.PNG

Vamos a introducir ahora un nuevo elemento para controlar la escala de la frecuencia inicial de manera aleatoria. El objeto random.


random

Este objeto va a generar valores aleatorios en un rango determinado que comienza en 0. El número de valores desde el 0 que va a generar lo configuraremos en el argumento del random. Por ejemplo, si el argumento es 4, cada vez que reciba un bang enviara por su out put un 0, un 1, un 2 o un 3.

image-1667470475224.PNG

Si queremos que el rango comience en otro valor por ejemplo 17, sumaremos ese valor al resultado del random. De esta forma obtendremos valores aleatorios entre 17 y 20, 17 y 20 incluidos.

image-1667470556940.PNG

Ejercicio 1: crea un patch utilizando el objeto random que genere valores pares entre 20 y 30. [20, 22, 24, 26, 28, 30]

Pregunta: Observa los valores impresos en la ventana de Pd procedentes del random. ¿Qué sucede cada vez que envías el mensaje de seed al random? Para visualizar mejor lo que sucede imprime también el mensaje de seed cada vez que lo envies al random.


Ahora que ya conocemos el random, incluyámoslo en el control del envelope que regula la frecuencia de nuestro kick drum:


image-1667467672717.PNG



Figuras:

Figura 2. Muchos aros girando con diferentes fases unos de otros. https://giphy.com/gifs/hooping-hula-perth-MwC8t7MaaR7kCr3FaN