Documentos de Académico
Documentos de Profesional
Documentos de Cultura
algortmica
y
sntesis
de
sonido
en
PureData
Dr.
Alfonso
Alba
Cadena
Facultad
de
Ciencias,
UASLP
fac@fc.uaslp.mx
Contenido
Sesin 1
INTRODUCCIN A PUREDATA
Qu
es
PureData?
PureData
(Pd)
es
un
entorno
visual
de
programacin
orientado
al
procesamiento
de
audio
en
Rempo
real.
Desarrollado
por
Miller
PuckeTe.
Surge
como
una
alternaRva
a
lenguajes
como
Max/MSP,
pero
de
libre
distribucin.
Versin
bsica
de
Pd:
hTp://crca.ucsd.edu/~msp/so[ware.html
Programacin
en
Pd
La
programacin
en
Pd
se
realiza
de
manera
visual,
conectando
unos
elementos
con
otros
y
estableciendo
sus
propiedades.
Una
vez
abierto
un
documento
de
Pd
(llamados
parches),
uno
puede
alternar
entre
el
modo
de
edicin
y
el
modo
de
ejecucin
usando
CTRL-E.
En
el
modo
de
edicin,
se
pueden
colocar
(men
Put),
mover,
e
interconectar
los
elementos
del
parche
libremente.
En
el
modo
de
ejecucin,
se
pueden
uRlizar
los
elementos
de
interfaz
grca
para
manipular
los
parmetros
del
parche.
Elementos
de
Pd
Objetos
(CTRL+1):
representan
instrucciones
que
Pd
debe
ejecutar.
Los
objetos
pueden
tener
entradas
(en
la
parte
superior)
y
salidas
(en
la
parte
inferior).
Mensajes
(CTRL+2):
conRenen
informacin
que
puede
enviarse
a
uno
o
ms
objetos
cuando
se
hace
click
en
el
mensaje.
Objeto
Mensaje
Nmero
GUI
Entradas
y
salidas
Todos
los
objetos
de
Pd
Renen
cero
o
mas
entradas
en
la
parte
superior,
y
cero
o
mas
salidas
en
la
parte
inferior.
Entradas
Salidas
Operadores
Pd
conRene
objetos
para
realizar
muchas
de
las
operaciones
que
se
encuentran
en
cualquier
lenguaje
de
programacin.
Estos
objetos
reciben
uno
o
mas
mensajes
numricos
de
entrada,
y
envan
el
resultado
por
la
salida
cuando
reciben
un
mensaje
en
su
entrada
acRva.
Se
puede
agregar
un
parmetro
de
inicializacin
para
el
segundo
operando.
Tipos
de
mensajes
Numricos
(oat):
cualquier
nmero
de
punto
otante
Smbolos
(symbol):
cualquier
cadena
que
no
incluya
espacio,
coma
o
punto
y
coma,
y
que
no
sea
un
nmero.
Listas
(list):
dos
o
mas
smbolos
o
nmeros
separados
por
espacios.
MlRples:
dos
o
mas
de
los
anteriores
separados
por
comas.
[bang(
El
mensaje
[bang(
es
muy
importante
en
Pd.
Se
uRliza,
entre
otras
cosas,
para
Hacer
que
un
objeto
emita
un
mensaje
de
salida
Hacer
que
un
objeto
realice
una
tarea
especca
Coordinar
y
sincronizar
eventos
Retardo
de
mensajes
El
objeto
[delay]
recibe
un
mensaje
y
lo
enva
un
cierto
Rempo
despus
(dado
en
ms).
Metrnomos
El
objeto
[metro]
emite
un
mensaje
[bang(
cada
cierto
intervalo
de
Rempo,
dado
en
ms.
La
emisin
de
mensajes
puede
iniciarse
o
detenerse
enviando
un
valor
booleano
(1
0)
a
la
primer
entrada
de
[metro].
Variables
En
PureData,
las
variables
son
objetos
que
manRenen
su
valor
hasta
que
les
es
asignado
uno
nuevo.
Estos
objetos
cuentan
con
dos
entradas.
Ambas
sirven
para
asignar
un
valor
a
la
variable,
pero
un
mensaje
en
la
entrada
izquierda
ocasiona
que
la
variable
emita
su
valor
a
la
salida.
Contadores
[metro]
metrnomo
[trigger]
Envo
de
mensajes
en
orden
[delay]
Retardo
de
mensajes
[loadbang]
Enva
[bang(
al
cargar
el
parche
Sub-parches
y
abstraccin
Parche:
Conjunto
de
elementos
de
Pd
interconectados
entre
s,
que
realizan
alguna
tarea
especca.
Sub-parche:
Un
parche
dentro
de
otro
parche,
que
se
almacena
como
parte
del
parche
antrin.
Abstraccin:
Un
parche
independiente
(almacenado
en
un
archivo
separado)
que
puede
uRlizarse
dentro
de
cualquier
parche.
clockdiv-help.pd
Sesin 2
SNTESIS DE SONIDO
Tipos
de
seales
en
Pd
Mensajes:
Se
envan
de
manera
espordica,
y
se
uRlizan
principalmente
para
control
e
interface.
Muchos
objetos
de
Pd
envan
un
mensaje
solamente
cuando
reciben
otro
en
su
entrada
izquierda
(tambin
llamada
entrada
ac,va).
mensajes
audio
Ondas
senoidales
El
sonido
consiste
de
vibraciones
(ondas)
en
un
medio
elsRco
como
el
aire.
La
forma
ms
simple
de
vibracin
consiste
en
una
onda
senoidal.
El
objeto
[osc~]
produce
una
oscilacin
senoidal
conRnua
a
una
frecuencia
dada
en
Hertz.
El
objeto
[dac~]
enva
una
seal
digital
a
travs
de
la
tarjeta
de
audio
de
la
computadora
para
que
podamos
escucharla.
Ondas
peridicas
Una
senoidal
con
frecuencia
f
(en
Hertz)
Rene
un
periodo
de
1/f
segundos.
Cualquier
senoidal
con
frecuencia
kf,
donde
k
es
entero
posiRvo,
se
repite
cada
1/f
segundos.
Estas
frecuencias
se
llaman
armnicos
de
f.
Ondas
peridicas
En
general,
cualquier
suma
de
senoidales
con
frecuencias
k1f,
k2f,
,
knf
tendr
periodo
1/f,
donde
a
f
se
le
llama
la
frecuencia
fundamental
de
la
onda.
Toda
onda
peridica
puede
descomponerse
como
la
suma
de
senoidales
armnicas
con
disRntas
frecuencias
y
fases
(series
de
Fourier).
Espectro
de
frecuencias
El
espectro
de
frecuencias
de
una
onda
indica
la
amplitud
(y
la
fase)
de
cada
una
de
las
componentes
senoidales
presentes
en
la
onda.
FFT
IFFT
Seal
Espectro
Propiedades
de
un
sonido
Los
sonidos
que
percibimos
Renen
principalmente
cuatro
atributos
que
los
disRnguen:
volumen,
tono,
Rmbre,
y
duracin.
Los
primeros
tres
atributos
estn
relacionados
con
las
propiedades
de
las
ondas
peridicas
de
la
siguiente
manera:
Atributo
perceptual
Propiedad bsica
Volumen
Amplitud
Tono
Frecuencia fundamental
Timbre
Espectro
Adems,
estos
atributos
pueden
variar
con
el
Rempo
durante
la
duracin
del
sonido.
Volumen
El
volumen
de
un
sonido
puede
modicarse
simplemente
mulRplicando
la
seal
por
una
funcin
envolvente.
Una
manera
simple
de
simular
envolventes
es
mediante
una
funcin
lineal
a
trozos.
envar~.pd
Timbre
El
Rmbre
es
el
atributo
ms
complejo
de
un
sonido,
y
es
el
que
nos
hace
diferenciar,
por
ejemplo,
un
violn
de
una
auta
o
un
piano.
Existen
varias
tcnicas
que
nos
permiten
modelar
el
espectro
de
una
onda,
tales
como:
Modulacin
de
amplitud
Modulacin
de
frecuencia
Sntesis
substracRva
y
ltros
Timbre
y
espectro
De
acuerdo
al
Teorema
de
Fourier,
toda
seal
peridica
se
puede
representar
como
la
suma
de
seales
oscilatorias
simples
(senos
y
cosenos)
con
disRntas
amplitudes
y
fases.
Una
seal
armnica
se
compone
de
oscilaciones
cuyas
frecuencias
son
todas
mlRplo
de
una
frecuencia
fundamental.
En
una
seal
inarmnica,
no
se
puede
percibir
una
frecuencia
fundamental.
Modulacin
Modular
signica
cambiar
un
parmetro
de
una
seal
(tono,
amplitud,
etc.)
de
manera
conRnua,
de
acuerdo
al
valor
de
otra
seal.
Si
la
modulacin
es
lenta,
el
odo
puede
percibir
la
forma
de
la
seal
moduladora.
Si
la
modulacin
es
rpida
(frecuencias
audibles),
se
percibe
un
cambio
de
Rmbre
en
la
seal
portadora.
Sesin 3
ARREGLOS
MoRvacin
Los
arreglos
son
fundamentales
en
programacin,
ya
que
permiten
almacenar
y
organizar
datos.
En
Pd
tambin
pueden
uRlizarse
arreglos,
por
ejemplo
para:
Almacenar
las
propiedades
de
las
notas
de
una
meloda
Denir
funciones
que
permitan
transformar
una
secuencia
de
datos
de
disRntas
maneras
Implementar
fuentes
de
modulacin
complejas
Almacenar
y
reproducir
seales
de
audio
(sonidos)
Creacin
de
un
arreglo
Para
agregar
un
arreglo
a
un
parche
de
Pd,
se
uRliza
el
men
Put->Array.
Todo
arreglo
se
idenRca
mediante
un
nombre,
y
debe
tener
un
tamao
(nmero
de
elementos)
denido.
Las
propiedades
y
el
rango
de
despliegue
de
un
arreglo
se
pueden
modicar
haciendo
click-derecho
sobre
l.
Tambin
es
posible
crear
arreglos
usando
el
objeto
[table]
y
usando
el
nombre
y
tamao
del
arreglo
como
argumentos:
e.g.,
[table
arreglo
100]
Inicializacin
de
un
arreglo
Para
inicializar
un
arreglo,
se
le
puede
enviar
un
mensaje
que
consiste
en
una
lista
de
nmeros.
El
primer
nmero
indica
el
ndice
del
arreglo
a
parRr
del
cual
se
escribirn
los
datos.
El
resto
de
la
lista
son
los
datos
a
almacenar
en
el
arreglo.
Edicin
de
un
arreglo
En
Pd
los
arreglos
se
muestran
de
forma
grca.
Para
editar
los
datos,
solamente
hay
que
arrastrar
el
apuntador
del
mouse
sobre
la
grca
del
arreglo
en
modo
de
Ejecucin.
Para
una
edicin
mas
na,
hacer
click
derecho
sobre
el
arreglo
y
elegir
la
opcin
Open.
Para
una
edicin
an
mas
na,
abrir
las
propiedades
del
arreglo
y
elegir
Open
List
View
Lectura
de
un
arreglo
Para
leer
un
arreglo
se
usa
el
objeto
[tabread],
el
cual
lleva
como
argumento
el
nombre
del
arreglo.
[tabread]
recibe
como
entrada
el
ndice
del
elemento
que
se
desea
leer,
y
devuelve
como
salida
el
valor
del
elemento.
Al
igual
que
en
C
y
C++,
los
arreglos
en
Pd
se
indexan
a
parRr
de
cero.
Secuenciacin
bsica
Una
de
las
principales
aplicaciones
musicales
de
los
arreglos
es
la
implementacin
de
secuenciadores.
La
idea
bsica
es
leer
cclicamente
un
arreglo
(o
ms)
usando
contadores
mdulo-N.
Rango: 2000 a 20
Rango: 2000 a 20
Rango: 10 a 1
Tono
En
el
caso
de
un
instrumento
musical,
el
tono
determina
la
frecuencia
fundamental
que
se
est
tocando
en
un
momento
determinado.
La
relacin
entre
el
tono
y
la
frecuencia
es
exponencial:
cada
octava
se
duplica
la
frecuencia.
c
d
e
f
g
a
b
c
d
e
f
g
a
b
c
d
e
f
g
a
b
f
=
220
Hz
f
=
261
Hz
f
=
440
Hz
f
=
522
Hz
Entonaciones
Una
entonacin
describe
la
relacin
entre
los
tonos
y
las
frecuencias
que
les
corresponden.
En
una
entonacin
regular,
se
divide
la
octava
en
intervalos
regulares
(en
escala
logartmica).
Ya
que
la
proporcin
de
frecuencia
de
un
tono
a
su
octava
superior
es
2:1,
entonces
la
distancia
entre
semitonos
es
siempre
de
21/12:1
en
la
msica
occidental.
-8 -6
-3 -1 1
-9 -7 -5 -4 -2 0
4 6
2
f0 = 440 Hz
7 8
Objeto
[mtof]
El
objeto
[mtof]
(MIDI
to
frequency)
realiza
un
mapeo
similar,
pero
donde
la
nota
base
(440
Hz)
corresponde
al
entero
n=69.
En
otras
palabras,
[mtof]
realiza
la
siguiente
operacin:
f = f0 ! 2 (n"69)/12 ,
Rango: 127 a 0
Escalas
Una
escala
puede
verse
como
un
subconjunto
de
notas
que
{picamente
se
repiten
en
cada
octava.
-8 -6
-3 -1 1
-9 -7 -5 -4 -2 0
4 6
2
9
7 8 10
Escala Pentatnica
Out
10
11
11
Envolventes
complejas
Interpolando
la
salida
de
un
secuenciador
(por
ejemplo,
mediante
[line~])
es
posible
crear
formas
complejas
de
envolventes.
Tambin
puede
uRlizarse
[tabread4~]
para
obtener
la
salida
interpolada
de
un
arreglo.
Rango: 127 a 0
Rango: 16 a 1
Rango: 8 a 0
Tablas
de
ondas
Es
tambin
posible
uRlizar
un
arreglo
para
representar
una
forma
de
onda
arbitraria.
En
este
caso,
la
lectura
del
arreglo
debe
realizarse
a
la
tasa
de
muestreo
del
audio,
para
lo
cual
se
uRliza
el
objeto
[tabread~],
o
bien,
la
versin
con
interpolacin
[tabread4~].
Sesin 4
COMPOSICIN
ALGORTMICA
I:
MELODA
Msica
algortmica
A
muy
grandes
rasgos,
la
msica
algortmica
se
fundamenta
en
tres
etapas:
1. Generar
secuencias
de
nmeros
interesantes
(equilibrio
entre
repeRRvidad
y
sorpresa)
2. Transformar
las
secuencias
de
nmeros
en
secuencias
de
notas
musicalmente
relacionadas
(escalas,
acordes,
cnones,
etc)
3. Agregar
una
o
ms
capas
superiores
que
controlen
(posiblemente
a
travs
de
otras
transformaciones)
las
dos
etapas
anteriores
Escalas
Una
escala
puede
verse
como
un
subconjunto
de
notas
que
{picamente
se
repiten
en
cada
octava.
-8 -6
-3 -1 1
-9 -7 -5 -4 -2 0
4 6
2
9
7 8 10
Escala Pentatnica
CuanRzacin
a
una
escala
Frecuencia
Sntesis
de
sonido
Prediccin
vs
sorpresa
Las
secuencias
interesantes
son
aquellas
que
muestran
un
balance
entre
lo
predecible
(e.g.,
un
secuenciador)
y
lo
aleatorio.
simplesynth~.pd
Canonizador
Secuencias
fractales
Los
fractales
son
objetos
matemRcos
que
muestran
un
cierto
grado
de
auto-similaridad,
la
cual
puede
dar
lugar
a
secuencias
interesantes.
Muchos
fractales
se
obRenen
a
parRr
de
frmulas
recursivas.
Por
ejemplo,
el
conjunto
de
Mandelbrot
est
formado
por
aquellos
complejos
c
tales
que
la
rbita
de
la
frmula
recursiva
z=z2+c,
iniciando
con
z=0,
es
acotada.
Una
forma
simple
de
generar
secuencias
asociadas
con
fractales
es
generando
la
rbita
para
un
punto.
Ejemplo de rbitas
Ejemplo de rbitas
Secuencias
Morse-Thue
La
secuencia
Morse-Thue
es
una
secuencia
binaria
innita
que
se
obRene
calculando
la
paridad
(la
suma
mdulo-2
de
los
dgitos
en
la
representacin
binaria)
de
los
nmeros
naturales,
e.g.,
0110100110010110
La
idea
anterior
se
puede
generalizar
a
una
transformacin
donde
se
calcule
la
n-aridad
de
cada
nmero
x
en
una
cierta
secuencia.
Esta
se
puede
calcular
mediante
el
siguiente
pseudo-algoritmo:
sum = 0;!
while (x > 0) {
sum = sum + (x % base);
x = (int)(x / base);!
}!
return sum % base;!
Clculo de la n-aridad en Pd
n-arity.pd
Sesin 5
Objeto
[spigot]
El
objeto
[spigot]
cuenta
con
dos
entradas
y
una
salida.
Los
mensajes
que
recibe
en
la
entrada
acRva
se
envan
a
la
salida
solamente
cuando
el
valor
recibido
en
la
segunda
entrada
es
disRnto
de
cero.
Usando
este
objeto,
podemos
controlar
el
paso
de
mensajes
desde
un
metrnomo
hacia
los
generadores
de
notas,
creando
as
disRntos
patrones
rtmicos.
Divisores de reloj
pulse.pd
Autmatas
celulares
Un
autmata
celular
consiste
en
un
arreglo
de
celdas,
cada
una
de
las
cuales
se
encuentra
en
un
estado
(de
un
conjunto
nito
de
estados).
Un
conjunto
de
reglas
permite
evolucionar
el
estado
de
cada
celda,
dependiendo
del
estado
actual
de
esa
celda
y
sus
vecinas.
Los
autmatas
celulares
mas
simples
son
unidimensionales,
Renen
un
conjunto
de
dos
estados
(0
1),
y
las
reglas
consideran
nicamente
las
dos
celdas
adyacentes
como
vecinas
(vecindades
de
tamao
3).
En
este
caso,
una
vecindad
puede
tener
una
de
8
combinaciones
de
estados,
por
lo
que
existen
28
=
256
maneras
de
denir
la
regla
de
evolucin.
Autmata celular
ca3.pd
Acentuacin
Los
patrones
rtmicos
tambin
pueden
uRlizarse
para
modular
parmetros
de
sntesis,
de
manera
que
algunas
notas
resulten
acentuadas.