Creación de sonidos en MATLAB: Combinación de sonidos

Download PDF

El método anteriormente expuesto para la creación de sonidos sinténticos, descrito en los post anteriores: Creación de sonidos en MATLAB: Algoritmos matemáticosCreación de sonidos en MATLAB: Tonos puros + armónicos, puede servir de base para la exploración de sonidos en el campo del diseño sonoro. En la época de los 80’s se utilizaron muchísimo sonidos que provenían de fuentes sintetizadoras y los productos finales que podemos apreciar en clásicos del cine y tv son resultado de la exploración y combinación de diversas fuentes y técnicas de síntesis.

En el siguiente ejemplo reutilizando el código de los mencionados posts anteriores, insertamos un ciclo for, a fin de repetir el proceso de creación del primer sonido y sumar otro a este. para ampliar el espectro armónico. En este caso lo ampliaremos una octava hacia abajo. El resultado obtenido resulta un sonido relacionado en términos  psicoacústicos a sonidos de series de aventuras espaciales, como startrek (serie de ciencia ficcion – sci fi – de los años 80).

Ejemplo 1: Combinando 2 sonidos

Pare este ejemplo construimos un sonido a partir de una frecuencia de 12000 Hz y le agregamos subtonos (ya que iran hacia abajo como se puede apreciar en las lineas de codigo 22 y 23), repetimos el proceso para una frecuencia mas baja (6000 Hz)  agregando otro ciclo for que repita el proceso alterando el valor de la frecuencia utilizada en el primer ciclo.

En la linea 23 donde se arma el archivo de audio,, este es multiplicado por el contador del ciclo elevado al cuadrado, esto a fin de que, a medida que se agregan frecuencias, estas tienen mayor peso en el componente espectral final (es por ello que comenzamos desde una frecuencia alta) y vamos agregando frecuencias mas bajas).


clear; %limpiamos listado de variables usadas
clc; %limpiamos pantalla

fs=44100; %definimos variable frecuencia de sampleo
f=12000; %definimos variable frecuecnia de nuestro sonido

duracion_segundos=10; %definimos la duracion de nuestro sonido

b=f*2*pi; %definimos variable b a utilizar en nuesta funcion a·sin(bt+c)
a=1; % a debe ser 1 para que la funcion no se distorcione al reproducirse
c=0;

t=[0:1/44100:duracion_segundos];

%%%%% para sumar armonicos

cantidad_de_armonicos=36;

x=zeros(1,length(t));
for i=1:2
for j=1:cantidad_de_armonicos
k=1/(i*j^(1/2)); %definimos k como el reciproco de la raiz de j
x=[i^2*j^2*sin(k*b*t)]+x;
end
end
x=x/max(x); % normalizamos el vector para garantizar amplitud 1

wavplay(x,fs); %reproducir el sonido

% para hacer un grafico de la onda de sonido
sub_t=(1:1000); % tomamos los 1000 primeros puntos del vector t

sub_x=x(1:1000); % tomamos los 1000 primeros puntos del vector x

stem(sub_t,sub_x); %graficamos

wavwrite(x,fs,'sonido_7'); %guardamos el sonido en .wav

sonido_7

 

The following two tabs change content below.

LEONARDO PARADA VALENCIA

INGENIERO ACÚSTICO Estudiante Magister en Gestión Ambiental Desarrollador de contenidos en www.ingenieriaacustica.cl EXPERTO EN RUIDO AMBIENTAL/OCUPACIONAL - DS38/11 Y PREXOR EXPERTO EN DISEÑO SONORO Y MÚSICA PARA VIDEOJUEGOS