Creacion de sonidos en MATLAB: Tonos puros + armonicos

Download PDF

El proceso de creacion de sonido mediante el uso de herramientas computacionales, se denomina sintesis de audio.

¿Como hacer un sonido en matlab?

A continuacion se muestran algunos ejemplos basicos para sintetizar sonidos mediante la suma de sucesivos tonos puros (sintesis aditiva).

Ejemplo 1: Tono puro de 500 Hz


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

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

duracion_segundos=2; %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];

x=[sin(b*t)];

wavplay(x,fs); %reproducir el sonido

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

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

stem(sub_t,sub_x); %graficamos

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

Ejemplo 2: Tono puro de 50 Hz + 8 armonicos

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

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

duracion_segundos=2; %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=8;

x=zeros(1,length(t));

for j=1:cantidad_de_armonicos
x=[sin(j*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_2'); %guardamos el sonido en .wav

sondo_2

The following two tabs change content below.

LEONARDO PARADA VALENCIA

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