Cad Para Electronica
Enviado por carloxfdo • 8 de Marzo de 2014 • 1.732 Palabras (7 Páginas) • 421 Visitas
PROCEDIMIENTO
Cada una de las notas musicales tiene una frecuencia determinada y es posible generar tonos musicales a partir de ellas, para poder reproducir esos tonos musicales en Matlab es necesario generar la onda a partir de las muestras de la señal seno como se muestra a continuación:
fm=22050 ; frecuencia de muestreo
t=0:1/fm:1; vector con instantes de muestreos a 1 segundo x=sin(2*pi*f*t); f es la frecuencia de la señal o tono a generar plot(t,X);
wavplay(x,fm); reproduce el tono definido.
1. Experimentalmente genere tonos para construir una señal audible armoniosa.
• Generar 6 tonos diferentes (consultar las frecuencias de cada nota musical) con tiempos de duración diferentes.
Un sonido no es más que una vibración del aire que nuestros oídos pueden captar. Un sonido que tiene un determinado tono, depende de la frecuencia a la cual vibra el aire. Las notas musicales son vibraciones de frecuencias determinadas. Por supuesto, en la creación de música intervienen muchos otros factores complejos, como por ejemplo, el timbre.
No obstante, una vibración sinusoidal a una frecuencia concreta, produce un sonido puro que nosotros percibimos como un pitido de un determinado tono.
En el sistema musical occidental, se ha acordado utilizar sólo unas frecuencias concretas, a las cuales llamamos notas.
Dividimos las posibles frecuencias en porciones que llamamos "octavas", y cada octava en 12 porciones que llamamos notas. Cada nota de una octava tiene exactamente la mitad de frecuencia que la misma nota en la octava superior.
El oído humano capta solamente frecuencias que estén por encima de los 20Hz y por debajo de los 20.000 (muy aproximadamente). Así pues, y con mucha suerte, sólo podemos oír unas 10 octavas como mucho, con doce notas cada una.
La nota La sirve como referencia para todas las demás. A menudo se denomina "nota de afinar". Se produce un La de afinar cuando el aire vibra 440 veces por segundo, es decir a
440 hertzios. Por convención, a la octava que contiene esta nota La se le suele considerar la tercera.
Hay otra nota La, de una "octava" superior (la cuarta octava) cuando el aire vibra a 880 hertzios, y otra más cuando vibra a 880*2 (quinta octava), y otra a 880*2*2 (sexta octava), etc., del mismo modo que hay un La que se produce cuando el aire vibra a 440/2 (segunda octava) y otra a 440/2/2 (primera octava).
Para hallar la frecuencia de una nota cualquiera mediante una expresión matemática, se suele coger una frecuencia de referencia, por ejemplo el La de afinar (440 Hertzios) y se multiplica por la raíz duodécima de 2 elevado al número de semitonos que separa el la de afinar de la nota que estamos buscando.
Por ejemplo, si buscamos el Do de la cuarta octava, está separado 3 semitonos por encima del La. Su frecuencia la podemos calcular multiplicando 440 por la raíz duodécima de 2 elevado a 3. Si buscásemos el Fa de la tercera octava, está cuatro semitonos por debajo del La. Los semitonos hacia abajo los consideraremos negativos. Así pues, su frecuencia se obtiene multiplicando 440 por la raíz duodécima de 2 elevado a -4.
Con carácter general, una nota n (n=1 para Do, n=2 para Do#... n=12 para Sí) de la octava o (o desde 1 hasta 8) tiene una frecuencia f (no) que podemos calcular de ésta manera:
Esta expresión puede ser difícil de codificar en algunos lenguajes de programación, ya que es muy probable que no dispongan de funciones matemáticas para hallar una raíz duodécima. Adaptarla un poco es muy sencillo, ya que la raíz duodécima de 2 se puede calcular como 2 elevado a 1/12, con lo que la expresión quedaría de ésta manera:
Aun así es posible que no podamos codificarla si no disponemos de una función que nos permita potencias de cualquier exponente. No obstante, tampoco supone problema. Todos los lenguajes que se precien disponen al menos de una función para hallar logaritmos (por ejemplo, naturales) y otra para hallar potencias de e (la base de los logaritmos naturales).
En la siguiente tabla se observan las frecuencias de las notas: Código del programa en Matlab fm=22050; % Frecuencia de muestreo t=0:1/fm:1; % Vector tiempo con intervalos f1=262; % Frecuencia de la nota Do f2=294; % Frecuencia de la nota Re f3=330; % Frecuencia de la nota Mi f4=349; % Frecuencia de la nota Fa f5=392; % Frecuencia de la nota Sol f6=440; % Frecuencia de la nota La f7=494; % Frecuencia de la nota Si x1=sin(2*pi*f1*t); % Señal seno de la nota Do x2=sin(2*pi*f2*t); % Señal seno de la nota Re x3=sin(2*pi*f3*t); % Señal seno de la nota Mi x4=sin(2*pi*f4*t); % Señal seno de la nota Fa x5=sin(2*pi*f5*t); % Señal seno de la nota Sol x6=sin(2*pi*f6*t); % Señal seno de la nota La x7=sin(2*pi*f7*t); % Señal seno de la nota Si wavplay(x1,fm) % Se reproduce la nota Do, luego Re…. pause(0.5) % con intervalos de 500ms wavplay(x2,fm) pause(0.5) wavplay(x3,fm) pause(0.5)
wavplay(x4,fm) pause(0.5) wavplay(x5,fm) pause(0.5) wavplay(x6,fm) pause (0.5) wavplay(x7,fm) pause (0.5) xt=x1+x2+x3+x4+x5+x6+x7; wavplay(xt,fm)
Código en MATLAB para las notas musicales visualizado en una sola pantalla con aumento de 0.5 segundo para audio entre nota y nota
*Visualización de las notas musicales D0, Re, Mi, Fa, Sol, La, en una misma
*pantalla con sus respectivas frecuencias, con un aumento en el audio de
*0.5 si por cada nota
Frecuencia para nota DO f=261.6
fm=22050; %Frecuencia de muestreo
f=261.6;
t=0:1/fm:1; %Vector con instantes de muestreos a 1 segundo
x=sin(2*pi*f*t); %f es la frecuencia de la señal o tono generar
wavplay(x,fm); %Produce el tono definido
T=1/f;
t=0:1*10^(-9):T; %Vector con instantes de muestreos a 1*10^(-9)segundos
x=sin(2*pi*f*t); %f es la frecuencia de la señal o tono generar
*Definir parámetros de pantalla
h=plot(t,x); %Manejador de función
title('SEÑAL AUDIO,Do,Re,Mi,Fa,Sol,La,Si')
xlabel('Tiempo (s)')
ylabel('Amplitud (V)')
grid on
set(h,'Color',[0 0 0]) %Color negro matrix rgb
hold on
Frecuencia para nota RE f=293.7
*fm=22050; %Frecuencia de muestreo
f=293.7;
t=0:1/fm:1.5; %Vector con instantes de muestreos a 1.5 segundos
x=sin(2*pi*f*t); %f es la frecuencia de la señal o tono generar
wavplay(x,fm); %Produce el tono definido
T=1/f;
t=0:1*10^(-9):T; %Vector con instantes de muestreos a 1*10^(-9)segundos
x=sin(2*pi*f*t); %f es la frecuencia de la señal o tono generar
*Definir parámetros de pantalla
h=plot(t,x); %Manejador de función
set(h,'Color',[0
...