Professional Documents
Culture Documents
INSTRUMENTOS MUSICALES
SNTESIS DIGITAL DE
PIANOS ELECTRNICOS
DEPARTAMENTO DE
TEORA DE LA SEAL Y
COMUNICACIONES
CURSO 2004/2005
1. Prlogo. 3
4. Modelos de sntesis.. 29
4.1. Modelos de seal.. 30
4.1.1. Mtodos de sntesis global. 31
4.1.2. Mtodos lineales.... 46
4.1.3. Mtodos de liberacin de muestras 54
4.2. Modelos fsicos. 66
4.2.1. Mtodo de diferencias finitas. 67
4.2.2. Sntesis modal 72
4.2.3. Guiado digital de onda... 73
5. El Sistema MIDI.. 92
5.1 Aspectos bsicos 93
5.2 Mensajes MIDI.. 95
5.3 Secuenciadores y archivos MIDI... 102
5.4 Sistema General MIDI (GM). 104
Bibliografa 134
Apndice 136
Agradecimientos 139
1. PRLOGO
Mecnica bsica
Figura 2.4 Propagacin del pulso inicial y Anlisis espectral del pulso
viajero.
Figura 2.7. Diferencias entre el decaimiento para una cuerda y dos cuerdas
conectadas al mismo puente.
Inarmonicidad
2 y 2 y
2
2 y
4
T EI d 0 4
= c K (2.1) c = K= I= (2.2)
t 2 x 2 t 4 64
1 T EI 2
f n = nf 0 1 + Bn 2
para n>0 (2.3) f0 = B= (2.4)
2L TL2
Esta propiedad sugiere que debera ser posible obtener sonidos que
no aparecen en la serie armnica de Do, y por tanto generar toda la escala
cromtica en un mbito dado. Por ejemplo, podramos generar doce alturas
diferentes a partir del Do ms grave del piano y afinar los sonidos con
quintas justas pitagricas.
Puesto que cada una de estas quintas tiene una relacin de frecuencia
3 2
de (lo que equivale a una longitud de cuerda de ), para sumar quintas
2 3
sucesivamente, tenemos que multiplicar la frecuencia ms grave por
3
factores sucesivos de . Los nmeros del ejemplo son los multiplicadores
2
y el Do ms grave es la frecuencia bsica (que segn el patrn internacional
de afinacin es de 32.70 Hz). La serie de once quintas superpuestas
proporciona los doce sonidos de la escala cromtica y acaba con el Mi#
agudo. Si afinamos las notas correspondientes en el piano con las
frecuencias indicadas, el resto es una cuestin sencilla, pues partiendo de
las notas afinadas basta aadir octavas hacia arriba o hacia abajo.
4
La proporcin de la cuarta justa multiplicada doce veces, da un
3
resultado algo menor que el de cinco octavas mediante un factor de 1.014,
12
81
La proporcin de esta diferencia , llamada coma sintnica, revela
80
un hecho sorprendente. En el caso de las otras comas, era evidente que
exista una diferencia de notacin entre Si#, Rebb y Do, y podramos haber
supuesto que estas diferencias de notacin eran el resultado de las
diferencias naturales en el mtodo empleado para generar las frecuencias.
En el caso de los dos Mi del ejemplo anterior, no existe esta diferencia de
notacin, ambos son el mismo Mi.
por 2 12 =2.
4. MODELOS DE SNTESIS
Modelos no lineales
Liberacin de muestras
Modelos de sntesis
Diferencias finitas
Guiaonda digital
Sntesis FM simple
Sntesis AFM
Sntesis PD
Sntesis FM
Anlisis FM
1 d 1 d
f i (t ) = (t ) = (2f c t + (t ) cos(2f m t + m ) + c )
2 dt 2 dt
1 d (t )
= f c (t ) f m sin(2f m t + m ) + cos(2f m t + m ) (4.7)
2 dt
Sntesis AFM
r
n =
n
J n ( ) sin( c t + n m t ) (4.10)
Dos Portadoras
ff
f c 2 = nf o = int( + 0.5) f o (4.11)
fo
Dos Moduladoras
Ai , k = J i ( 1 ) J k ( 2 ) (4.12)
fn
In = = 1 + Bn 2 (4.13)
nf 0
Sntesis PD
Sntesis aditiva
Sntesis granular
Modelos lineales
Sntesis SMS
Sntesis sustractiva
Sntesis aditiva
Sntesis granular
t
e(t ) = h(t , )u ( )d (4.17)
0
Sntesis sustractiva
La figura muestra una forma de onda del sonido de un piano con las
secciones transitoria y permanente indicadas. En este ejemplo las
caractersticas espectrales de la forma de onda permanecen constantes a lo
largo de la seccin permanente, mientras que la amplitud decrece a una tasa
aproximadamente constante. Este ejemplo no es realista, pues en pianos
autnticos, tanto las caractersticas espectrales como la amplitud continan
cambiando durante toda la emisin del sonido.
generalmente son fijas para un instrumento concreto, mientras que las otras
suelen ser configurables por el usuario
Longitud de Bucle
(12 2 ) n = 1.5
log 1.5
n= = 7.01955 7
log 12 2
s (n + k ) = (1 K ) s (n) + ( K ) s (n + 1) (4.18)
Divisiones (Splits)
Ruido de Aliasing
Multicapa (Layering )
Filtrado digital
Ky = &y& (4.19)
y = y (t , x) y& = y (t , x) y = y (t , x)
t x
y (t , x) y (t T , x) y (t , x) y (t T , x)
y& (t , x) (4.20) y (t , x) (4.21)
T X
y (t + T , x) 2 y (t , x) + y (t T , x)
&y&(t , x) (4.22)
T2
y (t , x + X ) 2 y (t , x) + y (t , x X )
y (t , x) (4.23)
X2
y (t , x + X ) 2 y (t , x) + y (t , x X ) y (t + T , x) 2 y (t , x) + y (t T , x)
K 2
= (4.24)
X T2
KT 2
y (t + T , x) = [ y(t , x + X ) 2 y(t , x) + y(t , x X )] + 2 y(t , x) y(t T , x) (4.25)
X 2
K
En una implementacin prctica, es comn tomar T = 1 , X = T, y
evaluar la recursin en los enteros t = nT y x = mX para obtener la ecuacin
en diferencias:
k l y (t , x) m n y (t , x)
k =0 l =0
k ,l
t k x l
= m,n
m =0 n =0 t m x n
(4.27)
x x
y (t , x) = y r (t ) + yl (t + ) (4.28)
c c
1 1
2
x x 1 1
y r = y r (t ) = y r (t ) = y& r y r = &y&r = 2 &y&r (4.29)
x c c t c c c c
x 1
2
x 1 1 1
yl = yl (t + ) = yl (t ) = y& l yl = &y&l = 2 &y&l (4.30)
x c c t c c c c
y (t , x) = e st +vx (4.31)
K s2
Ky = Kv 2 y = &y& = s 2 y De donde = = c2 (4.32)
v2
y (t , x) = e s (t x c ) (4.33)
y (t , x) = A ( si )e si ( t x / c ) + A ( si )e si ( t + x / c )
+
(4.34)
i
x x
y (t , x) = y r (t ) + yl (t + ) (4.28)
c c
Los modos son excitados por una fuerza externa aplicada a un punto
dado de la estructura. La energa de excitacin se distribuye entre los
modos segn la forma de la excitacin. Se asume normalmente que no
existe intercambio de energa alguno entre los modos. En la prctica, el
patrn de vibracin resultante no puede ser completamente descrito por un
modo nico, sino por la suma de infinitas contribuciones. No obstante, para
poder implementar la respuesta numricamente, la estructura continua debe
ser dividida en un conjunto finito de puntos.
1
La funcin de transferencia del filtro es H ( z) = (4.35)
2(1 + z 1 )
Julius O. Smith ha extendido este algoritmo para desarrollar el
concepto de Sntesis de Guiaonda Digital. El enfoque mediante guiaonda
digital, proporciona eficientes modelos computacionales para sntesis de
sonidos de piano. Este mtodo est relacionado con el de las diferencias
finitas pues ambos estn basados en la discretizacin de la ecuacin de
onda. La eficiencia de esta tcnica reside en el hecho de concentrar todas
las prdidas y dispersin de la estructura en un nico punto (asumiendo que
el sistema es LTI). Las guiaondas digitales han sido desarrolladas
especficamente para sntesis de piano.
Guiaonda digital
Figura 4.20. Obtencin de una seal fsica de una guiaonda digital usando
puntos de extraccin.
xm = mX (4.36)
t n = nT
y (t n , x m ) = y + (n m) + y (n + m) (4.37)
y (n + 1, m) = y + ((n + 1) m) + y ((n + 1) + m) =
= y (n, m + 1) + y (n, m 1) y (n 1, m)
[ ]
= y + (n (m + 1)) + y (n + (m + 1)) + y + (n (m 1)) + y (n + (m 1)) y + (n 1 m) + y (n 1 + m) =
+ + +
= y (n m 1) + y (n + m + 1) + y (n m + 1) + y (n + m 1) y (n m 1) + y (n + m 1) =
= y + (n m + 1) + y (n + m + 1)
= y (n + 1, m)
y (n + 1, m) = y + (n m + 1) + y (n + m + 1) =
= y + ((n + 1) m) + y ((n + 1) + m) (4.27)
= y + (n (m 1)) + y ((n + (m + 1))
s 2 + s s2
v2 = = s 2 (1 + ) = 2 (1 + )
K K s c s
s
v= (1 + ) (4.30)
c s
1
1
(1 + ) 2 = 1 + (4.31)
s 2 s
1
v (s + ) (4.32)
c 2
T
Donde g = e es el factor de prdidas. El diagrama de simulacin
2
Dado que para la mayora de las teclas, slo se observan unas pocas
interacciones por colisin, este modelo computacional de piano alcanza un
gran nivel de realismo. El filtrado correspondiente al cuerpo del piano y a
la tabla de armona han sido reemplazados por una tabla de valores y el
martillo por uno o varios filtros de bajo orden que convierten el impulso de
interaccin en un pulso adecuado
5. El Sistema MIDI
Program Change
El mensaje de Program Change o Cambio de Programa es usado
para especificar el tipo de instrumento que debera ser usado para
reproducir sonidos en un canal dado. Este mensaje necesita solo un byte de
datos que especifican el nuevo nmero de canal. Se utiliza en pianos
electrnicos que permiten reproducir distintos tipos de sonidos piansticos
as como distintos instrumentos de teclado (clavicmbalo, rgano)
Control Change
Los mensajes de Control Change o cambio de control son usados
para controlar una amplia gama de funciones del generador de sonido,
Como el resto de los mensajes de canal, solo afectan al nmero de canal
indicado en el byte de estados. En estos mensajes, el byte de estado es
seguido por un byte de datos indicando el nmero de controlador y un
segundo byte que especifica el valor de control. El nmero de controlador
identifica que funcin del generador de sonido ser controlado por el
mensaje.
Bank Select
El nmero de controlador cero, se define como el selector de banco.
Esta funcin es usada en algunos sintetizadores, junto con el mensaje MIDI
de cambio de programa para aumentar el nmero de diferentes sonidos que
pueden ser seleccionados (puesto que dicho mensaje permite seleccionar
solamente entre 128 nmeros de programa posibles).
Mensajes de Sistema
Song Select
El mensaje Song Select se utiliza en secuenciadores MIDI que
pueden almacenar y reproducir un cierto nmero de canciones. Suele
utilizarse en pianos comerciales para almacenar canciones de muestra, que
puedan reproducirse con el fin de demostrar las cualidades tmbricas del
instrumento.
Tune Request
El mensaje Tune Request se utiliza para configurar la frecuencia de
los osciladores de un sintetizador analgico. No se utiliza con
sintetizadores digitales.
EOX
El mensaje EOX se utiliza como flag de fin de mensaje, para los
mensajes exclusivos del sistema.
Los mensajes en tiempo real son Timing Clock, Start, Continue, Stop,
Active Sensing y System Reset.
Timing Clock
El mensaje Timing Clock es el reloj maestro que establece el tempo
de la reproduccin de una secuencia. Este mensaje se enva 24 veces por
cuarto de nota.
Active Sensing
El Mensaje Active Sensing se utiliza para eliminar notas atrapadas
que pueden ocurrir si un cable MIDI es desconectado durante la
reproduccin de una secuencia MIDI. Sin este mensaje, si se interrumpe la
conexin, algunas notas podran reproducirse indefinidamente si se
recibiera un mensaje de Note On pero nunca se recibiera el correspondiente
mensaje de Note Off.
System Reset
El mensaje System Reset, se utiliza para resetear e inicializar
cualquier dispositivo que reciba el mensaje. Generalmente, este mensaje no
es enviado automticamente, sino que debe ser iniciado manualmente por
el usuario.
Estado de Ejecucin
Dado que los datos MIDI se transmiten en serie, es posible que los
eventos musicales que originalmente ocurran al mismo tiempo y deben
insertarse en el flujo de datos MIDI, no sean reproducidos exactamente en
el mismo tiempo. Con una tasa de transmisin de 31.25 Kbps y 10 bits
transmitidos por cada byte de datos MIDI, un mensaje de Note On o de
Note Off de 3 bytes tardara alrededor de 1 ms en transmitirse, lo cual es
suficientemente rpido para que los eventos se perciban como simultneos.
Sin embargo, para un nmero mayor de acontecimientos
simultneos, pudiera ocurrir que los retrasos introducidos por la
serializacin de esta informacin llegaran a ser apreciables. Para reducir la
cantidad de datos transmitidos en el flujo MIDI, se emplea una tcnica
denominada Running Status o Estado de Ejecucin.
Polifona
El trmino polifona de un generador de sonido se refiere a la
habilidad de reproducir ms de una nota al mismo tiempo. La polifona se
especifica generalmente mediante el nmero de notas o voces. Inicialmente,
la mayora de los sintetizadores eran monofnicos, lo que significa que
podan reproducir nicamente una nota a la vez. Los mdulos actuales
suele oscilar entre 16, 24 o 32 notas de polifona.
Sonidos
Los diferentes sonidos que un sintetizador puede generar son
llamados patches, programs o ms genricamente timbre. Los
sintetizadores programables pueden asignar nmeros de programa a cada
sonido. Por ejemplo, el mdulo de sonido de un piano comercial podra
usar el patch nmero 1 para sonidos de piano, el nmero 2 para
clavicmbalo, el nmero 3 para rgano La asociacin de cada nmero de
programa o match a cada sonido es a menudo denominada patch map
A travs de MIDI, un mensaje de cambio de programa, puede
utilizarse para indicar el cambio de sonido usado a un dispositivo
recibiendo en un canal concreto
Modo Multitmbrico
Se entiende por sintetizador, o generador de sonido multitmbrico,
aquel capaz de producir dos o ms sonidos de diferentes instrumentos
simultneamente. En los pianos comerciales, existe la posibilidad de
separar el teclado en dos reas, cada una de las cuales toca un instrumento
concreto (p.ej un bajo acstico en la regin inferior y un sonido de piano en
la regin superior). La polifona de un sintetizador multitmbrico se asigna
dinmicamente entre los diferentes timbres usados.
6.1. Reverberacin
Reflexin y Reverberacin
2
d
r = h +
2 2
(6.2)
2
2r d 1 2r d
M= g= = (6.3)
cT 1 d 2r
Otras implementaciones
(6.5)
V
d =4 (6.6)
S
Vibrato
y (t ) = x(t Dt ) (6.8)
La salida es ahora
y (t ) = x(t Dt ) = e j s ( t Dt ) (6.9)
d
l = s (1 Dt ) (6.10)
dt
d l
Dt = s (6.11)
dt s
v ls
1+
l = s c (6.12)
v sl
1
c
1 d
v ls = Dt (6.13)
c dt
Chorus
Figura 8.6. Forma de onda para la nota G4 obtenida por pitch shifting
A1 = 100% A2 = 50%
f c1 = 220 Hz f c 2 = 220 Hz
f m1 = 220 Hz f m 2 = 440 Hz
I 1 = 85 = 1.2 I 2 = 50 = 1.1
BIBLIOGRAFIA
APNDICE
Cortar.m
%Funcion utilizada para seleccionar una seccion concreta
% de una funcion utilizando el raton.
% Devuelve tanto el intervalo temporal seleccionado como los valores
function [tc,Yc]=cortar(Y,Fs)
Ts=1/Fs;
t=0:Ts:(length(Y)-1)*Ts;
plot(t,Y);
Ts=1/Fs;
p=ginput(2);
Yc=Y(round(p(1,1)/Ts):round(p(2,1)/Ts));
tc=round(p(1,1)/Ts)*Ts:Ts:round(p(2,1)/Ts)*Ts;
Despitch.m
% Funcion que implementa el desplazamiento de Pitch.
% El resultado es una seal YN con una frecuencia N veces
% superior a la seal Y
function YN=despitch(Y,N)
j=1;
i=1;
YN(j)=Y(i);
while(i<length(Y)-1)
i=i+N;
j=j+1;
n=floor(i);
f=i-n;
YN(j)=f*Y(n+1)+(1-f)*Y(n);
end
YN=YN';
Separa.m
% Funcion utilizada para separar la seccion permanente de la transitoria
% El usuario debe seleccionarlas con el raton asi como los periodos
% que se utilizaran para representarla
function [tFtran,Ftran,tFperm,Fperm,Ytran,Yperm]=separa(Y,Fs);
figure
[ttran,Ytran]=cortar(Y,Fs);
[tperm,Yperm]=cortar(Y,Fs);
[tFtran,Ftran]=cortar(Ytran,Fs);
[tFperm,Fperm]=cortar(Yperm,Fs);
tFtran=tFtran+ttran(1);
tFperm=tFperm+tperm(1);
figure(1);
Subplot(411);plot(ttran,Ytran);
Subplot(412);plot(tperm,Yperm);
Subplot(413);plot(tFtran,Ftran);
Subplot(414);plot(tFperm,Fperm);
Fftzoom.m
% Funcion que realiza el analisis frecuencial de las secciones
% transitoria y permanente que se seleccionan con la funcion separa
% El programa desplaza la fft para represantarla de -Pi a Pi
% y permite un zoom para representar de -Fmax a Fmax en lugar de -Fs/2 a
% Fs/2
function [Y1,Y2]=fftzoom(Y,Fs,Fmax);
[tFtran,Ftran,tFperm,Fperm,Ytran,Yperm]=separa(Y,Fs);
M1=length(Ftran);
M2=length(Fperm);
M=min([M1 M2]);
Ftran=Ftran(1:M);
tFtran=tFtran(1:M);
Fperm=Fperm(1:M);
tFperm=tFperm(1:M);
close all
figure(1)
y1=Ytran;
y2=Yperm;
Subplot(411);plot(tFtran,Ftran);
Subplot(412);plot(tFperm,Fperm);
N=2*length(Yperm);
Y1=abs(fft(y1,N));
Y1=Y1/max(Y1);
Y1t=[Y1(round(length(Y1)/2):length(Y1)); Y1(1:round(length(Y1)/2)-1)];
Y2=abs(fft(y2,N));
Y2=Y2/max(Y2);
Y2t=[Y2(round(length(Y2)/2:length(Y2))); Y2(1:round(length(Y2)/2)-1)];
F=-Fs/2:Fs/N:Fs/2-1/N;
Subplot(413);plot(F(round(length(F)/2)-
Fmax:round(length(F)/2)+Fmax),Y1t(round(length(Y1t)/2)-
Fmax:round(length(Y1t)/2)+Fmax));
Subplot(414);plot(F(round(length(F)/2)-
Fmax:round(length(F)/2)+Fmax),Y2t(round(length(Y2t)/2)-
Fmax:round(length(Y2t)/2)+Fmax));
AGRADECIMIENTOS