Primeras 26 reflexiones tempranas de una caja de zapatos

Download PDF

Una sala puede ser considerada a modo didáctico como una caja de zapatos de grandes dimensiones, en la cual se puede imaginar el fenómeno acústico producido al reflejarse la onda producida por una fuente emisora y que genera una serie de reflexiones acústicas que arriban en diferentes tiempo en otro punto de la caja de zapatos.

El fenómeno acústico en una caja de zapatos puede ser considerado como una casa de los espejos, donde en cada superficie se ve reflejada de manera infinita la fuente acústica.

A modo de análisis de la situación geométrica, se propone el siguiente desarrollo matemático y su implementación en código computacional OCTAVE / MATLAB que al considerar la distancia geométrica, en un ambiente 3D, de la fuente emisora y las fuentes virtuales que aparecen como consecuencia de la reflexión en esta casa de los espejos, al receptor dentro de la caja de zapatos, nos permite obtener los tiempos de arribo de las primeras 26 reflexiones.

Análisis geométrico:
Para este análisis consideramos un paralelepípedo el cual genera 26 reflexiones. El estudio se generaliza considerando la onda directa, por lo que obtendremos 27 eventos sonoros arribando a diferentes tiempos a nuestro punto receptor. La distancia geométrica de las fuentes virtuales se calculo utilizando el clásico Teorema de Pitágoras.

Definimos las siguientes variables
R=(Rx,Ry,Rz) que corresponde al vector posición del receptor
E=(Ex,Ey,Ez) que corresponde al vector posición del emisor
P=(Px,Py,Pz) que corresponde a las dimensiones de la caja de zapatos (sala)

Definimos los siguientes cambios de variable para simplicidad de los cálculos presentados finalmente.

Rx+Ex=Sx
Ry+Ey=Sy
Rz+Ez=Sz

Rx-Ex=Dx
Ry-Ey=Dy
Rz-Ez=Dz

2Px-Sx=Mx
2Py-Sy=My
2Pz-Sz=Mz

Sean entonces C1, C2 y C3 las curvas de nivel en el eje Z que defi nen los planos donde están contenidas las fuentes virtuales desde donde provienen las reflexiones.

reflexiones_acusticas

Desde C1 provienen las reflexiones desde abajo, desde C2 las que provienen a nivel medio y desde C3 las que provienen desde arriba. Para cada una de ellas definimos una matriz de 3×3 para asi obtener las primeras reflexiones.

Matriz C1

1
Matriz C2

2
Matriz C3

3

Implementación en OCTAVE / MATLAB (parcial utilizando valores constantes)

 

%===================== DEFINIMOS VARIABLES =======================
R=[1 1 1];%coordenadas de la posicion del receptor
E=[2 3 4];%coordenadas de la posicion del emisor
P=[30 30 30];%dimensiones de la pieza
v=340;%velocidad del sonido

%===================== CALCULAMOS TODAS LAS DISTANCIAS DE LAS FUENTES FANTASMAS =======================
Sx=R(1)+E(1);
Sy=R(2)+E(2);
Sz=R(3)+E(3);
Dx=R(1)-E(1);
Dy=R(2)-E(2);
Dz=R(3)-E(3);
Mx=2*P(1)-Sx;
My=2*P(2)-Sy;
Mz=2*P(3)-Sz;

matrizC1=[
sqrt(Sx^2+My^2+Sz^2) sqrt(Dx^2+My^2+Sz^2) sqrt(Mx^2+My^2+Sz^2);
sqrt(Sx^2+Dy^2+Sz^2) sqrt(Dx^2+Dy^2+Sz^2) sqrt(Mx^2+Dy^2+Sz^2);
sqrt(Sx^2+Sy^2+Sz^2) sqrt(Dx^2+Sy^2+Sz^2) sqrt(Mx^2+Sy^2+Sz^2)
];

matrizC2=[
sqrt(Sx^2+My^2+Dz^2) sqrt(Dx^2+My^2+Dz^2) sqrt(Mx^2+My^2+Dz^2);
sqrt(Sx^2+Dy^2+Dz^2) sqrt(Dx^2+Dy^2+Dz^2) sqrt(Mx^2+Dy^2+Dz^2);
sqrt(Sx^2+Sy^2+Dz^2) sqrt(Dx^2+Sy^2+Dz^2) sqrt(Mx^2+Sy^2+Dz^2)
];

matrizC3=[
sqrt(Sx^2+My^2+Mz^2) sqrt(Dx^2+My^2+Mz^2) sqrt(Mx^2+My^2+Mz^2);
sqrt(Sx^2+Dy^2+Mz^2) sqrt(Dx^2+Dy^2+Mz^2) sqrt(Mx^2+Dy^2+Mz^2);
sqrt(Sx^2+Sy^2+Mz^2) sqrt(Dx^2+Sy^2+Mz^2) sqrt(Mx^2+Sy^2+Mz^2)
];

matrizC1=(1/v)*matrizC1;
matrizC2=(1/v)*matrizC2;
matrizC3=(1/v)*matrizC3;

%===================== ORDENAMOS TODOS LOS ECOS DE MENOR A MAYOR EN UN UNICO VECTOR =======================

ecos=[matrizC1(:,1);matrizC1(:,2);matrizC1(:,3);matrizC2(:,1);matrizC2(:,2);matrizC2(:,3);matrizC3(:,1);matrizC3(:,2);matrizC3(:,3)];
la=length(ecos);
r=0;
for k=[1:1:la-1]
for j=[1:1:la-1-r]
if (ecos(j)>ecos(j+1))
aux=ecos(j);
ecos(j)=ecos(j+1);
ecos(j+1)=aux;
endif
end
r=r+1;
end

%===================== AGREGAMOS LOS ECOS =======================
a=wavread("2.wav");
la=length(a);
s=44100;
decaimiento=0.75;%consideramos que cada reflexion se atenua un 25%
ld=length(ecos);
mix=a;
at=a;
for j=[1:1:ld]
pmd=zeros(ecos(j)*s,1);
at=at*decaimiento;
md=[pmd;at];
lmd=length(md);
lmix=length(mix);
delta=lmd-lmix;
b=[mix;zeros(delta,1)];
mix=b+md;
end;
wavwrite(mix,s,"ecos.wav");

Cosas por hacer aun:
1. Implementar en el código la opción de dar como datos de entrada las dimensiones de la pieza (sala) y las posiciones del emisor y el receptor, para luego con los algoritmos matemáticos calculados, obtener las distancias de las fuentes virtuales, las cuales al multiplicarlas por la velocidad del sonido permitirán obtener los 27 tiempos de arribo correspondientes.
2. Implementar un código para ordenar de menor a mayor los 27 tiempos de arribo, ya que es requerimiento para la concatenación de los ecos y obtener el archivo con la mezcla final.

The following two tabs change content below.

LEONARDO PARADA VALENCIA

INGENIERO ACÚSTICO EXPERTO EN DISEÑO SONORO Y MÚSICA PARA VIDEOJUEGOS