Creación de sonidos en MATLAB: Algoritmos matemáticos

Download PDF

Crear sonidos basados en principios básicos de sintesis aditiva a través de un lenguaje de programación, nos brinda la posibilidad de configurar los parámetros para su síntesis basados en funciones matemáticas que determinen el valor de las variables, como por ejemplo la frecuencia del sonido. Modificando el codigo presentado Creacion de sonidos en MATLAB: Tonos puros + armonicos logramos que los armonicos agregados, usando el ciclo for, esten mas cerca (mayor densidad espectral), que en estricto rigor, se denominan sobretonos, pues no siempre corresponderan a un multiplo de la frecuencia fundamental, dependiendo de la funcion matematica asociada al algoritmo.

Ejemplo 1: Sonido con sobretonos armonicos e inarmonicos

Funcion Raiz Cuadrada

Para este caso los sobre tonos se calculan como la multiplicacion de la frecuencia fundamenta por la raiz cuadrada del contador correspondiente al ciclo for de nuestro codigo. Elegimos 36 sobretonos para asi agregar frecuencias no superiores al armonico numero 6

La raiz cuadrada para los primeros 36 numeros naturales puede ser vista en este archivo adjunto: serie_raiz_cuadrada

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

fs=44100; %definimos variable frecuencia de sampleo
f=200; %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 j=1:cantidad_de_armonicos
k=j^(1/2); %definimos k como la raiz de j para que la frecuencia agregada sea mas cercana
x=[sin(k*b*t)]+x;
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_3'); %guardamos el sonido en .wav

sonido_3

 

A partir de este codigo para creacion de archivos de audio .wav es posible obtener otros sonidos correspondientes a sobretonos correspondiente a raices de orden superior. A continuacion un playlist con ejemplos de raices de orden 3, 4 y 5.

 

The following two tabs change content below.

LEONARDO PARADA VALENCIA

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