Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Analizador de espectros
Integrantes:
Benitez Pablo A.
Carranza Rodrigo
Curaratti Nazareno J.
Docentes:
Ing. Poblete, Felipe.
Sr. Gonzlez, Mariano.
Julio de 2006
ndice General
Captulo 1
Introduccin general
>Introduccin...........................................................................................................
>Obtencin de datos y anlisis................................................................................
>Etapas para el anlisis............................................................................................
> Adquisicin.............................................................................................
> Medicin.................................................................................................
>Memoria..................................................................................................
>Presentacin............................................................................................
>Diagrama en bloques.............................................................................................
>Procesamiento de seales......................................................................................
>Aplicaciones comerciales......................................................................................
>Consultas................................................................................................................
>Materias Integradas .............................................................................................
I 1.
I 1.
I 1.
I 1.
I 1.
I 1.
I 1.
I 1.
I 1.
I 2.
I 2.
I 3.
I 3.
I 3.
Captulo 2
Sonido
>Introduccin...........................................................................................................
>Caractersticas fsicas............................................................................................
>Frecuencia................................................................................................
>Amplitud y volumen................................................................................
>Decibelio dB............................................................................................
II 1.
II 2.
II 2.
II 2.
II 3.
II 3.
II 4.
II 4.
II 4.
II 4.
II 5.
II 5.
II 5.
II 5.
II 6.
II 6.
II 6.
II 7.
II 7.
II 8.
II 8.
II 8.
II 9.
II 9.
II 10.
II 11.
II 11.
II 12.
Captulo 3
Ruido
>Introduccin. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ...... III 1.
>Ruido rosa. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ III 1.
>Ruido blanco. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ .....
>Contaminacin acstica. ........ ........ ........ ........ ........ ........ ........ ........ ........ ......
>Clasificacin. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ .....
>Bibliografa. .........................................................................................................
III 1.
III 1.
III 2.
III 2.
Captulo 4
Muestreo de seales
>Introduccin. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ......
>Representacin de una seal de tiempo continuo mediante sus muestras. ........ ..
>Muestreo con tren de impulsos. ........ ........ ........ ........ ........ ........ ........ ........ ....
>Muestreo con retenedor de orden cero. ........ ........ ........ ........ ........ ........ ........ .
>Bibliografa. .........................................................................................................
>Materia Integrada..................................................................................................
IV 1.
IV 1.
IV 2.
IV 4.
IV 4.
IV 4.
Captulo 5
Conversin de seales analgicas a digitales.
>Introduccin. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Digitalizacin del sonido: Velocidad de Muestreo y Cuantizacin. .... .... .... ....
>Ventajas del audio digital. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..
>Pasaje de una seal elctrica a una seal digital. .... .... .... .... .... .... .... .... .... ....
>Cantidad de sub intervalos en que se divide el rango til de la seal. .... .... .... ..
>Resolucin de un sistema de audio digital.... .... .... .... .... .... .... .... .... .... .... .... .
>Frecuencia de muestreo. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..
>Reconstruccin de la seal digitalizada. .... .... .... .... .... .... .... .... .... .... .... .... ...
>Relacin entre el ruido de digitalizacin y la resolucin. .... .... .... .... .... .... .... ..
>Dither. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .....
>Dither digital. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Reproduccin....... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..
>Procesamiento digital. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .....
>Bibliografa. .........................................................................................................
>Materia Integrada..................................................................................................
V 1.
V 1.
V 2.
V 2.
V 2.
V 2.
V 3.
V 3.
V 3.
V 4.
V 4.
V 4.
V 4.
V 5.
V 5.
Captulo6
Sntesis del sonido
>Introduccin. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Sintetizadores. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ...
>Osciladores. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..
>Filtros. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .
>Amplificadores. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .
>Procesamiento del sonido digitalizado. .... .... .... .... .... .... .... .... .... .... .... .... ....
>Aumento o disminucin de volumen. .... .... .... .... .... .... .... .... .... .... ...
>Filtrado. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ...
>Mezcla. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Cortado y pegado. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ...
>Procesamiento digital de seales. .... .... .... .... .... .... .... .... .... .... .... .... .... .... ...
>Filtro pasa altos. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .
>Filtro pasa bajos. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Eco. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Software de Edicin y reproduccin.... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Bibliografa. .........................................................................................................
VI 1.
VI 1.
VI 1.
VI 1.
VI 1.
VI 1.
VI 1.
VI 1.
VI 1.
VI 2 .
VI 2.
VI 2.
VI 2.
VI 2.
VI 2.
VI 2.
Captulo7
Tarjeta de sonido
>Introduccin. .................. .................. .................. .................. .................. .......... VII 1.
>Componentes fundamentales de una placa de sonido.................. .................. ..... VII 1.
>El muestreo.................. .................. .................. .................. ..................
VII 1.
VII 1.
VII 1.
VII 1.
VII 2.
VII 2.
VII 2.
VII 2.
VII 2.
VII 2.
VII 2.
VII 3.
VII 4.
VII 5.
VII 5.
Captulo8
DSP (Digital Signal Procesor)
>Introduccin. .............
>Procesador de sonido digital (DSP). .........
>El Chip sintetizador de FM. ..........
>Programacin del puerto MIDI para I/O. .........
VIII 1.
VIII 1.
VIII 2.
VIII 4.
VIII 4.
VIII 4.
VIII 5.
Captulo9
Formatos digitales
>Introduccin. .
>Almacenamiento. ..
IX 1.
IX 1.
IX 1.
IX 3.
IX 3.
IX 3.
IX 3.
IX 3.
IX 4.
IX 4.
IX 4.
Captulo 10
MCI de Windows
>Introduccin. .
>Comandos MCI Strings y Messages. .
>Comandos Strings. ..
>Comandos Messages. ..
>Descripcin de la macro
>Espera, Notificacin, y Banderas Prueba
X 1.
X 1.
X 1.
X 2.
X 2.
X 3.
X 3.
X 3.
X 3.
X 4.
X 4.
X 4.
X 5.
>Bandera de la Espera ..
>Bandera de Prueba ..
>Comandos de atajo y Variaciones ..
>Dispositivos MCI
>Reproduccin y Posicionamiento ..
>Tipos de dispositivos .
>Abriendo un dispositivo.
>Usando un seudnimo. .
>Ejecutando un Dispositivo .
>Grabacin ...
>Cerrando un Dispositivo
>La interfaz de mensajes de comandos desde el lenguaje C...
>Resumen del manejo de un dispositivo MCI. ..
>Limitaciones de los comandos MCI..
X 5.
X 5.
X 5.
X 5.
X 6.
X 6.
X 6.
X 7.
X 7.
X 8.
X 8.
X 8.
X 8.
X 8.
X 8.
X 9.
X 9.
X 9.
X 9.
X 9.
X 10.
X 10.
X 10.
X 10.
X 11.
X 11.
X 12.
Captulo 11
Programa de adquisicin
>Introduccin. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ...
>Programas bajo Windows.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Independencia de la mquina.... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Recursos.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..
>Ventanas.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..
>Eventos.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Proyectos.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ................
>Controles.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .
>Descripcin del Programa. .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..
>Ficheros de cabecera.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ...
>Declaracin del prototipo de las funciones. .... .... .... .... .... .... .... .... .... ..
>Declaracin de variables globales.... .... .... .... .... .... .... .... .... .... .... .... ...
>Funcin Win main.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..
>Declaracin.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ...
>Inicializacin.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .
>Bucle de mensajes.... .... .... .... .... .... .... .... .... .... .... .... .... .... ...
>El procedimiento de ventana.... .... .... .... .... .... .... .... .... .... .... .... .... .... .
>Manipulador de mensajes.... .... .... .... .... .... .... .... .... .... .... .... .
>Mens.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .
>Funciones de grabacin y reproduccin.... .... .... .... .... .... .... .... .... .... ....
>Funcin Grabar.... .... .... .... .... .... .... .... .... .... .... .... ...
>Funcin Reproducir.... .... .... .... .... .... .... .... .... .... .... .
>Funciones de dilogo.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
XI
1.
1.
1.
1.
1.
1.
2.
2.
2.
2.
3.
3.
4.
4.
4.
5.
5.
5.
6.
7.
7.
10.
11.
11.
12.
13.
>Ficheros de recursos.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Men.... .... .... .... .... .... .... .... .... .... .... .... .... .... .........
>Dilogos. .... .... .... .... .... .... .... .... .... .... .... .... .... .......
>Estructura del proyecto......... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Cabecera ids.h.... .... .... .... .... .... .... .... .... .... .... .... ....
>winMenu.c.... .... .... .... .... .... .... .... .... .... .... .... .... ....
>Recurso win003.rc.... .... .... .... .... .... .... .... .... .... .... ...
>Manejo de la aplicacin.. .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
XI
XI
XI
XI
XI
XI
XI
XI
13.
14.
14.
14.
15.
15.
15.
17.
Captulo 12
Transformadas de Fourier y la DFT.
>Introduccin.........................................................................................................
>Clases CT y DT de mtodos de Fourier...............................................................
>Transformada clsica de Fourier para seales de tiempo continuo......................
>Definicin (CTFT)...................................................................
>El espectro de Fourier del modelo de muestreo de tiempo contino. ..................
>La transformada de Fourier de tiempo discreto....................................................
XII 1.
XII 1.
XII 2.
XII 2.
XII 2.
XII 2.
XII 3.
XII 3.
Captulo 13
Anlisis de espectro con MATLAB.
>Introduccin......................................................................................................... ...
>Procesamiento.m............................................................... .....................................
>En tiempo continuo...................... ..........................................................................
>En tiempo Discreto. .................. .............................................................................
>Espectro continuo.................................................... ...............................................
>Espectro discreto.....................................................................................................
>Bibliografa.......................................................... ...................................................
XIII 1.
XIII 2.
XIII 3.
XIII 3.
XIII 4.
XIII 5.
XIII 5.
Apndice A
Cdigo fuente del programa.
>winmenu.c......................................................................................................... ...
>Recurso win003.rc........................................................... ....................................
A 1.
A 15.
Captulo 1
Introduccin general
Introduccin.
En este apartado se presentaran los componentes fundamentales del proyecto los cuales sern tratados con
profundidad en los siguientes captulos.
El analizador de espectros aqu tratado consiste en tomar una seal cualquiera y obtener su contenido
frecuencial. Dicho de otro modo se representaran grficamente las amplitudes de cada una de las armnicas
que componen la seal, utilizando para ello una PC.
Etapa de entrada.
Adaptador de nivel.
Adquisicin.
Medicin.
Memoria.
Presentacin.
Etapa de entrada:
Es la encargada de impedir el paso de seales indeseables y proteger al dispositivo en caso de sobre tensin o
algn otra anomala.
Adaptador de nivel:
Consiste en variar la ganancia de un amplificador con el objetivo de obtener una seal con un nivel constante
de amplitud para que los datos obtenidos en la adquisicin no se modifiquen constantemente con cualquier
variacin de la amplitud de la seal de entrada.
Adquisicin:
Consiste en tomar los datos que luego sern procesados.
Medicin:
Para realizar la medicin o sea interpretar los datos obtenidos es importante conocer el rango de frecuencias
en el cual se est realizando la adquisicin de estos datos, es decir la frecuencia mnima y mxima de
muestreo, que en este caso se encuentra en 50Hz y 50kHz, rango que comprende el espectro de audicin
humana.
Memoria:
Es la encargada de almacenar los datos obtenidos de la adquisicin, para ello se usa la memoria RAM de la
PC.
Presentacin:
Por medio de un programa poder visualizar los datos obtenidos y procesados.
I - 1
Diagrama en bloques.
La etapa de adquisicin y filtrado es realizada por medio de una placa de sonido la cual posee un DSP y un
filtro pasa bajos.
La adquisicin se realiza despus de que la seal fue filtrada por el filtro pasa bajos, el cual evita el paso de
seales de alta frecuencia que no estn en el rango de medicin. La seal debe ser muestreada a una razn de
muestreo determinada.
Estas acciones la ejecuta la placa de sonido ya que posee el filtro pasa bajos y realiza el muestreo de la seal a
una frecuencia de muestreo de hasta 44,1 Khz a 16 bits.
Los datos obtenidos del muestreo se almacenan en la memoria RAM de la PC, luego, estos datos, son usados
por el software para realizar el procesamiento de dichos datos.
El procesamiento consiste en obtener las componentes frecuenciales de la seal muestreada.
Procesamiento de seales
El procesamiento de la seal se puede realizar de dos formas:
Anlisis mediante Transformada Rpida de Fourier.
Es un anlisis de banda angosta que se aplica sobre cada seal muestreada. Para ello se debe segmentar
los datos muestreados en varias ventanas, luego ponderar cada ventana definida, una ves realizado este
proceso se aplica el algoritmo de la Transformada Rpida de Fourier a cada ventana previamente
ponderada y se obtienen los espectros de todas las ventanas y finalmente la promediacin del los
espectros hallado con uno anteriormente calculado.
Anlisis mediante Filtros Digitales.
Para hacer el anlisis de banda ancha por octavas tercio de octavas la cual es mayormente usado en
Audio y Acstica. Consiste en pasar el segmento de datos muestreados a travs de un banco de filtros
pasabanda con frecuencia centrales y ancho de banda estandarizados ( 37.5 Hz, 63 Hz, 125 Hz, 250 Hz,
... frecuencias centrales de los filtros por octava ). A la salida de cada filtro se obtendr una seal
filtrada, a la cual se le halla su potencia elctrica, agrupando todas las potencias de las seales
obtenidas a la salida de cada filtro, se consigue un espectro de potencia que refleja la distribucin
espectral de la seal muestreada. Para hacer el anlisis de una seal en la banda de audio se requiere 10
filtros pasabanda analgicos por octavas 30 filtros pasa banda analgicos por 1/3 de octava, pero
usando tcnicas de procesamiento se consigue realizar el anlisis por octava con slo un filtro digital
pasabanda slo 3 filtros por 1/3 de octava.
I - 2
Aplicaciones comerciales:
El analizador de espectros puede ser usado para variadas aplicaciones tanto en ambientes industriales como
tambin aplicaciones didcticas, algunas de estas aplicaciones son las siguientes:
Encontrar las respuestas de los filtros.
Medicin de equipos de Audio.
Medicin de parmetros acsticos.
Ecualizacin de salas acsticas.
Anlisis modal de estructuras.
Anlisis de ruidos.
Consultas
Al comienzo de nuestro proyecto fue de mucha importancia obtener informacin de los distintos mtodos para
el anlisis de espectros, para ello se realizaron consultas al Ing. Franzini Hugo profesor de la ctedra
Comunicaciones I, ya que dicha materia trata el tema de transformada de Fourier; y al Ing. Culasso Vctor
profesor de la ctedra Medidas electrnica II, en dicha materia se trata el tema anlisis de espectros.
La consulta a los profesores antes mencionados nos llevo a realizar el proyecto tomando como
fundamento un anlisis de espectro digital.
En los captulos posteriores se nombran las consultas realizadas y la bibliografa utilizada para cada
tema.
Materias Integradas.
Informtica II, Anlisis de seales y sistemas, Comunicaciones I, Tcnicas digitales III, Medidas electrnicas
II.
I - 3
Captulo 2
Sonido
Introduccin
El Sonido es un fenmeno fsico que percibimos al producirse una perturbacin en el medio en el cual
estamos, son ondas que en este caso, se propagan por aire, slidos o lquidos.
El cuerpo humano percibe el sonido como un cambio en la presin del aire en el tmpano. De este modo, por
ejemplo: si alguien aplaude, ese aplauso desplaza aire que hace vibrar a las sensibles membranas de nuestros
odos, esa vibracin es decodificada por el cerebro como sonido. Es una forma de energa mecnica que se
representa por una onda sinusoidal que muestra vibraciones a lo largo del tiempo.
En los seres humanos, esto ocurre siempre que una vibracin con frecuencia comprendida entre unos 15 y
20.000 hercios llega al odo interno. El hercio (Hz) es una unidad de frecuencia que corresponde a un ciclo
por segundo. Estas vibraciones llegan al odo interno transmitidas a travs del aire, y a veces se restringe el
trmino sonido a la transmisin en este medio. Sin embargo, en la fsica moderna se suele extender el
trmino a vibraciones similares en medios lquidos o slidos. Los sonidos con frecuencias superiores a unos
20.000 Hz se denominan ultrasonidos.
En general, las ondas pueden propagarse de forma transversal o longitudinal. En ambos casos, slo la
energa y la cantidad de movimiento del movimiento ondulatorio se propagan en el medio; ninguna
parte del propio medio se mueve fsicamente a una gran distancia. Por ejemplo, imaginemos que
atamos firmemente una cuerda a un poste por un extremo, la estiramos sin tensarla del todo y
sacudimos el otro extremo. Una onda se desplazar por la cuerda hacia el poste, donde se reflejar y
volver hacia la mano. En realidad, ninguna parte de la cuerda se mueve longitudinalmente hacia el
poste, pero todas las partes de la cuerda se mueven transversalmente. Este tipo de movimiento
ondulatorio se denomina onda transversal. Del mismo modo, si tiramos una piedra a un estanque, una
serie de ondas transversales se propaga desde el punto de impacto. Un corcho que flote cerca de dicho
punto se mover hacia arriba y hacia abajo, es decir, de forma transversal a la direccin del
movimiento ondulatorio, pero apenas mostrar movimiento longitudinal. En cambio, una onda de
sonido es una onda longitudinal. A medida que la energa del movimiento ondulatorio se propaga
alejndose del centro de la perturbacin, las molculas de aire individuales que transmiten el sonido se
mueven hacia delante y hacia atrs, de forma paralela a la direccin del movimiento ondulatorio. Por
tanto, una onda de sonido es una serie de compresiones y enrarecimientos sucesivos del aire. Cada
molcula individual transmite la energa a las molculas vecinas, pero una vez que pasa la onda de
sonido, las molculas permanecen ms o menos en la misma posicin.
Caractersticas fsicas
Cualquier sonido sencillo, como una nota musical, puede describirse en su totalidad especificando tres
caractersticas de su percepcin: el tono, la intensidad y el timbre. Estas caractersticas corresponden
exactamente a tres caractersticas fsicas: la frecuencia, la amplitud y la composicin armnica o forma
de onda. El ruido es un sonido complejo, una mezcla de diferentes frecuencias o notas sin relacin
armnica.
II - 1
Frecuencia
Percibimos la frecuencia de los sonidos como tonos ms graves o ms agudos. La frecuencia es el nmero de
ciclos (oscilaciones) que una onda sonora efecta en un tiempo dado; se mide en hercios (ciclos por segundo).
Existen distintos mtodos para producir sonido de una frecuencia deseada. Por ejemplo, un sonido de
440 Hz puede crearse alimentando un altavoz con un oscilador sintonizado a esa frecuencia. Tambin
puede interrumpirse un chorro de aire mediante una rueda dentada con 44 dientes que gire a 10
revoluciones por segundo; este mtodo se emplea en las sirenas. Los sonidos de un altavoz y una sirena
de la misma frecuencia tendrn un timbre muy diferente, pero su tono ser el mismo, equivalente al la
situado sobre el do central en un piano. El siguiente la del piano, la nota situada una octava por encima,
tiene una frecuencia de 880 Hz. Las notas situadas una y dos octavas por debajo tienen frecuencias de
220 y 110 Hz respectivamente. Por definicin, una octava es el intervalo entre dos notas cuyas
frecuencias tienen una relacin de uno a dos.
Una ley fundamental de la armona afirma que dos notas separadas por una octava producen una
combinacin eufnica cuando suenan simultneamente. Cuando el intervalo es de una quinta o de una
tercera mayor, la combinacin es progresivamente menos eufnica. En fsica, un intervalo de una
quinta implica que la relacin de las frecuencias de ambas notas es de tres a dos; en una tercera mayor,
la relacin es de cinco a cuatro. La ley de la armona afirma que dos o ms notas producen un sonido
eufnico al sonar de forma simultnea si la relacin entre sus frecuencias corresponde a nmeros
enteros pequeos; si las frecuencias no presentan dichas relaciones, se produce una disonancia.
Amplitud y Volumen.
La amplitud de una onda de sonido es el grado de movimiento de las molculas de aire en la onda, que
corresponde a la intensidad del enrarecimiento y compresin que la acompaan. Cuanto mayor es la amplitud
de la onda, ms intensamente golpean las molculas el tmpano y ms fuerte es el sonido percibido. La
amplitud de una onda de sonido puede expresarse en unidades absolutas midiendo la distancia de
desplazamiento de las molculas del aire, o la diferencia de presiones entre la compresin y el enrarecimiento,
o la energa transportada. Por ejemplo, la voz normal presenta una potencia de sonido de aproximadamente
una cienmilsima de vatio. Sin embargo, todas esas medidas son muy difciles de realizar, y la intensidad de
los sonidos suele expresarse comparndolos con un sonido patrn; en ese caso, la intensidad se expresa en
decibelios.
II - 2
Decibelio dB
El decibelio es una unidad logartmica de medida utilizada en diferentes disciplinas de la ciencia. En
todos los casos se usa para comparar una cantidad con otra llamada de referencia. Normalmente el
valor tomado como referencia es siempre el menor valor de la cantidad. En algunos casos puede ser un
valor promediado aproximado. En Acstica la mayora de las veces el decibelio se utiliza para
comparar la presin sonora, en el aire, con una presin de referencia. Este nivel de referencia tomado
en Acstica, es una aproximacin al nivel de presin mnimo que hace que nuestro odo sea capaz de
percibirlo. El nivel de referencia varia lgicamente segn el tipo de medida que estemos realizando. No
es el mismo nivel de referencia para la presin acstica, que para la intensidad acstica o para la
potencia acstica. A continuacin se dan los valores de referencia.
Nivel de Referencia para la Presin Sonora (en el aire) = 0.00002 = 2E-5 Pa (rms)
Nivel de Referencia para la Intensidad Sonora ( en el aire) = 0.000000000001 = 1E-12 w/m^2
Nivel de Referencia para la Potencia Sonora (en el aire) = 0.00000000001 = 1E-12 w
Como su nombre indica el decibelio es la dcima parte del Bel. El Bel es el logaritmo en base 10 de la
relacin de dos potencias o intensidades. No obstante esta unidad resulta demasiado grande por lo que se ha
normalizado el uso de la dcima parte del Bel, siendo el decibel o decibelio. La formula para su aplicacin es
la siguiente, partiendo que la intensidad acstica en el campo lejano es proporcional al cuadrado de la presin
acstica, se define el nivel de presin sonora como:
LP = 10 log
P2
P
= 20 log
PR
PR
Siendo Lp = Nivel de Presin sonora; p la presin medida; pr la presin de referencia (2E-5 Pa). Como es
fcil ver el nivel de referencia siempre se corresponde con el nivel de 0 dB:
LP = 20 log
0,00002
= 20 log 1 = 0dB
0,00002
Por la tanto en 0 dB tenemos el umbral de audicin del odo humano, se supone que no es posible or
por debajo de este nivel, o sea variaciones de nivel en la presin del aire inferiores a 0,00002 pascal.
La razn por la que se utiliza el decibelio es que si no, tendramos que estar manejando nmeros o muy
pequeos o excesivamente grandes, con lo que la posibilidad de error seria muy grande al hacer
clculos. Adems tambin hay que tener en cuenta que el comportamiento del odo humano esta ms
cerca de una funcin logartmica que de una lineal, ya que no percibe la misma variacin de nivel en las
diferentes escalas de nivel, ni en las diferentes bandas de frecuencias.
II - 3
presiones que se generan durante un tiempo determinado (Leq X) siendo X = 1 minuto en nuestro caso, el
valor que nos da al finalizar el minuto de medida es un valor en dB que equivaldra al de una seal de valor
continuo durante todo el minuto y que utilizara la misma energa que se ha medido durante el minuto. Hay
que observar que en una medida de un minuto los valores varan y si se quiere determinar un valor medio de
ruido hay que hacerlo con la funcin Leq, de otra forma se obtendrn valores errneos puesto que podemos
tener valores de pico durante un instante y no ser representativos del nivel de ruido normal que se esta
intentando determinar.
El dBA o la ponderacin -AEn el punto anterior hemos visto que el dB es un valor lineal, quiere decir que los valores medidos son
los valores tomados como validos sin que sufran ninguna alteracin. Si los valores de presin acstica
los medimos de esta forma, linealmente, aun siendo cierta dicha medida, tendr poco valor en cuanto a
la percepcin del odio humano. El odo no se comporta igual para el mismo nivel de presin en
diferentes frecuencias. Por ejemplo tomemos un sonido lineal en toda la banda de 20 Hz a 20 kHz
tenemos en todas las bandas un nivel de 30 dB, si nuestro odo fuese lineal oiramos los mismo o mejor
con la misma intensidad auditiva las frecuencias mas bajas, que las medias y que las agudas. Sin
embargo esto no es cierto el odo humano tiene una menor sensibilidad en las frecuencias mas graves, y
en las mas agudas frente a las medias. Lo que mas omos por tanto son las frecuencias medias, y las que
menos las mas graves seguidas de las ms agudas.
Como vemos es necesario encontrar una forma de ajustar los niveles de dB que hemos medido con la
percepcin que el odo tiene de los mismos segn cada frecuencia. Esta correccin se realiza ponderando los
dB medidos mediante una tabla de ponderacin ya especificada y que se llama tabla "A". Los decibelios ya
ponderados en "A" se representan como dBA y los no ponderados, llamados lineales, como dB.
Por ejemplo si en una frecuencia de 100 Hz hemos medido 80 dB, al ponderarlo pasaran a ser 60,9 dBA, esto
quiere decir que un nivel de presin sonora de 80 dB en una frecuencia de 100 Hz es oda por nuestro sistema
de audicin como si realmente tuviese 60,9 dBA y no 80 dB.
dB1
10
+ 10
dB2
10
La suma de dos dB nunca puede ser ms de 3 dB ms que el mayor de los dos. Si la diferencia que hay entre
los dos valores a sumar es mayor de 10 dB la suma no tiene valor practico y se toma el valor del mayor de los
dos. Por ejemplo si sumamos 20 dB + 10 dB el resultado ser igual a 20 dB (aproximado). Solamente son
significativos para la suma los valores que tienen una diferencia menor a 10 dB.
II - 4
el ruido de las olas en la costa a unos 40 dB. La escala de sensacin sonora es logartmica, lo que
significa que un aumento de 10 dB corresponde a una intensidad 10 veces mayor: por ejemplo, el ruido
de las olas en la costa es 1.000 veces ms intenso que un susurro, lo que equivale a un aumento de 30
dB.
La distancia a la que se puede or un sonido depende de su intensidad, que es el flujo medio de energa
por unidad de rea perpendicular a la direccin de propagacin. En el caso de ondas esfricas que se
propagan desde una fuente puntual, la intensidad es inversamente proporcional al cuadrado de la
distancia, suponiendo que no se produzca ninguna prdida de energa debido a la viscosidad, la
conduccin trmica u otros efectos de absorcin. Por ejemplo, en un medio perfectamente homogneo,
un sonido ser nueve veces ms intenso a una distancia de 100 metros que a una distancia de 300
metros. En la propagacin real del sonido en la atmsfera, los cambios de propiedades fsicas del aire
como la temperatura, presin o humedad producen la amortiguacin y dispersin de las ondas sonoras,
por lo que generalmente la ley del inverso del cuadrado no se puede aplicar a las medidas directas de la
intensidad del sonido.
Tiempo de Reverberacin
El Tiempo de Reverberacin RT, es el tiempo que tarda una seal, desde que esta deja de sonar, en atenuarse
un nivel de 60 dB. Para realizar la medida se genera un ruido y se mide a partir de que este deja de sonar,
entonces se determina el tiempo que tarda en atenuarse 60 dB.
El Tiempo de Reverberacin se mide de forma frecuencial, esto es, un local no tiene el mismo RT en 200
Hz que en 4 kHz. Ello es debido a que el RT viene determinado por el Volumen de la sala, y por los
coeficientes de absorcin de sus superficies, o si se prefiere por las superficies con un coeficiente de
absorcin determinado. Como los coeficientes de absorcin de los diferentes materiales que componen
cualquier local no son iguales para todas las frecuencias, las reflexiones generadas en el interior del
local sern diferentes para cada frecuencia y por lo tanto el RT del local es diferente segn las
frecuencias.
Para calcular la RT de un local sin realizar mediciones se puede utilizar la formula de Sabine:
V
RT60 = 0,163
A
V = Volumen de la sala en m3 y A = Superficie de Absorcin en m2
Como norma cuanto mayor es el local mayor es el RT. Si los materiales que lo componen internamente son
poco absorbentes el RT tambin aumentara.
II - 5
El valor de RT es muy importante si se quiere conseguir buenos niveles de inteligibilidad dentro de los
locales.
Timbre.
El timbre es la caracterstica del sonido que nos permite distinguir los tonos producidos por
instrumentos distintos aunque las ondas sonoras tengan la misma amplitud y frecuencia. Los armnicos
son componentes adicionales de la onda que vibran con mltiplos enteros de la frecuencia principal y
dan lugar a diferencias de timbre. El odo distingue por su timbre la misma nota producida por un
diapasn, un violn o un piano.
Si se toca el la situado sobre el do central en un violn, un piano y un diapasn, con la misma
intensidad en los tres casos, los sonidos son idnticos en frecuencia y amplitud, pero muy diferentes en
timbre. De las tres fuentes, el diapasn es el que produce el tono ms sencillo, que en este caso est
formado casi exclusivamente por vibraciones con frecuencias de 440 Hz. Debido a las propiedades
acsticas del odo y las propiedades de resonancia de su membrana vibrante, es dudoso que un tono
puro llegue al mecanismo interno del odo sin sufrir cambios. La componente principal de la nota
producida por el piano o el violn tambin tiene una frecuencia de 440 Hz. Sin embargo, esas notas
tambin contienen componentes con frecuencias que son mltiplos exactos de 440 Hz, los llamados
tonos secundarios, como 880, 1.320 o 1.760 Hz. Las intensidades concretas de esas otras componentes,
los llamados armnicos, determinan el timbre de la nota.
II - 6
II - 7
superficies del local no se comportan por igual en todo el espectro sonoro, y por tanto los coeficientes de
absorcin de cada superficie de un mismo material varia segn la frecuencia. Conociendo el tiempo de
reverberacin de un local podemos saber como se comportara el mismo en diferentes aplicaciones. Cuando el
tiempo de reverberacin alcanza valores muy altos con respecto al sonido directo, puede ocurrir un
enmascaramiento de este y se puede perder la capacidad de entender la informacin contenida en el mensaje
que se percibe.
La resonancia se ocasiona cuando un cuerpo entra en vibracin por simpata con una onda sonora que incide
sobre el y coincide su frecuencia con la frecuencia de oscilacin del cuerpo o esta es mltiplo entero de la
frecuencia de la onda que le incide.
Sensacin de tono
Si se practica una audiometra a una persona joven normal, se comprueba que su odo es sensible a
todos los sonidos entre 15-20 hercios y 15.000-20.000 hercios. El odo de las personas mayores es menos
agudo, sobre todo en las frecuencias ms elevadas. El odo es especialmente sensible en la gama que va
desde el la situado por encima del do central hasta el la que est cuatro octavas por encima; en
esa zona, una persona puede percibir un sonido cientos de veces ms dbil que una octava por encima o
dos octavas por debajo. El grado en que un odo sensible puede distinguir entre dos notas puras que
difieran ligeramente en intensidad o frecuencia vara en los diferentes rangos de intensidad y
frecuencia de los tonos. En sonidos de intensidad moderada situados en el rango de frecuencia para el
que el odo es ms sensible (entre 1.000 y 2.000 Hz aproximadamente), es posible distinguir una
diferencia de intensidad de un 20% (1 decibelio, o dB) y una diferencia en frecuencia de un 0,33%
(alrededor de una vigsima de nota). En este mismo rango, la diferencia entre el sonido ms tenue que
puede orse y el sonido ms fuerte que puede distinguirse como tal sonido (los sonidos ms fuertes se
sienten, o perciben, como estmulos dolorosos) es de unos 120 decibelios: una diferencia de intensidad
de aproximadamente un billn de veces.
Todas estas pruebas de sensibilidad se refieren a tonos puros, como los producidos por un oscilador
electrnico. Incluso para esos tonos puros, el odo es imperfecto. Dos notas con frecuencia idntica pero
una gran diferencia de intensidad pueden aparentar una ligera diferencia de tono. Ms importante
resulta la diferencia en las intensidades relativas aparentes en las distintas frecuencias. A intensidades
altas, el odo es aproximadamente igual de sensible a la mayora de las frecuencias, pero a bajas
intensidades el odo es mucho ms sensible a las frecuencias medias que a las extremas. Por tanto, un
equipo de reproduccin de sonido que funciona perfectamente parecer no reproducir las notas ms
graves y agudas si se reduce mucho la intensidad.
El efecto Doppler
El efecto Doppler se origina cuando hay un movimiento relativo entre la fuente sonora y el oyente cuando
cualquiera de los dos se mueven con respecto al medio en el que las ondas se propagan. El resultado es la
aparente variacin de la altura del sonido. Existe una variacin en la frecuencia que percibimos con la
frecuencia que la fuente origina.
II - 8
Para entenderlo mejor supongamos que estamos parados en el anden de una estacin, a lo lejos un tren viene a
gran velocidad con la sirena accionada, mientras el tren este lejos de nosotros oiremos el silbido de la sirena
como una frecuencia determinada, cuando el tren pase delante nuestro y siga su camino, el sonido de la sirena
cambia con respecto al estbamos oyendo y con respecto al que vamos a or una vez que el tren nos rebasa y
sigue su camino.
La frecuencia que aparente se puede determinar segn las siguientes frmulas:
Fuente mvil
fx = (c/(c-u))fs
Receptor en movimiento:
fx = ((c-v)/c)fs
Ambos en movimiento:
fx = ((c-v)/(c-u))fs
fx = Frecuencia aparente
c = Velocidad del sonido
v = Velocidad del observador
u = Velocidad de la fuente
fs = Frecuencia de la fuente
II - 9
Cuando se necesitan filtros de mayor precisin, de un ancho de banda mas estrecho, se puede dividir la octava
en valores mas pequeos, por ejemplo: la media octava divide cada octava en dos, y por tanto tendremos el
doble de puntos que en una octava, siguiendo con el ejemplo empleado en una octava tendramos: 16 Hz 22,4 Hz - 31,5 Hz - 45 Hz - 63 Hz - 90 Hz - 125 Hz - 180 Hz - 250 Hz - 355 Hz - 500 Hz - 710 Hz - 1kHz 1,4 kHz - 2 kHz - 2,8 kHz - 4 kHz - 5,6 kHz - 8 kHz - 11,2 kHz - 16 kHz.
En el caso de un tercio de octava, cada intervalo de la octava se divide en tres partes con lo que
tendremos tres veces mas de filtros para poder ajustar, quedando los cortes como siguen : 16 Hz - 20
Hz - 25 Hz - 31,5 Hz - 40 Hz - 50 Hz - 63 Hz - 80 Hz - 100 Hz - 125 Hz - 160 Hz - 200 Hz - 250 Hz - 315
Hz - 400 Hz - 500 Hz - 630 Hz - 800 Hz - 1 kHz - 1,25 kHz - 1,6 kHz - 2 kHz - 2,5 kHz - 3,15 kHz - 4 kHz
- 5 kHz - 6,3 kHz - 8 kHz - 10 kHz - 12,5 kHz - 16 kHz
II - 10
Si ahora con el mismo valor de la proporcin (1,56) colocamos el filtro en la frecuencia central de 200 Hz en
lugar de los 100 Hz de antes, veremos que la proporcin se mantiene pero el ancho de banda aumenta justo al
doble:
f2/f1 = 250/160 = 1,56
f2-f1 = 250 - 160 = 90 Hz
Cada vez que subamos la frecuencia central aumentara el ancho de banda del filtro en la proporcin expresada
(1 octava =2 y 1/3 octava = 2^(1/3)). Cada vez que doblamos la frecuencia se dobla el ancho de banda del
filtro. Por lo tanto este tipo de filtros resultan mas precisos en las frecuencias bajas que en las altas, ya que en
frecuencias como 8 kHz el ancho de banda aumenta hasta 3.700 Hz mientras que como hemos visto para el
mismo filtro en la frecuencia de 100 Hz tiene un ancho de banda de 45 Hz.
Los filtros proporcionales con resoluciones de octava, tercio etc son los mas utilizados tanto en
analizadores como en ecualizadores para fines musicales y acsticos.
Micrfono
El micrfono es dispositivo que se utiliza para transformar la energa del sonido en energa elctrica,
durante el proceso de grabacin y reproduccin de sonido. Los micrfonos constituyen un elemento
esencial en muchos tipos de sistemas de comunicaciones y de instrumentos de medida de sonido y ruido.
El inventor Alexander Graham Bell cre en 1876 el primer micrfono durante la construccin del
telfono.
La variante ms sencilla de los telfonos modernos es el micrfono de carbn, utilizado en los telfonos.
Est compuesto por un disco metlico relleno de grnulos de carbn, recubierto por un diafragma
metlico mvil. El disco y el diafragma disponen de unos cables que van conectados a un circuito
elctrico, de forma que a travs de los grnulos de carbn pasa una corriente elctrica. Las ondas
sonoras hacen vibrar el diafragma, alterando la presin sobre los grnulos de carbn. La resistencia
elctrica de los grnulos vara con la presin, haciendo que la corriente se modifique en el circuito con
las vibraciones del diafragma. La corriente puede activar un telfono cercano o se puede amplificar y
transmitir hasta un receptor remoto. La amplificacin de las variaciones de la corriente se puede
utilizar tambin para modular un transmisor de radio.
Otra variante muy corriente, el micrfono de cristal, emplea cristales piezoelctricos, en los que se
origina un voltaje entre las dos caras del cristal cuando se le aplica una presin. En este tipo de
II - 11
micrfono las ondas sonoras hacen vibrar un diafragma que a su vez modifica la presin sobre un
cristal piezoelctrico, lo cual genera un pequeo voltaje que ms tarde se amplifica.
Entre los micrfonos dinmicos se encuentran los micrfonos de cinta y los de bobina mvil. Los
primeros llevan una fina cinta metlica adherida al diafragma, colocado en el seno de un campo
magntico. Cuando la onda sonora incide sobre el diafragma y hace vibrar la cinta, en sta se genera un
pequeo voltaje por induccin electromagntica. El funcionamiento del micrfono de bobina mvil se
basa prcticamente en el mismo principio, pero posee una bobina de hilo fino en lugar de una cinta.
Algunos micrfonos modernos, diseados para captar solamente sonidos unidireccionales, llevan una
combinacin de cinta y de bobina.
Otro tipo es el micrfono de condensador. Posee dos finas lminas metlicas muy prximas, que actan
como un condensador. La lmina posterior va fija, mientras que la anterior hace de diafragma. Las
ondas sonoras modifican la distancia entre las lminas, alterando la capacitancia elctrica entre ambas.
Si se integra un micrfono de este tipo en el correspondiente circuito, se pueden amplificar las
variaciones y producir una seal elctrica. Este tipo de micrfonos suelen ser muy pequeos. En los
audfonos se utiliza otro tipo muy habitual, el micrfono de condensador de electretos.
Las caractersticas ms importantes de cualquier micrfono son su respuesta en frecuencia,
direccionalidad, sensibilidad e inmunidad a las perturbaciones externas como golpes o vibraciones.
Bibliografa
Biblioteca Encarta.
Apuntes de Sonido digital por Antonio Sacco. www.antoniosaco.com.ar
www.gui.uva.es/login/14/sonido1.html
II - 12
Captulo 3
Ruido
Introduccin
El ruido, en fsica, es una seal acstica, elctrica o electrnica formada por una mezcla aleatoria de
longitudes de onda. En teora de la informacin, el trmino ruido designa una seal que no contiene
informacin. En acstica, el llamado ruido blanco est formado por todas las frecuencias audibles,
igual que la luz blanca est formada por todas las frecuencias visibles. El ruido tambin es una nocin
subjetiva aplicada a cualquier sonido no deseado. La contaminacin acstica debida al ruido es un
grave problema medioambiental, sobre todo si se considera que los niveles de sonido superiores a una
determinada intensidad pueden causar daos fsicos.
Ruido rosa
El ruido rosa es un ruido cuyo nivel sonoro esta caracterizado por un descenso de tres decibelios por octava.
Cuando el ruido rosa se visualiza en un analizador con filtros de octava, el ruido se ve como si todas las
bandas de octava tuviesen el mismo nivel sonoro, lo cual es cierto, pero el ruido rosa no tiene el mismo nivel
en todas las frecuencias.
Esto ocurre por que como hemos visto los filtros de octava, tercio etc, son filtros proporcionales y por tanto
cada vez que subimos una octava, doblamos el ancho de banda y por ese motivo el ruido rosa decrece 3 dB
por octava, justo la proporcin en que aumenta el ancho de banda, el doble. De esta forma visualizamos el
ruido rosa como un ruido de nivel constante en todas las bandas de octava.
Se utiliza para analizar el comportamiento de salas, altavoces, equipos de sonido etc. Es una seal conocida,
mismo nivel en todas las bandas (sonido "plano") , y si lo amplificamos con un altavoz dentro de una sala
podemos conocer datos sobre el comportamiento acstico del altavoz, la sala etc. Normalmente se genera
entre 20 Hz y 20 kHz. Su sonido es muy parecido al que podemos or cuando se sintoniza entre dos emisoras
de FM, en el espacio que se recibe nicamente el ruido, es como un soplido.
Ruido blanco
El ruido blanco es un ruido cuyo nivel es constante en todas las frecuencias. Si lo visualizamos con un
analizador con filtros de octava, veremos que el espectro mostrado no es lineal como hemos dicho que es el
ruido blanco, si no que aumenta 3 dB por octava. Esto se debe al mismo fenmeno que con el ruido rosa, al
doblar la octava se dobla el ancho de banda y si se tenemos el mismo nivel sonoro en todas las frecuencias, el
nivel sonoro por octava se doblara y aumentara 3 dB con respecto al anterior.
Contaminacin acstica
Se refiere al ruido cuando ste se convierte en un sonido molesto que puede producir efectos fisiolgicos
y psicolgicos nocivos para las personas, llegando tambin a afectar a poblaciones de animales. La
causa principal de la contaminacin acstica es la actividad humana: el transporte, la construccin de
edificios y obras pblicas y la industria, entre otras. Los efectos producidos por el ruido pueden ser
fisiolgicos, como la prdida de audicin o el insomnio, y psicolgicos, como la irritabilidad exagerada.
El ruido viene siendo un problema para la humanidad desde muy antiguo, existiendo referencias
escritas sobre este problema ya desde la poca de la Roma imperial. Las primeras normas conocidas
relativas a la contaminacin acstica datan del siglo XV, cuando en la ciudad de Berna se prohibi la
circulacin de carretas que, por su estado, pudieran producir ruidos excesivos que molestasen a los
ciudadanos. En el siglo XVI, en Zurich se dict una norma que prohiba hacer ruidos por la noche para
no alterar el descanso de los ciudadanos. En la actualidad, cada pas ha desarrollado la legislacin
especfica correspondiente para regular el ruido y los problemas que ste conlleva.
El ruido se mide en decibelios (dB); los equipos de medida ms utilizados son los sonmetros. Un
informe publicado en 1995 por la Universidad de Estocolmo para la Organizacin Mundial de la Salud
(OMS), considera los 50 dB como el lmite superior deseable, si bien las molestias generalizadas en la
III - 1
poblacin ocurren a partir de los 85 dB. Entre 0 y 20 dB se considera que el ambiente es silencioso;
hasta 60 dB se considera que hay poco ruido; entre los 80 y los 100 dB se considera que el ambiente es
muy ruidoso; y sobrepasando este umbral el ruido se hace intolerable. Como ejemplos, valga decir que
el sonido ambiente en un bosque sin perturbaciones ajenas a ese medio rara vez alcanza los 20 dB
(normalmente se encuentra alrededor de 15 dB), sonido que slo se sobrepasa ligeramente en un
dormitorio. En una biblioteca o en la sala de estar de una vivienda el ruido oscila entre 30 y 40 dB,
mientras que en una oficina tpica el ambiente soporta un ruido de unos 65 dB. El ruido del trfico de
una ciudad est en un nivel de unos 85 dB, el de un camin pesado circulando en 90 dB, el de un
martillo neumtico en una obra en 100 dB, y el de un avin despegando entre los 120 y los 130 dB.
Clasificacin.
El ruido puede clasificarse por su duracin, intensidad, regularidad, impacto (rapidez con que se eleva la
intensidad) o fluctuacin, entre otros factores. Existe contaminacin acstica natural, como la producida por
las erupciones volcnicas, las emanaciones violentas de los giseres, la corriente de un ro o el ruido de una
colonia de gaviotas, entre otros ejemplos.
Existen medidas destinadas a mitigar o disminuir el nivel de inmisin de ruido (el ruido que recibimos) en
zonas donde ste es excesivamente alto, por ejemplo en las viviendas cercanas a un aeropuerto. Es el caso de
la instalacin de dobles ventanas o la colocacin de estructuras de hormign o de metacrilato, o de muros de
tierra en zonas prximas a vas de comunicacin.
Bibliografa
Biblioteca Encarta.
Apuntes de Sonido digital por Antonio Sacco. www.antoniosaco.com.ar
www.gui.uva.es/login/14/sonido1.html
III - 2
Captulo 4
Muestreo de seales
Introduccin
Bajo ciertas condiciones, una seal se puede representar, y reconstruir completamente, partiendo del
conocimiento de sus valores instantneos, o muestras, igualmente espaciados en el tiempo. Esta
propiedad deriva de un resultado bsico que se conoce como el teorema del muestreo.
El teorema del muestreo hace de nexo entre seales de tiempo continuo con seales de tiempo discreto,
ya que una seal de tiempo continuo mediante una secuencia de muestras instantneas proporciona un
mecanismo para representar una seal de tiempo continuo mediante una seal de tiempo discreto. En
muchos contextos, el procesamiento de seales de tiempo discreto es ms flexible y a menudo preferible
al procesamiento de seales de tiempo continuo, en parte debido a la creciente disponibilidad de
sistemas digitales y de tiempo discreto de bajo costo, ligeros, programables y fcilmente reproducibles.
Esta tecnologa tambin ofrece la posibilidad de explorar el concepto de muestreo para convertir una
seal de tiempo continuo a una seal de tiempo discreto. Despus de procesar la seal de tiempo
discreto empleando un sistema de tiempo discreto, podemos convertirla de nuevo a tiempo continuo.
Representacin de una seal de tiempo continuo mediante sus muestras: el teorema del muestreo.
Si a una seal x(t) de banda limitada se modula en amplitud con un tren de pulsos peridicos, lo que
corresponde a extraer segmentos de tiempos igualmente espaciados se puede recuperar exactamente mediante
un filtrado pasa bajos si la frecuencia fundamental del tren de pulsos modulador es mayor que el doble de la
frecuencia mas alta presente en x(t). Adems la habilidad para recuperar x(t) es independiente de la duracin
en tiempo de los pulsos individuales. Entonces, conforme esta duracin se hace mas pequea, la modulacin
de los pulsos est, en efecto, representando a la seal x(t) mediante muestras instantneas igualmente
espaciadas en el tiempo.
IV - 1
El tren de impulsos p(t) se conoce como la funcin de muestreo, el periodo T como el periodo de muestreo y
la frecuencia fundamental de p(t),
ws = 2
tenemos:
x p = x(t ) p (t )
donde
+
p (t ) =
(t nT )
n =
x p (t ) es un tren de impulsos cuya amplitudes son iguales a las muestras de x(t) en intervalos espaciados por
T, esto es:
+
x(nT )(t nT )
X p (t ) =
n =
de la propiedad de modulacin:
X p (t ) =
1
[X ( ) * P( )]
2
P( ) =
2
T
y sabiendo que:
( k )
s
n =
de manera que:
X p ( ) =
Esto es,
1 +
X ( k s )
T n =
x p ( ) es una funcin peridica en el dominio de la frecuencia que consiste de una suma de replicas
IV - 2
bajos con ganancia T y una frecuencia de corte mayor a Wm y menor que Ws Wm. Este resultado bsico,
conocido como teorema del muestreo se puede expresar como sigue:
Teorema del muestreo:
Sea x(t) una seal de banda limitada con X(w)=0 para
> m .
> 2 m
donde:
s =
2
T
Dadas estas muestras, podemos reconstruir x(t) generando un tren de impulsos peridicos en el que los
impulsos sucesivos tienen amplitudes que corresponden a valores de muestras sucesivas. Este tren de
impulsos es entonces procesado a travs de un filtro pasa bajos ideal con ganancia T y cuya frecuencia de
corte es mayor que Wm y menor que (Ws-Wm). La salida resultante ser exactamente igual a x(t).
La frecuencia de muestreo tambin se conoce como la frecuencia de Nyquist. La frecuencia 2Wm que, bajo el
teorema del muestreo, debe ser excedida por la frecuencia de muestreo, se denomina por lo comn como la
velocidad de Nyquist.
IV - 3
La reconstruccin de x(t) a partir de la salida de un retenedor de orden cero puede d nuevo llevarse a cabo
mediante filtrado pasa bajos. Sin embargo, en este caso, el filtro requerido ya no tiene ganancia constante en
la banda de paso.
Bibliografa
Seales y sistemas (Alan V. Oppenheim; Alan S. Willsky).
Materia Integrada
Anlisis de seales y sistemas. Tema Muestreo de seales.
IV - 4
Captulo 5
Conversin de seales analgicas a digitales.
Introduccin
Una seal de audio es captada por un micrfono como una seal elctrica analgica. Se dice que una seal es
analgica, cuando la misma est formada por valores continuos, tanto en el tiempo como en amplitud.
Si bien esta seal puede ser procesada en forma analgica por medios electrnicos, para su procesamiento en
una computadora es necesario digitalizarla. Este proceso de digitalizacin se realiza con un dispositivo
conocido como conversor analgico digital o (ADC por sus siglas en ingls), y se lleva a cabo en dos pasos:
muestreo y discretizacin.
El primer paso se conoce con el nombre de muestreo, y consiste en tomar muestras de la seal en forma
peridica.
El segundo paso se conoce como discretizacin, y consiste en aproximar el valor continuo a una escala
discreta.
El resultado es una secuencia finita de valores enteros, que pueden ser procesados digitalmente:
La precisin con la cual de lleve a cabo la digitalizacin determinar la calidad de la onda, y est gobernada
principalmente por dos parmetros: frecuencia de muestreo y precisin de discretizacin.
Digitalizacin del sonido: Velocidad de Muestreo y Cuantizacin
Digitalizar un sonido abarca dos procesos: Muestreo y Cuantizacin.
El Muestreo consiste en tomar informacin a cerca de la variacin de la frecuencia de un sonido, tomando una
cierta cantidad de muestras por segundo, de modo que luego uniendo las muestras tomadas, sea posible
reproducir o volver a "armar" el sonido original. Al proceso de toma de muestras antes mencionado se lo
denomina tambin "SAMPLEO" y cuanto ms muestras se tomen por segundo, mayor ser la aproximacin al
sonido original. Ahora bien para samplear sonidos audibles, que se encuentran en el rango de frecuencias de
20Hz a 20Khz sin prdida de informacin, est comprobado que hay que samplearlos al doble de la
frecuencia ms alta, es decir a 44Khz. Hacer un muestreo a 44 Khz significa tomar 44.000 muestras por
segundo (a esta frecuencia se samplea el sonido que escuchamos en los CD de audio comerciales).
El proceso de Cuantizacin apunta a determinar cuantos valores posibles pueden tener las muestras
tomadas. Esto tiene una relacin directa con la con la cantidad de bits asignados a cada muestra.
Resulta claro que se lograr ms fidelidad al sonido original tomando muestras de 16 bit que de 8.
V- 1
Cuanto ms grande es la velocidad de muestreo y la cantidad de bits por muestra mayor ser el archivo
de sonido que se genere. Tambin ser mayor un archivo Estreo que uno Mono. Es por esto que en la
actualidad se han creado formatos de archivo comprimidos como el PCM y el ADPCM.
V- 2
Frecuencia de muestreo
Tambin llamada tasa de muestreo, es la cantidad de muestras por unidad de tiempo. Cuanto mayor sea,
mayor es la respuesta en frecuencia del sistema. El estndar para los discos compactos (CD) es de 44,1 kHz.
La frecuencia de muestreo debe ser mayor que el doble de la mxima frecuencia fmx presente en la seal.
Esta condicin se denomina condicin de Nyquist. Obsrvese que no es suficiente que sea mayor que el doble
de la mxima frecuencia til, ya que si hay ruido por encima de sta, podra producirse un tipo de distorsin
denominado aliasing.
Segn el denominado teorema del muestreo, si se muestrea con una frecuencia que no cumple la condicin de
Nyquist al intentar reconstruir la seal se generan frecuencias espurias que no estaban presentes
originalmente. Supongamos, por ejemplo, que queremos muestrear una seal audible que contiene adems un
ruido de 35 kHz. Si utilizamos la frecuencia normalizada de 44,1 kHz, a pesar de que ese ruido es
originalmente inaudible (por ser mayor que el lmite superior de 20 kHz del odo humano), al intentar
recuperar la seal aparecer un ruido de 9,1 kHz (= 44,1 kHz - 35 kHz), que es perfectamente audible. Este
tipo de frecuencias que aparecen dentro del espectro til se denominan frecuencias "alias".
En ese caso hay que actuar sobre la seal. Se utiliza un filtro antialias, que suprime todas las frecuencias por
encima de la frecuencia de Nyquist, es decir la mitad de la frecuencia de muestreo fM. En el caso del CD, que
utiliza una frecuencia de muestreo de 44,1 kHz, el filtro antialias debe conservar todas las frecuencias por
debajo de 20 kHz y eliminar todas las que estn por encima de 22,05 kHz (= 44,1 kHz / 2 ).
Reconstruccin de la seal digitalizada
Se utiliza un conversor digital/analgico. Este dispositivo recibe las sucesivas muestras digitalizadas y las
transforma en valores de tensin elctrica mediante un factor de escala. Por ejemplo, si el factor de escala es
de 10/16 V, una muestra igual a 11 se transformar en un valor de tensin de 11*10/16 = 6,875 V. El valor de
tensin que corresponde a cada muestra se mantiene constante hasta que llega la prxima muestra. Resulta as
una onda escalonada formada por tramos constantes. Estas seales no presentan un efecto importante al
momento de escuchar el sonido, ya que genera frecuencias por encima del espectro audible. Sin embargo, es
conveniente agregar un filtro de suavizado que limite el contenido de frecuencias a lo estrictamente necesario,
para evitar la presencia de frecuencias que podran interferir con otros procesos, produciendo batidos
audibles, por ejemplo.
A su vez la seal reconstruida no coincide exactamente con la original por que si comparamos la seal
original con la seal reconstruida vemos, por ejemplo, que un valor de seal de 7,3 V se "reconstruy" como
6,875 V, introducindose un error de -0,425 V. El error ser tanto menor cuanto ms pequeos sean los
subintervalos en que se divide el rango til de la seal, es decir, cuanto mayor sea la resolucin en bits. La
evolucin en el tiempo de este error se denomina ruido de digitalizacin.
Relacin entre el ruido de digitalizacin y la resolucin
La mejor manera de evaluar el ruido de cualquier sistema (incluidos los de audio digital) es a travs de la
relacin seal / ruido (S/R) en decibeles. Para el audio digital, la mxima S/R que puede obtenerse es,
aproximadamente, igual a 6*n, donde n es la resolucin en bits. Por ejemplo, un sistema de 16 bits, como el
disco compacto (CD), admite una S/R de 6*16 = 96 dB. Nota: Debido a limitaciones en la parte analgica, la
S/R suele ser menor que ese valor, por ejemplo 90 dB.
Una resolucin de 24 bits implica una relacin seal / ruido de 144 dB. Ello significa que si la seal es de 4 V
(un valor considerado muy alto para una seal de nivel de lnea), entonces el ruido de digitalizacin estar 144
dB por debajo, que son 0,25 microvolts (esto significa que el salto que se produce entre el escaln
correspondiente a un valor digital y el escaln que le sigue es de 0,25 microvolt). Ahora bien, casi todas las
salidas de lnea tienen una resistencia (impedancia) de salida del orden de 100 ohms. Toda resistencia tiene un
ruido elctrico (de origen trmico) que, calculado para este valor de resistencia, da 0,18 microvolt. Esto
significa que con 24 bits estamos prcticamente al lmite de lo que puede lograrse con la electrnica
analgica. La mayor relacin S/R que idealmente podra lograrse con una resolucin mayor sera
inaprovechable a causa del ruido trmico. Por otra parte, el ruido circuital no es slo trmico. Los
semiconductores en general producen bastante ruido, siendo muy raros (y costosos) los circuitos con
relaciones seal / ruido mayores de 120 dB.
La relacin seal / ruido necesaria para una buena calidad de reproduccin debera ser comparable con el
rango dinmico del odo, que es la diferencia entre el umbral de dolor y el umbral de audicin. En el caso ms
extremo, es decir el de personas jvenes con excelente audicin, estos umbrales estn cerca de 120 dB y 0 dB
V- 3
respectivamente, por lo cual una relacin seal / ruido de 120 dB debera ser suficiente para las mayores
exigencias. Sin embargo, en general las condiciones de escucha normales no permiten llevar a la prctica esta
relacin seal / ruido, ya que es muy difcil lograr ambientes con ruido de fondo inferior a 20 dB. Por lo tanto
una relacin seal / ruido de 100 dB debera resultar suficiente en la mayor parte de los casos.
El trabajar con 20 bits y 24 bits, obteniendo relaciones S/R de 120 dB y 144 dB respectivamente, permite una
mejor calidad en la conversin. Un conversor de 20 bits es mucho ms lineal y tiene menor ruido que uno de
slo 16 y a su vez aportan formatos directamente compatibles con las nuevas tecnologas (por ejemplo el
DVD).
Dither
Cuando se est digitalizando una seal de muy poca amplitud, los saltos discretos entre escalones sucesivos
adquieren una dimensin comparable con la amplitud de la propia seal. Esto implica que la forma de onda
sufre una distorsin que resulta ser perfectamente audible y molesta. Esto es porque adems del espectro del
sonido propiamente dicho se agregan sus armnicos, que contienen energa concentrada en el espectro en
frecuencias discretas. En otras palabras, la energa del ruido de digitalizacin est concentrada. Se ha
encontrado que si, antes del muestreo, se agrega una pequea cantidad de ruido aleatorio (de espectro
continuo y no discreto), al cabo del proceso de digitalizacin la seal resultante tambin tiene la energa
correspondiente al ruido de digitalizacin distribuida, en lugar de concentrada. Desde el punto de vista de la
relacin seal / ruido, hubo un ligero empeoramiento, pero desde el punto de vista perceptivo, el ruido se ha
vuelto mucho ms tolerable e imperceptible. Hasta se puede trabajar con la forma de su espectro para hacerlo
menos notorio. El ruido agregado se denomina dither.
Dither digital
Esto sucede en los procesos de recuantizacin para pasar, por ejemplo, de 24 bits a 16 bits. Si simplemente se
truncaran los 8 bits menos significativos, estaramos en presencia de algo equivalente a un muestreo y
digitalizacin sin dither. En este caso, podra agregarse un dither generado analgicamente, pero tambin es
posible agregar uno producido digitalmente en la forma de una sucesin de nmeros pseudo aleatorios (es
decir, obtenidos por un algoritmo de cmputo que si bien es determinstico aparenta ser aleatorio). Este dither
se genera con la resolucin original (ms alta), y luego simplemente se redondea.
Reproduccin
La reproduccin de la seal se realiza en forma inversa, utilizando un conversor digital analgico (o DAC por
sus siglas en ingls).
Procesamiento digital
El procesamiento digital de seales de audio presenta numerosas ventajas frente al analgico:
Es posible cuantificar la distorsin que sufrir la seal por los procesos de conversin A/D y D/A
La seal digital no sufre distorsin
Puede hardware genrico y de bajo costo para el procesamiento de la seal, el cual puede ser
fcilmente modificado
Permite un aprovechamiento de canales de transmisin en forma ms eficiente
Pueden utilizarse algoritmos de compresin de datos para optimizar canales de transmisin y
almacenamiento
El proceso completo se muestra en el siguiente diagrama:
Bibliografa
Entrada/Salida de sonido en Windows Gabriel Agustn Praino, Facultad de Ingeniera, Universidad de Bs. As.
SONIDO DIGITAL Universidad de Concepcin, Departamento de Ingeniera Industrial
V- 4
Materia Integrada
Anlisis de seales y sistemas. Tema: Muestreo de seales.
Tcnicas Digitales II, Tema: Conversores A/D, D/A.
Medidas electrnicas II, Tema: Conversores A/D, D/A.
V- 5
Captulo 6
Sntesis del sonido
Introduccin.
Como ya sabemos la onda sonora es bastante compleja si consideramos que adems de intensidad, tono y
timbre se debe tener en cuenta la envolvente de sta. Pero an as, los hallazgos de Fourier demostraron que
cualquier onda, por compleja que sea, puede reconstruirse a partir de la suma de ondas simples, a veces
infinitas; y que bastan slo unos pocos componentes para aproximarse al sonido real con un grado de
precisin aceptable. La aplicacin de este principio nos introduce directamente en la produccin electrnica
del sonido a partir de unos sonidos simples. Es lo que se llama sntesis digital del sonido.
Sintetizadores
Se les llama sintetizadores a los instrumentos musicales electrnicos capaces de generar sonido. Esto lo hacen
manipulando en tiempo real diversos parmetros como: intensidad, tono, timbre y componentes de la
envolvente. Los sintetizadores son polifnicos, es decir, producen varias notas (instrumentos, sonidos o
voces) a la vez; y por otro lado pueden ser politmbricos (para cada voz), con lo que se parecen a los
instrumentos tradicionales. La sntesis del sonido es producto de unin de tres componentes: oscilador, filtro y
amplificador.
Los osciladores: generan el tono fundamental del sonido. Son los mdulos VCO (Voltage Controlled
Oscillator) u osciladores por control de tensin, que producen una serie de fluctuaciones de tensin que son la
representacin elctrica de la frecuencia de las vibraciones.
Los filtros: modelan el sonido y generan aproximadamente el timbre. Son los mdulos VCF (Voltage
Controlled Filter) o filtros por control de tensin los que filtran ciertas frecuencias en beneficio de otras. Los
VCF ms importantes son los lowpass o filtros de paso bajo que filtran las frecuencias altas dejando pasar las
bajas y los highpass o filtros de paso alto que filtran las frecuencias bajas dejando pasar las altas. Los filtros
estn caracterizados por el punto de corte (Cut Off) que cortar las frecuencias que sean inferiores o
superiores a este valor.
Los amplificadores: regulan el volumen y por tanto intervienen sobre la intensidad del sonido. Generalmente
se le llaman mdulos VCA (Voltage Controlled Amplifier) o amplificadores por control de tensin.
Existen mdulos adicionales controladores que perfilan an ms la onda producida: el generador de
envolvente (EG: Envelope Generator) y el oscilador de baja frecuencia (LFO: Low Frequency Oscillator). El
generador de envolvente permite controlar los cuatro parmetros de la envolvente ataque (A), cada (C), parte
sostenida (S) y extincin (R) o incluso combinaciones selectivas hablndose de AR, ADR, DADSR.
La arquitectura clsica de los sintetizadores est basada en la sntesis sustractiva, cuyo nombre procede del
hecho de que los timbres de las notas se conforman eliminado o filtrando armnicos.
Existen otras tecnologas de sntesis como la sntesis aditiva, que recompone las formas sonoras desde cero
controlando la amplitud de cada armnico de los 16 o 32 existentes por tono lo que demanda clculo intensivo
y la sntesis FM que modula las frecuencias de uno o varios osciladores con las de otros, etc.
VI - 1
individual. Una variante es la produccin de un sonido estreo, de forma que cada una de las ondas originales
ocupe un canal
Cortado y pegado: Consiste en la posibilidad de eliminar o insertar partes de un sonido en determinados
lugares de una onda. Con programas Windows, esto suele hacerse a travs del Portapapeles.
Procesamiento digital de seales:
Filtro pasa altos
s[n] = s[n] - s[n-1]
Filtro pasa bajos
s[n] = (s[n] + s[n-1] + s[n-2]) / 3
Eco
s[n] = s[n] + a * s[n-r]
donde:
s[n] es la n-esima muestra de la seal
a es un factor de atenuacin (entre 0 y 1)
r es un retardo (mayor a 0)
VI - 2
Captulo7
Tarjetas de sonido
Introduccin
Una tarjeta de sonido es el dispositivo de hardware encargado de la reproduccin de sonido. Es el nexo entre
una seal de sonido analgica y una digital, es decir, es la unidad que permite el traspaso de las seales a
dispositivos multimedia externos (parlantes, grabador o reproductor de CD, etc).
Es una tarjeta de expansin que permite que el computador genere, manipule y enve sonidos. De su calidad
depender directamente el sonido reproducido por nuestro equipo, pero en general, las tarjetas de sonido
permiten al computador:
_Enviar sonidos a los parlantes o a un equipo conectado a la tarjeta.
_Grabar sonido desde un micrfono conectado al computador.
_Manipular sonido almacenado en el disco duro.
Sus principales funciones son:
_Capturar las seales procedentes del exterior, ya sea a travs de dispositivos capaces de generar una seal
de onda, como por ejemplo un equipo de msica .
_Reproducir sonidos de naturaleza digital.
Los componentes principales, que pertenecen a la mayora de las tarjetas de sonido son los Jacks y los
Conectores.
Un Jack es la interfaz de conexin de un solo orificio, que permiten conectar otros dispositivos a la tarjeta de
sonido, uno por orificio. Se encuentra en el panel posterior de la tarjeta.
Los conectores son interfaces de la tarjeta de sonido que le permiten conectar otros dispositivos a la tarjeta.
Componentes fundamentales de una placa de sonido
La tarjeta de sonido es la encargada de convertir la informacin digital procesada por nuestro equipo en datos
analgicos , o sonidos, para que sean reproducidos por unos parlantes conectados a la propia tarjeta de sonido.
Igualmente, los sonidos analgicos introducidos por medio de un micrfono, un equipo de msica conectado a
LINE-IN, o un instrumento musical conectado al puerto MIDI, son transformados en informacin digital para
que sea reconocida y procesada por el equipo.
Por ltimo, la tarjeta de sonido es la encargada de reproducir por medio de los parlantes conectados a ella las
pistas musicales de un COMPACT DISC de msica insertado en nuestra unidad de CD-ROM. Para ello, el
CD-ROM y la TARJETA DE SONIDO deben estar conectados por un cable que normalmente viene incluido
con las unidades de CD-ROM.
El muestreo
La capacidad de muestreo es uno de los factores ms importantes en la calidad de una tarjeta de sonido. Es la
velocidad a la cual la tarjeta de sonido toma muestras (medida en KHz), las velocidades de muestreo
normalmente son de 11.025 KHz, 22.050 KHz, y 44.1 KHz.
El tamao de la muestra
Determina la calidad del sonido, los tamaos de muestra ms comunes son de 8, 12, 16, 20 y 32 bits.
MIDI (musical instrument digital interfase)
Casi todas las tarjetas de sonido soportan MIDI, un estndar adoptado por la industria de la msica electrnica
para controlar dispositivos como sintetizadores y tarjetas de sonido que emiten msica.
Procesadores multi-propsito de seales digitales
Las tarjetas de sonido tienen un procesador de seales digitales (DSP). Hacen que la tarjeta de sonido sea
inteligente, liberando a la computadora del trabajo en tareas intensivas como filtrar ruidos de grabaciones o
compresin de sonido.
VII - 1
Efectos de sonido 3D
Algunas tarjetas incluyen efectos de sonido de 3D. Estos trabajan retardando el tiempo de ciertas posiciones
de la seal de sonido tal que las frecuencias diferentes llegan al odo a diferentes tiempos, de modo que se
crea un sonido ambiental
Entrada y salida digital
Extensiones para las tarjetas de sonido que son encontrados solo en sistemas de sonido profesionales. Proveen
entrada y salida digital S/PDIF y una mejora a la entrada y salida de MIDI. La conectividad S/PDIF permite
a los productores de multimedia e ingenieros de sonido conectar dispositivos compatibles con S/PDIF como
un reproductor DAT (Digital Audio Tape) para producciones finales de muy alta calidad.
Nmero de Bits
Las primeras tarjetas de sonido eran de 8 bits (AdLib) y no eran capaces de reproducir sonido digital. Luego
aparecieron las tarjetas de sonido con capacidad de reproduccin digital (Sound Blaster y Sound Blaster Pro,
esta ltima con capacidad de reproducir sonido estreo) y ms tarde las tarjetas de sonido de 16 bits (Sound
Blaster 16).
Nmero de voces
Las tarjetas de sonido actuales llevan al final un nmero 16, 32 64. Este nmero no se refiere al nmero de
bits, sino al nmero de voces o instrumentos que son capaces de reproducir simultneamente. Es decir, una
tarjeta 16 (Sound Blaster 16 o compatibles, Gravis Ultrasound, etc.) es capaz de reproducir 16 voces o
instrumentos simultneamente, una tarjeta 32 (Sound Blaster 32, Guillemot Maxi Sound 32, etc.) es capaz de
reproducir 32 voces simultneamente y una tarjeta 64, lo mismo.
Debemos tener en cuenta que algunas tarjetas de sonido pueden reproducir 64 voces simultneamente, pero
32 de ellas por software, al no estar soportadas por la tarjeta (Sound Blaster 64), con lo que el procesador del
equipo tiene que dedicar parte de sus recursos a este proceso.
A mayor nmero de voces o instrumentos, mayor ser la calidad del sonido reproducido.
Calidad del sonido - KHz
La relacin entre la cantidad de muestras por segundo de un sonido y la calidad es directa. Por tanto a mayor
nmero de KHz mayor calidad de sonido. Las primeras tarjetas de sonido de 8 bits eran capaces de reproducir
a una frecuencia de 22KHz, la mitad de la calidad de msica de un reproductor de Compact Disc. Con la
aparicin de las tarjetas de 16 bits, esta frecuencia se elev a 44,1KHz (la frecuencia de los reproductores de
Compact Disc)
Desde ese momento, la frecuencia de muestreo no ha variado, pues la calidad obtenida es ms que suficiente
para garantizar una gran calidad. Sin embargo, estn en el mercado tarjetas de sonido con una capacidad de
muestreo superior, 48KHZ y hasta 55,2KHz.
Tipo de sntesis MIDI
MIDI (Musical Instrument Digital Interface - Interfaz digital para instrumentos musicales) es una serie de
instrucciones enviadas por una aplicacin que le indican a la tarjeta de sonido qu instrumento suena, en qu
nota y con qu duracin.
Las tarjetas de sonido con SINTESIS FM usan una combinacin de ondas que imitan los sonidos de los
distintos instrumentos, dando lugar a una sensacin de sonido tipo sintetizador. Este tipo de sntesis la
podemos encontrar en la mayora de las tarjetas (Sound Blaster 16 y compatibles).
Las tarjetas de sonido con SINTESIS POR TABLA DE ONDAS (WAVETABLE) usan muestras
digitalizadas de sonidos de instrumentos reales que se almacenan en la TABLA DE ONDAS (memoria ROM)
de la tarjeta de sonido. La mayora de las tarjetas con sntesis por tabla de ondas incluyen adems cierta
cantidad de memoria RAM en la propia tarjeta, o la posibilidad de aadir memoria mediante unos zcalos
similares a los de memoria RAM de la placa base, para que podamos grabar muestras y as mejorar la calidad
del sonido.
Los parlantes
La gran mayora de las tarjetas de sonido incluyen un amplificador interno de 4 Watts por canal, lo que nos
permite conectar a la salida de la tarjeta unos parlantes que no superen esta capacidad.
VII - 2
Otras Utilidades
Muchas de las tarjetas con sntesis por tabla de ondas incluyen DSP (procesador de sonido digital avanzado),
que descarga de trabajo al procesador cuando se realizan ciertos procesos.
Ya que por medio de una conexin a Internet podemos realizar video conferencias o simplemente
comunicacin telefnica, se ha empezado a implementar el soporte FULL-DUPLEX en las tarjetas de sonido.
La tecnologa FULL-DUPLEX consiste en que la tarjeta es capaz de recibir o grabar la voz que llega a travs
del micrfono u otro dispositivo conectado a la entrada LINE-IN, al mismo tiempo que est reproduciendo
por la salida SPEAKER o LINE-OUT la voz o los sonidos que le llegan a travs de la conexin a Internet.
El SONIDO 3D nos brinda un efecto tridimensional se puede conseguir por medio de software o por medio de
hardware, de modo que se crea un efecto de sonido envolvente. La nica manera de conseguir sonido
envolvente es mediante el uso de 4 parlantes.
Las entradas de una tarjeta de audio son conectores elctricos u pticos que pueden ser de tipo digital o
analgico. Los ms bsicos son:
Line IN: entrada analgica, normalmente estreo, que recoge el sonido procedente de la salida (Line
OUT) de otro dispositivo de audio, por ejemplo un reproductor de CD, una radio, otro ordenador,
etc.
Line OUT: salida que proporciona una seal del mismo tipo que la que puede entrar por la Line IN.
Por tanto sta salida no es apta, en general, para la conexin directa de altavoces, sino para enviar
una seal a otro dispositivo de procesado o amplificacin de sonido (por ejemplo: una cadena hi-fi)
MIC IN : sta entrada se usa para captar seales ms dbiles, procedentes de micrfonos o
instrumentos musicales que disponen de transductores acstico-elctricos (por ejemplo: guitarras
elctricas). La seal que entra por MIC IN se amplifica en la tarjeta de sonido hasta alcanzar un nivel
adecuado para su proceso.
Speaker OUT: a sta salida se suelen conectar unos pequeos altavoces o unos
VII - 3
MIDI (Musical Instruments Digital Interface). Se trata de una interfaz serie asncrona para la
conexin de dispositivos controladores (por ejemplo: un teclado MIDI, un mdulo de sonidos,...) al
PC. Por lo general las tarjetas de sonido utilizan el mismo puerto para el joystick, por lo que se
requiere un cable MIDI adaptador de un conector DB15 a dos conectores DIN de 5 pines de los que
se utilizan 3: In(4), Out(5) y masa(2). La longitud mxima del cable es de 15 metros y tiene que ser
trenzado y apantallado con la pantalla conectada al pin 2 en ambos extremos. Las patillas 1 y 3 se
dejan sin conectar.
Tradicionalmente, para las E/S anteriores se han utilizado conectores mini-jack como los que usamos en un
walkman, por ejemplo. stos siguen siendo los ms comunes en las soluciones de nivel bajo y medio. Se trata
de conexiones analgicas de media calidad. Algunas tarjetas incorporan tambin conectores tipo RCA.
Normalmente cada RCA es un canal independiente (mientras que en el jack van dos canales juntos). Por ello
siempre van de dos en dos (clsicamente el rojo es el canal derecho y el blanco el izquierdo). Ofrecen mayor
calidad que los conectores jack tradicionales pero son ms caros y menos compactos. Adems de las
anteriores conexiones, que son externas, las hay tambin internas, siendo la ms importante la del CD-ROM a
la tarjeta de sonido, para poder escuchar los CDs de msica. Puede ser digital o analgica, de la cual hace
tiempo haba varios formatos (para CD-ROMs Sony, Mitsumi, IDE...). Incluso en algunas tarjetas antiguas se
inclua un conector IDE de 40 pines para el CD-ROM.
VII - 4
3D Audio
Direct Soun 3D
Configuracin del Hardware
Interrupcin IRQ
10
Canal DMA (8 bit)
1
Canal DMA (16 bit)
1, 5 (compartido con el de 8bit)
Joystick I/O Address
200 Hex
Audio I/O Address
220 Hex
FM Synthesizer I/O Address
388 Hex
Sintetizador Wave, I/O Address
No documentado
MPU-401 I/O Address
0300Hex
Conectores
Line-In
Si
Mic-In
Si
Line-Out
No posee
Speaker-Out
Si
PC Speaker-In
No posee
Game/Joystick Port
Si
CD-ROM Audio-In
No posee
CD-ROM Audio-In (MPC2)
No posee
External CD-ROM
No posee
CSP Chip Socket
No posee
Requisitos del sistema
Sistema Operativo
Win. 3.1, 95, 98, NT
Espacio en disco
44.2kb
Slot
Onboard PCI
Placa madre
PC 100
RAM
No documentado
Bibliografa.
TARJETAS DE AUDIO HARDWARE, http://www.lpi.tel.uva.es
Support KnowledgeBase Sound Blaster Product Information
Sound Blaster Audio Technologies
www.guillemot.com
www.soundblaster.com
www.duiops.net/hardware.tarjson/tarjson.html
SONIDO DIGITAL Universidad de Concepcin, Departamento de Ingeniera Industrial
LA TARJETA DE SONIDO, J&P "El Rincn del Hardware" 1998-99
Materia Integrada
Tcnicas Digitales III. Tema: Pc. Compatibles. (En los apunes de clase no se encuentra el tema placas de
sonido pero se explican el sistema de interrupciones y buses).
VII - 5
Captulo 8
DSP (Digital Signal Procesor)
Introduccin
Este Procesador de Sonido Digital libera de trabajo al procesador central del equipo. Para estudiarlo con algo
ms de profundidad, conviene primero de todo distinguir tres conceptos parecidos que usan prcticamente las
mismas siglas y que son por tanto susceptibles de confusin.
En primer lugar tenemos la tecnologa general de los DSP (en su acepcin de Procesadores Digitales de
Seal), que ha revolucionado el panorama del procesamiento de seales digitales. Estos DSP son poderosos
microprocesadores capaces de procesar mucha informacin en tiempo real como seales de radio, sonido o
vdeo.
En el contexto de los anteriores es en el que se enmarcan los DSP (Procesadores de Sonido Digital) que se
aplican sobre una seal sonora.
Pero tambin tenemos el DSP como Procesamiento Digital de Campos Sonoros, que se trata de una tecnologa
creada por Yamaha en 1986 para recrear las mismas caractersticas acsticas de una sala de conciertos, un
club de jazz o de una sala cinematogrfica en nuestro propio hogar.
El DSP que nos interesa ahora es el que se refiere al sonido. Cuando tratamos con una pista de sonido que
tenemos grabada, por ejemplo, podemos tener la posibilidad de aplicarle efectos (eco, coro, reverberacin,...)
o tambin simular sintetizadores de sonido, realizar fades, ... Por supuesto, este proceso de modificacin de
una seal digital requiere potencia de clculo, y adems existen multitud de aplicaciones en la que se hace
necesario el procesado de un efecto en tiempo real. Es por ello que actualmente, tanto las tarjetas de gama
baja como las de gama alta incorporan un DSP, diseado especficamente para ste tipo de tareas con lo cul
se consigue, adems de liberar de carga al procesador del PC, un mayor rendimiento, ya que ste ltimo no
deja de ser una mquina de propsito general, y puede resultar menos capaz para estos procesos.
Con el continuo desarrollo de los avances en tecnologa digital, el DSP se ha convertido en la parte principal
de cualquier tarjeta de sonido, y entre las especificaciones de cualquier tarjeta comercial, incluso de gama ms
baja podemos encontrar funciones como:
Efectos digitales en tiempo real y en cualquier fuente de sonido como reverberacin, coro, flanger,
variador de fase o distorsin.
Capacidad de proceso, mezcla y posicionamiento de hasta 131 canales por Hardware.
Control de agudos, graves y efectos aplicados en cualquier seal de sonido.
Configuracin de salida optimizada para auriculares, dos o cuatro altavoces.
Tecnologa capaz de ubicar un sonido mono o estreo en un espacio de 360.
Entornos creados por el DSP como sala, teatro, club, etc. En cualquier fuente de sonido y
modificable por el usuario.
Categora
Comando
Descripcin
10h
output
Sound I/O
20h
input
40h
14h
output
VIII - 1
24h
input
74h
75h
76h
77h
16h
17h
D0h
I/O control
D4h
D1h
Turn on speaker
Speaker control
D3h
MIDI I/O
30h
31h
38
otput
80h
E1h
Get DSP
number
version
Direccin
Funcin
VIII - 2
01
02
Timer 1 data
03
Timer 2 data
04
08
20-35
40-55
60-75
80-95
A0-A8
B0-B8
BD
C0-C8
E0-F5
Wave Select
Fuente "Programming the AdLib/Sound Blaster"
Los grupos de 22 registros se utilizan por pares para la utilizacin de cada voz FM. La tarjeta sintetiza sonidos
de hasta 8 octavas de un instrumento. Los valores para la escala cromtica son:
Numero
Frecuencia
Nota
16B
277.2
C sostenido
181
293.7
198
311.1
D sostenido
1B0
329.6
1CA
349.2
1E5
370.0
F sostenido
202
392.0
VIII - 3
220
415.3
G sostenido
241
440.0
263
466.2
A sostenido
287
493.9
2AE
523.3
El UART MPU-401
El modo SB-MIDI
Este modo proporciona una interfase para I/O en modo normal como el modo UART.
El dato MIDI entrante se detecta al usar el mtodo de poleo, o el de interrupcin.
El modo MPU-401
En este modo la interfase no presenta servicios, literalmente relee todo lo que recibe sin modificar o
interpretar, entre la PC y el dispositivo MIDI. Una vez activado el modo UART, el nico comando que
reconoce es el Reset. Estos puntos son bsicos para iniciar la programacin de la tarjeta de sonido. Slo tienen
que enviarse los datos a la direccin correcta.
BASE
ADDRESS
I/O
ADDRESSES
USED
220h
220h to 233h
240h
240h to 253h
260h
260h to 273h
280h
280h to 293h
VIII - 4
DESCRIPTION
I/O
ADDRESS
ACCESS
Base + 0h
Read
Base + 0h
Write
Base + 1h
Write Only
Base + 2h
Read
Base + 2h
Write
Base + 3h
Write Only
Base + 4h
Write Only
Base + 5h
Read/Write
Base + 6h
DSP Reset
Write Only
Base + 8h
Read
Base + 8h
Write
Base + 9h
Write Only
Base + Ah
Read Only
Base + Ch
Write
Base + Ch
Read
Base + Eh
Read Only
Base + 10h
Read/Write
Base + 11h
Read Only
Base + 12h
Write Only
Base + 13h
Write Only
VIII - 5
Captulo 9
Formatos digitales
Introduccin:
La digitalizacin consiste en cuantificar la amplitud de onda. Como antes visto quedan definidos dos
conceptos que son claves en la digitalizacin, como son: Tasa de muestreo y resolucin.
La tasa de muestreo es el nmero de lecturas que se hacen por unidad de tiempo.
La resolucin es el nmero de estados diferentes que se pueden distinguir en una seal.
A mayor resolucin y mayor tasa de muestreo se obtendr mayor fidelidad en la seal muestreada.
Almacenamiento
Existen dos posibilidades de almacenamiento los archivos de audio digital y los archivos MIDI.
Ahora bien, una vez obtenido el audio en forma digital, el cual esta almacenado en la memoria RAM, se le
debe dar un tipo de formato para crear el archivo que se almacenara en disco, este tipo de formato es utilizado
luego para la reproduccin del sonido.
A continuacin haremos referencia a los formatos mas utilizados por los distintos paquetes de software del
mercado y que muestran a su vez la evolucin de estos formatos:
Formato
AU
IFF
WAV
VOC
Real Audio
MP3
Caracterstica
Son el formato audio estndar en los computadores Sun. Por lo general son de 8 bits y poseen
menor calidad que otros formatos de sonido.
Es comn en computadores Macintosth. Pueden ser de 8 o 16 bits, soportan frecuencias de
muestreo de hasta 44.1 KHz y tamaos de muestra de hasta 32 bits por muestra. Tambin est el
IFF-C que es un formato de archivo IFF comprimido.
Es el formato utilizado por defecto por Windows. Posee compresin propia, y, aunque ha
sido sobrepasado tcnicamente por otros formatos, es uno de los ms conocidos y popularizados.
Puede ser de 8 o 16 bits con ndices de muestreo de 11.025, 22.05 44.1 KHz, gestiona los datos
en mono o en estreo y por lo general tienen buena calidad de sonido.
Admite muestras de 8 y 16 bits, admite frecuencias de muestreo de 11.025 kHz, 22.05 kHz, y
44.1 kHz, y los datos pueden guardarse comprimidos o sin comprimir (solo para Sound Blaster
). El formato de archivo VOC usa el concepto de bloques de silencio, es decir, un periodo
extenso de silencio se reemplaza en el archivo de audio con una marca y un valor de su duracin
temporal, con lo que se consigue un pequeo ahorro de espacio en disco.
Posee un sistema potente de descompresin, que puede funcionar sin necesidad de operar con el
archivo entero, lo cual permite que los programas de reproduccin puedan ir decodificando y
reproduciendo el sonido a medida que la informacin les va llegando, sin esperar a recibir el
archivo completo. Este mecanismo es utilizable tambin para video.
Permite almacenar sonido de gran calidad con altas tasas de compresin. Es un formato que se
IX- 1
VQF
est utilizando bastante para transmitir msica de alta calidad por la red, as como en otro tipo de
medios informticos. MPEG Audio File
(Transform-domain Weighted Interleave Vector Quantization): es un nuevo formato de
compresin de audio desarrollado por Yamaha, similar al MP3, pero con una mejor compresin
y calidad de sonido. Los archivos VQF son entre 30-35% ms pequeos que un archivo MP3.
aa
aac
aif
aifc
aiff
ape
asf
asx
avi
dat
jmx
lks
lqt
m1v
m3u
mid
midi
mov
mp+
Mp2
mpa
mpe
mpeg
mpg
mpv
ogg
pls
ra
ram
rm
rmi
rmid
rmm
rmx
sdp
smi
smil
snd
swf
tac
wax
wm
wma
wmv
IX- 2
Contenido
'R', 'I', 'F', 'F'
Longitud del archivo-8 (32-bit usando enteros)
Tipo del formulario (4 caracteres)
Primer tipo de chunk (4 carcter)
Tamao del primer chunk (32-bit usando enteros)
Datos del primer chunk
IX- 3
00 - 03 "RIFF"
04 - 07 ???
08 - 11 "WAVE"
Otro identificador.
12 - 15 "fmt "
Otro identificador
16 -19 16, 0, 0, 0
20 - 21 1, 0
22 - 23 1, 0
24 - 27 ???
28 - 31 ???
32 - 33 1, 0
Alineamiento de bloque.
34 - 35 8, 0
36 - 39 "data"
40 - 43 ???
resto
???
Los datos numricos que ocupan ms de un byte se representan de la siguiente forma: Primero estn los bytes
menos significativos, y a continuacin los ms significativos (convenio "little endian", tambin conocido
como "formato Intel").
Anlisis de frecuencia
Para realizar un anlisis de frecuencia se utiliza Fast Fourier Transform (FFT), directamente a los datos
obtenidos descartando de antemano la cabecera del archivo.
Bibliografa:
SONIDO DIGITAL Universidad de Concepcin, Departamento de Ingeniera Industrial
www.unitec.edu.co/biblioteca/multimedia/tm8
Developer Kit For Sound Blaster Series, Segunda Edicin
IX- 4
IX- 5
Captulo 10
MCI de Windows
Introduccin:
La programacin de sonido bajo Windows se puede llevar a cabo con dos herramientas diferentes, los
comandos MCI y las funciones de bajo nivel del API de Windows.
La programacin de sonido (tanto de audio digital como de MIDI) es un caso particular de la programacin
multimedia. La programacin en Windows puede abordar el multimedia a travs de dos enfoques diferentes:
el MCI y las funciones de bajo nivel. El MCI es el mtodo ms sencillo.
MCI proporciona aplicaciones con compatibilidad a dispositivos independientes para controlar perifricos de
audio y video. Las aplicaciones pueden usar MCI para controlar y soportar cualquier dispositivo multimedia,
incluyendo los dispositivos de audio basados en forma de onda, secuencias MIDI, dispositivos de CD de
audio y video digital (cintas de video).
Las siglas MCI corresponden a Media Control Interface, un conjunto de herramientas de programacin con
las que se logra una funcionalidad muy similar a la del reproductor de medios de Windows (de hecho, esta
aplicacin las utiliza casi exclusivamente). Uno de los puntos ms relevantes del MCI, es que trata del mismo
modo todos los dispositivos multimedia (reproductor de CD, vdeo analgico y digital, videodisco, audio
digital y MIDI). Existen dos interfaces de uso de los comandos MCI, el interfaz de cadenas de comandos
(command-string interface) y el interfaz de mensajes de comandos (command-message interface).
Comandos Strings
Para enviar un comando Strings a un dispositivo MCI, se usa la funcin mciSendString que incluye los
parmetros para el comando Strings y un buffer para cualquier retorno de informacin.
la funcin mciSendString retorna cero si la operacin fue exitosa. Si la funcin falla, la palabra de bajo-orden
del valor del retorno contiene un cdigo del error. Se puede pasar este cdigo del error a la funcin
mciGetErrorString para conseguir una descripcin del error.
Sintaxis del comando Strings
Los comandos string MCI usan una sintaxis de tipo verbo-objeto-modificador. Cada comando string incluye
un comando, un identificador del dispositivo, y un comando del argumento. Los argumentos son optativos
para algunos comandos y requeridos por otros.
Un comando string tiene el siguiente informacin:
_Argumentos del comando device_id
Este componente contiene la siguiente informacin:
X- 1
La funcin del ejemplo siguiente enva el comando con las banderas "desde" y "hasta":
DWORD PlayFromTo(LPSTR lpstrAlias, DWORD dwFrom, DWORD dwTo)
{
char achCommandBuff[128];
// Form the command string.
wsprintf(achCommandBuff, "play %s from %u to %u",
lpstrAlias, dwFrom, dwTo);
// Send the command string.
return mciSendString(achCommandBuff, NULL, 0, NULL);
}
Comandos Messages
La interfase de comando "menssage" se disea para ser usada por aplicaciones que exigen a una interfaz del
lenguaje C para controlar los dispositivos multimedia. Usa un paradigma "mensaje de paso" para comunicarse
con los dispositivos MCI. Se puede enviar una orden usando la funcin mciSendCommand.
La funcin mciSendCommand retorna cero si es exitoso. Si la funcin falla, la palabra de retorno contiene un
cdigo del error. Se puede pasar este cdigo de error a la funcin mciGetErrorString para conseguir una
descripcin textual del error.
La sintaxis de comando "Messages"
Los comandos MCI "menssages" consisten en los siguientes elementos :
Un valor constante del mensaje
Una estructura que contiene los parmetros para la orden
Un juego de banderas especificando las opciones para el comando y validando los campos en el
bloque del parmetro.
El ejemplo siguiente usa el mciSendCommand la funcin para enviar el comando MCI_PLAY al dispositivo
identificado por un identificador del dispositivo.
mciSendCommand(wDeviceID,
MCI_PLAY,
0,
(DWORD)(LPVOID) &mciPlayParms);
//
//
//
//
device identifier
command message
flags
parameter block
El identificador de dispositivo da en el primer parmetro que es recupera cuando el dispositivo se abre usando
el comando MCI_OPEN. El ltimo parmetro es la direccin de una estructura MCI_PLAY_PARMS sobre la
cual se podra contener la informacin dnde empezar y acabar la reproduccin. Muchos comandos MCI
"menssages" usan una estructura para contener parmetros de este tipo. El primer miembro de cada uno de
estas estructuras identifica la ventana que recibe un mensaje MM_MCINOTIFY cuando termina la
operacin.
X- 2
Constante
Descripcin
MCI_BREAK
Pone una llave de descanso para un dispositivo de MCI.
MCI_SYSINFO devuelve la informacin sobre los dispositivos de MCI.
Constante
MCI_GETDEVCAPS
MCI_CLOSE
MCI_INFO
MCI_OPEN
MCI_STATUS
Descripcin
Se obtiene las capacidades de un dispositivo.
Cierra el dispositivo.
Se obtiene la informacin textual de un dispositivo.
Inicializa o abre un dispositivo.
Se obtiene la informacin de estado del dispositivo.
Algunas de las banderas de este comando no se requieren, porque es un comando bsico. Los dispositivos
tambin deben soportar un juego comandos bandera para los comandos requeridos.
X- 3
Constante
MCI_LOAD
MCI_PAUSE
MCI_PLAY
MCI_RECORD
MCI_RESUME
MCI_SAVE
MCI_SEEK
MCI_SET
MCI_STATUS
MCI_STOP
Descripcin
Lee los datos de un archivo.
Para la ejecucin. La grabacin pueden reanudarse en la posicin actual.
Pone a trasmitir los datos a la salida.
Comienza la grabacin de datos de la entrada.
Resume la ejecucin o grabando en una pausa el dispositivo.
Guarda los datos a un archivo del disco.
Busca adelante o hacia atrs.
el estado en que opera del dispositivo.
Obtiene la informacin de estado del dispositivo.
Para la ejecucin.
Descripcin de la macro
Constante
MCI_HMS_HOUR
MCI_HMS_MINUTE
MCI_HMS_SECOND
MCI_MAKE_HMS
MCI_MAKE_MSF
MCI_MAKE_TMSF
MCI_MSF_FRAME
MCI_MSF_MINUTE
Descripcin
Retorna la horas compuesto de un valor de HMS.
Retorna la horas compuesto de un valor de HMS.
Retorna la horas compuesto de un valor de HMS.
Crea un valor de HMS.
Crea un valor de MSF.
Crea un valor de TMSF.
Retorna el componente de los frames con un valor de MSF.
Retorna el componente de los minutos con un valor de MSF.
X- 4
MCI_MSF_SECOND
MCI_TMSF_FRAMe
MCI_TMSF_MINUTE
MCI_TMSF_SECOND
MCI_TMSF_TRACK
Bandera de la Espera
Los comandos de MCI retornan inmediatamente al usuario, aun cuando toma varios minutos para completar
la accin. Se puede usar la bandera "wait" (MCI_WAIT) para dirigir el dispositivo que espere hasta que la
accin pedida se complete antes de devolver el mando a la aplicacin.
Por ejemplo, el comando no devolver el mando a la aplicacin hasta que se complete:
mciSendString("play mydevice from 0 to 100 wait",
lpszReturnString, lstrlen(lpszReturnString), NULL);
Nota :
Se puede cancelar la espera apretando CTRL+BREAK. Las aplicaciones pueden redefinir usando el comando
"break" (MCI_BREAK). (MCI_BREAK usa la estructura MCI_BREAK_PARMS ) Cuando una espera se
cancela, MCI intenta devolver el mando a la aplicacin sin interrumpir el comando asociado con la bandera
de espera.
Bandera de informacin.
La bandera "notify" (MCI_NOTIFY) dirige al dispositivo para anunciar un mensaje MM_MCINOTIFY
cuando el dispositivo completa una accin. Su aplicacin debe tener un procedimiento de ventana para
procesar el mensaje de MM_MCINOTIFY. Un mensaje de MM_MCINOTIFY indica que el proceso de un
comando se ha completado, pero no indica si el comando fue completado con xito, si fall, o se reemplaz o
abort.
En la interfaz de comando "string", se usa en el parmetro de la funcin mciSendString . En la interfaz del
comando "message", se especifica en la palabra dwCallBack de la estructura enviada con el comando
"menssage". (Cada estructura asociada con un comando "menssage" contiene este miembro.)
Bandera de Prueba
la bandera "test" (MCI_TEST) pregunta al dispositivo para determinar si puede ejecutar el comando. El
dispositivo devuelve un error si no puede ejecutar el comando. No devuelve ningn error si puede ocuparse
del comando. Cuando se especifica esta bandera, MCI devuelve el mando a la aplicacin sin ejecutar el
comando.
Esta bandera es soportada por video digital y dispositivos VCR para todos los comandos excepto
"open"(MCI_OPEN) y "close" (MCI_CLOSE).
X- 5
Dispositivos MCI
Cada dispositivo multimedia MCI posee un juego de rdenes de MCI. Por ejemplo, play (MCI_PLAY )
hace que el dispositivo se abra para reproducir un archivo, no importa el tipo de datos con que el
dispositivo trabaja.
El ejemplo siguiente muestra la misma serie de comandos para reproducir los primeros 10000 samples de un
archivo de forma de onda:
X- 6
mciSendString(
"open c:\mmdata\purplefi.wav type waveaudio alias finch", lpszReturnString, lstrlen(lpszReturnString), NULL);
mciSendString("set finch time format samples", lpszReturnString, lstrlen(lpszReturnString), NULL);
mciSendString("play finch from 1 to 10000", lpszReturnString, lstrlen(lpszReturnString), NULL);
mciSendString("close finch", lpszReturnString, lstrlen(lpszReturnString), NULL);
Reproduccin y Posicionamiento
Varios comandos MCI como (MCI_PLAY), (MCI_STOP), (MCI_PAUSE), (MCI_RESUME),
(MCI_SEEK), afecta la reproduccin o el posicionamiento de un archivo multimedia. Si un dispositivo de
MCI recibe un comando de reproduccin mientras otro comando de reproduccin esta siendo ejecutado,
acepta el comando y detiene o reemplaza el comando anterior.
Muchos comandos MCI, como (MCI_SET ), no afectan la reproduccin. Una notificacin de uno de estos
comandos no interfiere con la reproduccin pendiente o comandos de posicin con tal de que las
notificaciones no se realicen al mismo driver.
Tipos de dispositivos
MCI reconoce un conjunto bsico de dispositivo. Un tipo de dispositivo es un conjunto de drivers de MCI que
comparten un conjunto de comando en comn y se usa para controlar dispositivos multimedia similares o
archivos de datos. Muchos comandos MCI como (MCI_OPEN), se le debe especificar un tipo del dispositivo.
Dispositivo
cdaudio
digitalvideo
dat
overlay
scanner
sequencer
vcr
waveaudio
videodisk
Constante
MCI_DEVTYPE_CD_AUDIOCD
MCI_DEVTYPE_DIGITAL_VIDEO
MCI_DEVTYPE_DAT
MCI_DEVTYPE_OVERLAY
MCI_DEVTYPE_SCANNER
MCI_DEVTYPE_SEQUENCER
MCI_DEVTYPE_VCR
MCI_DEVTYPE_WAVEFORM_AUDIO
MCI_DEVTYPE_VIDEODISC
Descripcin
Reproductor de CD de audio
Vdeo digital en una ventana
Reproductor de cinta DAT
Vdeo analgico en una ventana
Scanner de imgenes
Secuenciador MIDI
Vdeo en cinta magntica
Ficheros de onda
Reproductor de disco de vdeo
Los nombres de la columna dispositivo son los que utilizaremos en las cadenas de comandos, mientras que las
constantes se utilizan en los mensajes de comandos.
X- 7
X- 8
Cuando se abre un dispositivo, se puede usar la bandera de "seudnimo" o "alias" para especificar un
identificador del dispositivo para el dispositivo. Esta bandera le permite asignar un identificador corto del
dispositivo para los dispositivos compuestos con nombres de archivo largo, y le permite abrir casos mltiples
del mismo archivo o dispositivo.
Por ejemplo, el comando siguiente asigna el de identificador de dispositivo al nombre de archivo largo
C:\NABIRDS\SOUNDS\MOCKMTNG.WAV:
mciSendString(
"open c:\nabirds\sounds\mockmtng.wav tipo de alia para wave ",
lpszReturnString, lstrlen(lpszReturnString), NULL);
En la interfaz del comando mensaje, la funcionalidad de la bandera del "type" se proporciona por el miembro
del lpstrDeviceType de la estructura MCI_OPEN_PARMS
Los Dispositivos simples y Compuestos
MCI clasifica a los driver del dispositivo como simple o compuesto. Los drivers para los dispositivos
compuestos requieren el nombre de un archivo del datos para la reproduccin; los drivers para los dispositivos
simples no lo hacen.
Los dispositivos simples incluyen cd de audio y dispositivos del video. Hay dos maneras de abrir los
dispositivos simples:
Especificando un indicador a un string null-terminated que contiene el nombre del dispositivo del
registro o el archivo SYSTEM.INI. Por ejemplo, para abrir un dispositivo de video usando el
comando siguiente:
mciSendString ("open videodisc", lpszReturnString,
lstrlen(lpszReturnString), NULL);
En este caso, el "video" es el nombre del dispositivo en el registro o en la seccin [ mci] de SYSTEM.INI.
Especificando el nombre real del driver del dispositivo. Abriendo un dispositivo que usa el nombre
de archivo del driver del dispositivo, sin embargo, hace que la aplicacin sea especifica del
dispositivo y puede impedir que la aplicacin corra sin los cambios de la configuracin de sistema.
Si se usa un nombre de archivo, no es necesario especificar el camino completo o la extensin del
archivo, MCI asume que el driver se localiza en un directorio del sistema y su extensin es DRV.
Los dispositivos compuestos incluyen waveaudio y dispositivos sequencer.
Hay tres maneras de abrir un dispositivo compuesto:
Especificando slo el nombre del dispositivo. Esto le permite abrir un dispositivo compuesto sin
asociar un nombre de archivo.
Especificando slo el nombre de archivo. El nombre del dispositivo es determinado de las
asociaciones en el registro.
Especificando el nombre de archivo y el de dispositivo. MCI ignora las entradas en el registro y abre
el nombre del dispositivo especificado.
Para asociar un archivo de datos con un dispositivo particular, se especifica el nombre de archivo y el nombre
del dispositivo. Por ejemplo, el comando siguiente abre el dispositivo de waveaudio con el archivo
MYVOICE.SND:
mciSendString("open myvoice.snd type waveaudio", lpszReturnString, lstrlen(lpszReturnString), NULL);
X- 9
Si el comando (MCI_OPEN ) especifica slo el nombre del archivo, MCI usa la extensin del archivo para
seleccionar el dispositivo apropiado de la lista del registro o de las extensiones del mci en la seccin del
archivo SYSTEM.INI.
Archivo nuevo de dato
Para crear un archivo nuevo de datos, simplemente se especifica un nombre de archivo. MCI no guarda un
nuevo archivo hasta que no se lo guarde usando (MCI_SAVE ). Al crear un nuevo archivo, se debe incluir un
alias del dispositivo con (MCI_OPEN ).
El ejemplo siguiente abre un archivo nuevo de waveaudio, comienza y finaliza el grabado, entonces guarda y
cierra el archivo:
mciSendString("open new type waveaudio alias capture", lpszReturnString, lstrlen(lpszReturnString), NULL);
mciSendString("record capture", lpszReturnString, lstrlen(lpszReturnString), NULL);
mciSendString("stop capture", lpszReturnString, lstrlen(lpszReturnString), NULL);
mciSendString("save capture orca.wav", lpszReturnString, lstrlen(lpszReturnString), NULL);
mciSendString("close capture", lpszReturnString,lstrlen(lpszReturnString), NULL);
Ejecutando un Dispositivo
El comando (MCI_PLAY ) ejecuta la reproduccin de un dispositivo. Sin cualquier bandera, este comando
empieza reproducir en la posicin actual y reproduce hasta que el comando se interrumpa o hasta el fin del
archivo. Tambin se puede usar (MCI_SEEK ) para cambiar la posicin actual.
La mayora de los dispositivos que soportan el comando tambin soportan las banderas (MCI_FROM) y
(MCI_TO). Estas banderas indican la posicin a que el dispositivo debe empezar y debe detener la
reproduccin.
Las unidades asignadas al valor de la posicin dependen del formato de tiempo usado por el dispositivo. Cada
dispositivo tiene un formato de tiempo predefinido, pero se debe especificar el formato de tiempo usando
(MCI_SET ) antes de emitir cualquier comando que usa los valores de la posicin.
Grabacin
La especificacin generales de MCI soportan grabacin de video-digital, secuencias MIDI, VCR, y los
dispositivos de audio del tipo forman de onda; sin embargo, slo se usa en audio-waveform y dispositivos de
VCR. Se puede insertar o borrar la informacin grabada en un archivo existente o se puede grabar en un
nuevo archivo. Para grabar en un archivo existente, se abre un dispositivo de audio-waveform y se guarda
como se hace normalmente. Para grabar en un nuevo archivo con la interfaz de comando mensaje, se
especifica un archivo de longitud cero.
Cuando MCI crea un nuevo archivo para grabar, el formato de los datos se pone a un formato predefinido
especificado por el driver del dispositivo. Para usar otro tipo formato de que no sea el formato predefinido, se
debe usar el comando (MCI_SET).
X - 10
Para empezar a grabar, se usa un registro y un comando ellos son: ( MCI_RECORD y la estructura
MCI_RECORD_PARMS ).
Si no se especifica un fin, la grabacin contina hasta que se enve una parada (MCI_STOP ). Si se graba en
un archivo nuevo, se puede empezar a grabar al principio del archivo nuevo y especificar una situacin de fin
para terminar la grabacin.
Cerrando un Dispositivo
El cierre se realiza con el comando (MCI_CLOSE ) libera el acceso del comando a un dispositivo o archivo.
MCI libera un dispositivo cuando todas las tareas que usan un dispositivo lo han cerrado. Para ayudar a MCI a
manejar los dispositivos, la aplicacin debe cerrar cada dispositivo o archivo cuando ya fue usando.
Cuando se cierra un dispositivo externo de MCI que usa sus propios medios de comunicacin en lugar de los
archivos (como el CD audio), el driver deja el dispositivo en su modo actual de funcionamiento. As, si se
cierra un dispositivo de CD de audio que est reproduciendo, aunque el driver del dispositivo se libera de la
memoria, el CD de audio continuar reproduciendo hasta que alcance el fin de su volumen.
X - 11
1. Abrir un dispositivo con el comando MCI_OPEN y los parmetros necesarios (dispositivo y fichero) en la
estructura MCI_OPEN_PARMS. En este caso, el parmetro wIDDispositivo se deja a cero.
2. Almacenar en una variable, el identificador del dispositivo abierto, retornado en el campo wDeviceID de
MCI_OPEN_PARMS, en la llamada anterior.
3. A partir de la obtencin de este identificador, lo podremos utilizar para cualquier otra operacin.
4. Consultar el estado del dispositivo, con el comando MCI_STATUS y la estructura CI_STATUS_PARMS.
5. Modificar algn parmetro del dispositivo, con el comando MCI_SET y la estructura MCI_SET_PARMS.
6. Reproducir un fichero con el comando MCI_PLAY y la estructura MCI_PLAY_PARMS.
7. Grabar un fragmento (slo aplicable al dispositivo de onda) con el comando MCI_RECORD y la estructura
MCI_RECORD_PARMS.
8. Tambin se pueden utilizar los comandos MCI_PAUSE, MCI_RESUME y MCI_STOP, para parar
temporalmente, reanudar, o parar definitivamente la reproduccin o la grabacin. En este caso no se utiliza
ninguna estructura, dejando por lo tanto a cero el ltimo parmetro de la funcin.
9. Salvar un fichero a disco con el comando MCI_SAVE y la estructura MCI_SAVE_PARMS.
10.Cerrar un dispositivo con el comando MCI_CLOSE. No se utiliza ninguna estructura, por lo que el ltimo
parmetro se deja a cero.
En caso de que se produzca algn error, se puede utilizar la funcin mciGetError(), que devuelve una cadena
con el mensaje de error correspondiente al cdigo numrico.
X - 12
Captulo 11
Programa de adquisicin
Introduccin
Este programa de adquisicin se basa en tomar datos desde la placa de sonido mediante el uso de los
comandos MCI de Windows y almacenarlos en un archivo del tipo de forma de onda o WAVE, a su vez esta
aplicacin se ejecuta bajo el sistema operativo Windows y posee un entorno grafico.
La aplicacin fue desarrollada en Dev-C++ 4, el cual nos permite el uso de las API de Windows y el uso de
los comandos MCI.
Independencia de la mquina
Los programas Windows son independientes de la mquina en la que se ejecutan, el acceso a los dispositivos
fsicos se hace a travs de interfaces, y nunca se accede directamente a ellos. Esta es una de las principales
ventajas para el programador, ya que no hay que preocuparse por el modelo de tarjeta grfica o de impresora,
la aplicacin funcionar con todas, y ser el sistema operativo el que se encargue de que as sea.
Recursos
Un concepto importante es el de recurso. Desde el punto de vista de Windows, un recurso es todo aquello que
puede ser usado por una o varias aplicaciones. Existen recursos fsicos, que son los dispositivos que
componen el ordenador, como la memoria, la impresora, el teclado o el ratn y recursos virtuales o lgicos,
como los grficos, los iconos o las cadenas de caracteres.
Por ejemplo, si nuestra aplicacin requiere el uso de un puerto serie, primero debe averiguar si est
disponible, es decir, si existe y si no lo est usando otra aplicacin; y despus lo reservar para su uso. Esto es
necesario porque este tipo de recurso no puede ser compartido. Lo mismo pasa con la memoria o con la tarjeta
de sonido, aunque son casos diferentes. Por ejemplo, la memoria puede ser compartida, pero de una forma
general, cada porcin de memoria no puede compartirse, y se trata de un recurso finito. Las tarjetas de sonido,
dependiendo del modelo, podrn o no compartirse por varias aplicaciones.
Otros recursos como el ratn y el teclado tambin se comparten, pero se asigna su uso automticamente a la
aplicacin activa, a la que normalmente mantiene contacto con el usuario.
Desde otro punto de vista, tambin consideramos recursos a varios componentes como los mens, los iconos,
los cuadros de dilogo, las cadenas de caracteres, los mapas de bits, los cursores, etc. En sus programas,
Windows almacena separados el cdigo y los recursos, dentro del mismo fichero, y estos ltimos pueden ser
editados por separado, permitiendo por ejemplo, hacer versiones de los programas en distintos idiomas sin
tener acceso a los ficheros fuente de la aplicacin.
Ventanas
La forma en que se presentan las aplicaciones Windows ante el usuario, es la ventana. Cada aplicacin tiene
al menos una ventana, la ventana principal, y todas las comunicaciones entre usuario y aplicacin se canalizan
a travs de una ventana. Cada ventana comparte el espacio de la pantalla con otras ventanas, incluso de otras
aplicaciones, aunque slo una puede estar activa, es decir, slo una puede recibir informacin del usuario.
XI - 1
Eventos
Los programas en Windows estn orientados a eventos, esto
significa que normalmente los programas estn esperando a que
se produzca un acontecimiento que les incumba, y mientras
tanto permanecen aletargados o dormidos.
Un evento puede ser por ejemplo, el movimiento del ratn, la
activacin de un men, la llegada de informacin desde el
puerto serie, una pulsacin de una tecla...
Esto es as porque Windows es un sistema operativo multitarea,
y el tiempo del microprocesador ha de repartirse entre todos los
programas que se estn ejecutando. Si los programas fueran
secuenciales puros, esto no sera posible, ya que hasta que una
aplicacin finalizara, el sistema no podra atender al resto.
Proyectos
Debido a la complejidad de los programas Windows, normalmente los dividiremos en varios ficheros fuente,
que se compilan por separado y se enlazan juntos.
Para crear un proyecto Windows usando este compilador elegiremos el men "File/New Project". Se abrir un
cuadro de dilogo donde podremos elegir el tipo de proyecto. Elegimos "Windows Application" y "C++
Project". A continuacin pulsamos "Aceptar".
El compilador crea un proyecto con un fichero C++, con el esqueleto de una aplicacin para una ventana.
Controles
Los controles son la forma en que las aplicaciones Windows intercambian datos con el usuario. Normalmente
se usan dentro de los cuadros de dilogo, pero pueden usarse en cualquier ventana.
Los ms importantes son:
Control estatic: son etiquetas, marcos, iconos o dibujos.
Control edit: permiten que el usuario introduzca datos alfanumricos en la aplicacin.
Control list box: el usuario puede escoger entre varias opciones de una lista.
Control combo box: es una combinacin entre un edit y un list box.
Control scroll bar: barras de desplazamiento, para la introduccin de valores entre mrgenes
definidos.
Control button: realizan acciones o comandos, de button de derivan otros dos controles muy
comunes:
1. Control check box: permite leer variables de dos estados "checked" o "unchecked"
2. Control radio button: Se usa en grupos, dentro de cada grupo slo uno puede ser activado.
XI - 2
Para que la aplicacin pueda ser ejecutada bajo Windows fue necesario incluir la siguiente librera:
winmm.lib.
#include <windows.h>
#include <mmsystem.h>
#include <stdlib.h>
#include <stdio.h>
#include "ids.h"
#pragma comment(lib, "winmm.lib").
Funcin por la cual realizamos el manejo con caracteres alfanumricos de un control edit:
BOOL CALLBACK DlgProc3(HWND, UINT, WPARAM, LPARAM);
3.
Funcin por la cual realizamos el manejo con caracteres numricos de un control edit:
BOOL CALLBACK DlgProcnum(HWND, UINT, WPARAM, LPARAM);
Las funciones utilizadas para la grabacin y reproduccin de ficheros WAVE se declaran de la siguiente
forma:
1.
2.
Tiempo de adquisicin que se realiza en milisegundos, es del tipo entero ya que solo se admiten
caracteres tipo numrico:
int MilliSeconds;
3.
Nombre del archivo con que guardaremos nuestra adquisicin, es un array de caracteres:
char Nombre[80];
4.
Para poder almacenar nuestro nombre de archivo haremos uso de una estructura, en la cual existe un
solo parmetro tipo carcter:
XI - 3
Para poder almacenar nuestro tiempo de muestreo y luego verificar que se incluyen solo caracteres
numricos usaremos una estructura, en la cual existe un solo parmetro tipo entero: typedef struct
inDatos
{
int Numero;
} INDATOS;
XI - 4
A continuacin se crea la ventana usando la funcin CreateWindowEx. Esta funcin nos devuelve un
manipulador de ventana que podemos necesitar en otras funciones.
Para que la ventana sea visible hay que llamar a la funcin ShowWindow. La primera vez que se llama a sta
funcin, despus de crear la ventana, se puede usar el parmetro nCmdShow de WinMain como parmetro o
mejor an, como se recomienda por Windows, el valor SW_SHOWDEFAULT.
Estructura de la ventana:
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof(WNDCLASSEX);
Usa icono y puntero del ratn por defecto:
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
Registra la clase de ventana, si falla sale del programa:
if(!RegisterClassEx(&wincl)) return 0;
La clase es registrada, ya se puede crear el programa:
hwnd = CreateWindowEx(
0,
/* Extended possibilities for variation */
szClassName,
/* Classname */
"Adquisidor de Datos ",
/* Title Text */
WS_OVERLAPPEDWINDOW,
/* default window */
CW_USEDEFAULT,
/* Windows decides the position */
CW_USEDEFAULT,
/* where the window ends up on the screen */
544,
/* The programs width */
375,
/* and height in pixels */
HWND_DESKTOP,
/* The window is a child-window to desktop */
LoadMenu(hThisInstance, "Men"),/* men llamado del recurso win003.rc*/
hThisInstance,
/* Program Instance handler */
NULL
/* No Window Creation data */
);
Visualizacin de la ventana:
ShowWindow(hwnd, nFunsterStil);
Bucle de mensajes
Este es el ncleo de la aplicacin, como se ve en el programa permanece en este bucle mientras la funcin
GetMessage retorne con un valor TRUE si retorna cero sale de la aplicacin.
while(GetMessage(&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
/* Translate virtual-key messages into character messages */
DispatchMessage(&messages);
/* Send message to WindowProcedure */
}
La funcin TranslateMessage se usa para traducir los mensajes de teclas virtuales a mensajes de carcter. Los
mensajes traducidos se reenvan a la lista de mensajes del proceso, y se recuperarn con las siguientes
XI - 5
El procedimiento de ventana
Cada ventana tiene una funcin asociada, esta funcin se conoce como procedimiento de ventana, y es la
encargada de procesar adecuadamente todos los mensajes enviados a una determinada clase de ventana. Es la
responsable de todo lo relativo al aspecto y al comportamiento de una ventana.
Normalmente, estas funciones estn basadas en una estructura "switch" donde cada "case" corresponde aun
determinado tipo de mensaje. Esta funcin es llamada por la funcin del API DispatchMessage().
LRESULT CALLBACK WindowProcedure( HWND hwnd, UINT message,WPARAM wParam LPARAM )
Podemos considerar este prototipo como una plantilla para crear nuestros propios procedimientos de ventana.
El nombre de la funcin puede cambiar, pero el valor de retorno y los parmetros deben ser los mismos. El
miembro lpfnWndProc de la estructura WNDCLASS es un puntero a una funcin de este tipo, esa funcin es
la que se encargar de procesar todos los mensajes para esa clase de ventana. Cuando registremos nuestra
clase de ventana, tendremos que asignar a ese miembro el puntero a nuestro procedimiento de ventana.
Ya que esta funcin se encuentra fuera de la funcin Winmain debemos declarar algunas variables que se
usaran a lo largo de la aplicacin:
Declaramos una variable tipo puntero a carcter la cual posee la direccin y el nombre de archivo:
char* WAV="c:\tdiii\tmp.wav";
Declaro como static las variables para el dilogo:
static HINSTANCE hInstance;
static DATOS Datos;
static INDATOS inDatos;
Manipulador de mensajes:
La estructura swich tiene la siguiente forma en donde cada case corresponde a un mensaje:
switch (message)
{
case WM_CREATE:
*
*
*
return 0;
break;
case WM_COMMAND:
*
*
*
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
XI - 6
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
WM_DESTROY es el mensaje que se enva a una ventana cuando se recibe un comando de cerrar, ya sea por
men o mediante el icono de aspa en la esquina superior derecha de la ventana.
Este mensaje slo sirve para informar a la aplicacin de que el usuario tiene la intencin de abandonar la
aplicacin, y le da una oportunidad de dejar las cosas en su sitio: cerrar ficheros, liberar memoria, guardar
variables, etc. Incluso, la aplicacin puede decidir que an no es el momento adecuado para abandonar la
aplicacin. En este caso, efectivamente cierra la aplicacin, y lo hace envindole un mensaje WM_QUIT,
mediante la funcin PostQuitMessage.
El resto de los mensajes se procesan en el caso "default", y simplemente se cede su tratamiento a la funcin
del API que hace el proceso por defecto para cada mensaje, DefWindowProc.
Este es el camino que sigue el mensaje WM_QUIT cuando llega, ya que el proceso por defecto para este
mensaje es cerrar la aplicacin.
Mens
Un men: se trata de una ventana, del tipo pop-up, que contiene una lista de comandos u opciones entre las
cuales el usuario puede elegir.
Cuando se usan en una aplicacin, normalmente se agrupan varios mens bajo una barra horizontal, dividida
en varias zonas o tems.
Cada tem de un men, (salvo los separadores y aquellos que despliegan nuevos mens), tiene asociado un
identificador, este identificador se declara en el archivo cabecera ids.h. El valor de ese identificador se usar
por la aplicacin para saber qu opcin se activ por el usuario, y decidir las acciones a tomar en
consecuencia.
Respondiendo a los mensajes del men
Las activaciones de los mens se reciben mediante un mensaje WM_COMMAND. Para procesar estos
mensajes, si slo podemos recibir mensajes desde un men, nicamente nos interesa la palabra de menor peso
del parmetro wParam del mensaje.
switch (message)
{
case WM_CREATE:
/* Inicializacin de los datos de la aplicacin */
hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
strcpy(Datos.Texto, "c:\\tdiii\\tmp.wav"); //Copio el nom, de arch. a la estructura
strcpy(Nombre,Datos.Texto); //copio de la estructura a la variable Nombre
inDatos.Numero = MilliSeconds; // asigno el valor de MilliSeconds al parmetro de la estructura
return 0;
break;
case WM_COMMAND:
switch(LOWORD(wParam)) //la macro LOWORD para extraer el identificador del tem del
//parmetro wParam.
{
case CM_ADQ: // ** MENU ** --> GRABAR
//Muestro el tiempo de adquisicin
DialogBoxParam(hInstance, "Dialogo2", hwnd, DlgProc2, MilliSeconds);
//funcin grabar
recordWAVEFile(hwnd, MilliSeconds); //llamo a la fc grabar
/* Msg adquisicin terminada */
MessageBox(hwnd, "Adquisicin terminada", "Adquisidor", MB_OK);
XI - 7
break;
case CM_REP:
// ** MENU ** --> REPRODUCIR
/* Rutina de REPROPDUCCION */
playWaveFile(hwnd, Nombre);
/* Msg reproduccin terminada */
MessageBox(hwnd, "Reproduccin terminada", "Adquisidor", MB_OK);
break;
case CM_SALIR: // ** MENU ** --> SALIR
PostQuitMessage(0); /* enva un mensaje WM_QUIT a la cola de mensajes */
break;
case CM_ARCH: // MENU -> config -> arch
DialogBoxParam(hInstance, "Dialogo3", hwnd, DlgProc3, (LPARAM)&Datos);
strcpy(Nombre,Datos.Texto);
MessageBox(hwnd, "Esta fc. no esta incluida", "Adquisidor", MB_OK);
break;
case CM_TIEMPO: // MENU -> config -> tiempo
DialogBoxParam(hInstance, "Dialogonum", hwnd, DlgProcnum, (LPARAM)&inDatos);
MilliSeconds = inDatos.Numero; //cargo el entero con el valor de la estructura
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
/* enva un mensaje WM_QUIT a la cola de mensajes*/
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
El mensaje WM_CREATE tiene como parmetro en lParam un puntero a una estructura CREATESTRUCT
que contiene informacin sobre la ventana. En nuestro caso slo nos interesa el campo hInstance.
XI - 8
Abre un dispositivo de audio de forma de onda con un nuevo archivo para grabar utilizo el archivo adq.wav,
este archivo solo posee las cabeceras de una archivo WAVE.
mciOpenParms.lpstrDeviceType = "waveaudio";
mciOpenParms.lpstrElementName = "adq.wav";
Verifico si el dispositivo abri correctamente:
if (dwReturn = mciSendCommand(0, MCI_OPEN,
MCI_OPEN_ELEMENT | MCI_OPEN_TYPE,
(DWORD)(LPVOID) &mciOpenParms))
{
// Falla al abrir el dispositivo; devuelve error.
MessageBox(hMainWnd, "ERROR apertura ID", "Adquisidor", MB_OK);
return (dwReturn);
}
Si el dispositivo abri con xito; obtengo el ID al dispositivo.
wDeviceID = mciOpenParms.wDeviceID;
Ya nos encontramos en condiciones de iniciar la grabacin con el tiempo de adquisicin ya antes previsto.
mciRecordParms.dwTo = dwMilliSeconds;
if (dwReturn = mciSendCommand(wDeviceID, MCI_RECORD,
MCI_TO | MCI_WAIT, (DWORD)(LPVOID) &mciRecordParms))
{
mciSendCommand(wDeviceID, MCI_CLOSE, 0, 0);
MessageBox(hMainWnd, "Adquisicin exitosa", "Adquisidor", MB_OK);
return (dwReturn);
}
Ejecuta la grabacin para verificar que sea correcta.
MessageBox(hMainWnd, "Ejecuto la adq", "Adquisidor", MB_OK);
mciPlayParms.dwFrom = 0L;
if (dwReturn = mciSendCommand(wDeviceID, MCI_PLAY,
MCI_FROM | MCI_WAIT, (DWORD)(LPVOID) &mciPlayParms))
{
mciSendCommand(wDeviceID, MCI_CLOSE, 0, 0);
return (dwReturn);
}
Se esta en condiciones de guardar el archivo con un nombre por defecto.
if (MessageBox(hMainWnd, "Guardar la adq?",
"", MB_YESNO) == IDNO)
{
mciSendCommand(wDeviceID, MCI_CLOSE, 0, 0);
return (0);
}
// Guardo la adquisicin con el nom de arch.
mciSaveParms.lpfilename = "temp.wav";
if (dwReturn = mciSendCommand(wDeviceID, MCI_SAVE,
MCI_SAVE_FILE | MCI_WAIT, (DWORD)(LPVOID) &mciSaveParms))
{
mciSendCommand(wDeviceID, MCI_CLOSE, 0, 0);
MessageBox(hMainWnd, "ERROR no se Guardo", "Adquisidor", MB_OK);
return (dwReturn);
}
XI - 9
Una vez finalizado todo el proceso debo finalizar el dispositivo y retornar un valor a la aplicacin que llamo a
esta funcin.
mciSendCommand(wDeviceID, MCI_CLOSE, 0, 0); // cierro el dispositivo antes de salir
return (0);
Funcin Reproducir:
El prototipo de la funcin es el siguiente:
DWORD playWaveFile(HWND hMainWnd, LPSTR lpstrNombreFichero)
En donde:
HWND hMainWnd, es el tipo de ventana
LPSTR lpstrNombreFichero, es un puntero con el nombre del archivo a reproducir.
Definicin de variables:
UINT wIDDispositivo;
DWORD dwRetorno;
MCI_OPEN_PARMS mciOpenParms;
MCI_PLAY_PARMS mciPlayParms;
Abrimos dispositivo, indicando tipo de archivo y fichero, en este caso es Temp.wav:
mciOpenParms.lpstrDeviceType = "waveaudio";
mciOpenParms.lpstrElementName = "temp.wav";
Una ves indicado el tipo de fichero y archivo debemos obtener el id del dispositivo.
MessageBox(hMainWnd, "Comienzo de la Reproduccin", "Adquisidor", MB_OK);
if (dwRetorno = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID)&mciOpenParms))
{
MessageBox(hMainWnd, "ERROR en apertura", "Adquisidor", MB_OK);
return (dwRetorno); //Error en la apertura
}
//Apertura correcta. Obtenemos el identificador
wIDDispositivo = mciOpenParms.wDeviceID;
MessageBox(hMainWnd, "Apertura OK, ID OK", "Adquisidor", MB_OK);
Se inicia la reproduccin.
mciPlayParms.dwFrom = 0L;
if (dwRetorno = mciSendCommand(wIDDispositivo, MCI_PLAY,
MCI_FROM | MCI_WAIT, (DWORD)(LPVOID) &mciPlayParms))
{
mciSendCommand(wIDDispositivo, MCI_CLOSE, 0, 0);
MessageBox(hMainWnd, "ERROR reproduccin", "Adquisidor", MB_OK);
return (dwRetorno);
}
Terminada la reproduccin finalizamos el dispositivo.
mciSendCommand(wIDDispositivo, MCI_CLOSE, 0, 0); // cierro el dispositivo antes de salir
return (0);
XI - 10
Funciones de dilogo
Funcin Imprimir dilogo(Imprime en pantalla en tiempo de adquisicin)
El procedimiento de la funcin es el siguiente:
BOOL CALLBACK DlgProc2(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
En donde:
HWND hDlg, identifica el cuadro de dilogo y es el manipulador de la ventana a la que est
destinado el mensaje.
UINT msg, es el cdigo del mensaje
WPARAM wParam, es el parmetro de tipo palabra asociado al mensaje
LPARAM lParam, es el parmetro de tipo doble palabra asociado al mensaje
El procedimiento de dilogo debe retornar con un valor no nulo si procesa el mensaje y cero si no lo hace.
Cuando responde a un mensaje WM_INITDIALOG, el procedimiento debe retornar cero si llama a la funcin
SetFocus para poner el foco a uno de los controles del cuadro de dilogo. En otro caso, debe
retornar un valor distinto de cero, y el sistema pondr el foco en el primer control del dilogo que pueda
recibirlo.
{
char texto[25];
switch (msg) /* manipulador del mensaje */
{
case WM_INITDIALOG:
sprintf(texto, "T. de adq. (ms): %d", lParam);
SetWindowText(GetDlgItem(hDlg, TEXTO), texto);
return TRUE;
case WM_COMMAND:
EndDialog(hDlg, FALSE);
return TRUE;
}
return FALSE;
Hemos usado la funcin estndar sprintf para conseguir un texto esttico a partir del parmetro lParam.
Posteriormente, usamos ese texto para modificar el control esttico TEXTO. La funcin SetWindowText
se usa para cambiar el ttulo de una ventana, pero tambin sirve para cambiar el texto de un control esttico.
Funcin dilogo Nombre de archivo
Podemos introducir y modificar texto en el cuadro de dilogo, pero no podemos asignar valores iniciales al
control de edicin ni tampoco podemos hacer que la aplicacin tenga acceso al texto introducido por el
usuario.
Lo primero que tenemos que tener es algn tipo de variable que puedan compartir los procedimientos de
ventana de la aplicacin y el del dilogo. En nuestro caso se trata slo de una cadena. Se trata de crear una
estructura con todos los datos que queremos que el procedimiento de dilogo comparta con el procedimiento
de ventana, al declaracin de esta estructura se define como variable global.
El procedimiento de la funcin es el siguiente:
BOOL CALLBACK DlgProc3(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
Existe un modo de pasar parmetros al cuadro de dilogo, usando la funcin DialogBoxParam, a travs del
parmetro lParam. Aunque esta opcin nos limita a valores enteros, y slo permite pasar valores al
procedimiento de dilogo, en realidad se puede usar para pasar valores en ambos sentidos, bastar con enviar
un puntero en lugar de un entero. Para ello haremos un llamado del puntero al tipo LPARAM. Dentro del
procedimiento de dilogo haremos otro llamado de LPARAM al puntero. Esto nos permite declarar la
variable que contiene los datos dentro del procedimiento de ventana.
XI - 11
Ahora tenemos que hacer que se actualice el contenido del control edit al abrir el cuadro de dilogo.
El lugar adecuado para hacer esto es en el proceso del mensaje WM_INITDIALOG.
case WM_INITDIALOG:
SendDlgItemMessage(hDlg, ID_TEXTO, EM_LIMITTEXT, 80, 0L);
Datos = (DATOS *)lParam;
SetDlgItemText(hDlg, ID_TEXTO, Datos->Texto);
SetFocus(GetDlgItem(hDlg, ID_TEXTO));
return FALSE;
Existen dos llamadas a dos funciones del API. La primera es a SendDlgItemMessage, que enva un mensaje a
un control. En este caso se trata de un mensaje EM_LIMITTEXT, que sirve para limitar la longitud del texto
que se puede almacenar y editar en el control edit. Es necesario que hagamos esto, ya que el texto que puede
almacenar nuestra estructura de datos est limitado a 80 caracteres.
Tambin hemos aadido una llamada a la funcin SetDlgItemText, que cambia el contenido del texto en el
interior de un control edit.
Al pulsar el botn de aceptar, el dato de nuestra aplicacin se actualiza con el texto que hay en el control edit.
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
GetDlgItemText(hDlg, ID_TEXTO, Datos->Texto, 80);
EndDialog(hDlg, FALSE);
break;
case IDCANCEL:
EndDialog(hDlg, FALSE);
break;
}
Para eso hemos aadido la llamada a la funcin GetDlgItemText, que es simtrica a SetDlgItemText.
Funcin dilogo Tiempo de adquisicin
Para la edicin de nmeros, el API tiene previstas algunas constantes y funciones. Igual que el caso anterior
debemos crear una estructura con un parmetro, pero en este caso debe ser entero.
El prototipo de la funcin es el siguiente:
BOOL CALLBACK DlgProcnum(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
Para actualizar el contenido del control edit al abrir el cuadro de dilogo se realiza en el proceso del mensaje:
WM_INITDIALOG:
switch (msg) /* manipulador del mensaje */
{
case WM_INITDIALOG:
datos = (INDATOS *)lParam; //el dato contenido en el estructura lo paso a dato
SetDlgItemInt(hDlg, ID_NUMERO, (UINT)datos->Numero, FALSE);//cambia el contenido del
control a un control numrico
SetFocus(GetDlgItem(hDlg, ID_NUMERO));
return FALSE;
En este caso no es necesario limitar el texto que podemos editar en el control, ya que las propias funciones del
API se encargan de capturar y convertir el contenido del control en un nmero.
SetDlgItemInt, cambia el contenido de un control edit con un valor numrico.
XI - 12
Para leer el contenido cuando procesemos el comando generado al pulsar el botn de "Aceptar" aadimos la
llamada a la funcin GetDlgItemInt, que es simtrica a SetDlgItemInt. El proceso difiere del usado para
capturar cadenas, ya que en este caso la funcin nos devuelve el valor numrico del contenido del control edit.
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
numero = GetDlgItemInt(hDlg, ID_NUMERO, &NumeroOk, FALSE);//lee el contenido del control
if(NumeroOk)
{
datos->Numero = numero;
EndDialog(hDlg, FALSE);
}
else
MessageBox(hDlg, "Nmero no vlido", "Error", MB_ICONEXCLAMATION | MB_OK);
break;
case IDCANCEL: EndDialog(hDlg, FALSE);
break;
}
Tambin devuelve un parmetro que indica si ha habido algn error durante la conversin. Si el valor de ese
parmetro es TRUE, significa que la conversin se realiz sin problemas, si es FALSE, es que ha habido un
error. Si nuestro programa detecta un error visualizar un mensaje de error y no permitir abandonar el cuadro
de dilogo.
Pero si ha habido un error, el valor de retorno de GetDlgItemInt ser cero. El flag
BM_ICONEXCLAMATION en el MessageBox, aade un icono al cuadro de mensaje y el sonido
predeterminado para alertar al usuario.
Ficheros de recursos
Una forma de implementar mens es por medio de un fichero de recursos, para crear o modificar mens
durante la ejecucin de la aplicacin.
1. Usaremos siempre etiquetas como identificadores para los tems de los mens, y nunca valores numricos
literales.
2. Crearemos un fichero de cabecera con las definiciones de los identificadores, en nuestro caso se llamar
"ids.h".
XI - 13
3. Incluiremos este fichero de cabecera tanto en el fichero de recursos, como en el del cdigo fuente de
nuestra aplicacin.
Dev-C++, posee un editor de recursos: File New Resource File. En el cual editaremos nuestro recurso.
En nuestro recurso hemos incluido un icono para la aplicacin de la siguiente forma:
win003 ICON "c:\\tdiii\\Multimedia.ico"
En un recurso se debe incluir los ficheros de cabecera utilizados:
#include <windows.h>
#include "ids.h"
En un fichero de recursos podemos crear toda la estructura de un men.
Men
Menu MENU
BEGIN
POPUP "&Adquirir"
BEGIN
MENUITEM "&Adquirir", CM_ADQ
MENUITEM SEPARATOR
MENUITEM "&Reproducir", CM_REP
MENUITEM SEPARATOR
MENUITEM "&Salir", CM_SALIR
END
POPUP "&Configurar"
BEGIN
MENUITEM "&Archivo", CM_ARCH
MENUITEM SEPARATOR
MENUITEM "&Tiempo", CM_TIEMPO
END
END
Definimos el men mediante una cadena identificadora, sin comillas, seguida de la palabra MENU. Entre las
palabras BEGIN y END podemos incluir items, separadores u otras columnas. Para incluir columnas usamos
una sentencia del tipo POPUP seguida de la cadena que se mostrar como texto en el men. Cada
POPUP se comporta del mismo modo que un MENU.
Los tems se crean usado la palabra MENUITEM seguida de la cadena que se mostrar en el men, una coma,
y el comando asignado a ese tem, que puede ser un nmero entero, o, como en este caso, una macro definida.
Los separadores se crean usando MENUITEM seguido de la palabra SEPARATOR.
El smbolo & , por ejemplo "&Adquirir" indica que la siguiente letra puede usarse para activar la opcin del
men desde el teclado, usando la tecla [ALT] ms la letra que sigue al smbolo &. Para indicar eso, en
pantalla, esa letra se muestra subrayada.
Dilogos.
Los cuadros de dilogo son la forma de ventana de comunicacin entre una aplicacin Windows y el usuario.
Para facilitar la tarea del usuario a la hora de introducir datos, existen varios tipos de controles, cada uno de
ellos diseado para un tipo especfico de informacin. Los ms comunes son los "static", "edit", "button",
"listbox", "scroll", "combobox", "group", "checkbutton", "ratiobutton", "updown", "listview", "treeview",
"gauge", "tab" y "trackbar".
Un cuadro de dilogo es una ventana normal, aunque con algunas peculiaridades. Tambin tiene su
procedimiento de ventana (procedimiento de dilogo), pero puede devolver un valor a la ventana que lo
invoque. Igual que los mens, los cuadros de dilogo se pueden construir durante la ejecucin o a partir de un
fichero de recursos.
Dialogo2 DIALOG
0, 0, 118, 48
XI - 14
STYLE DS_MODALFRAME | //se crear un cuadro de dilogo con un marco de dialog-box modal
que puede combinarse con una barra de ttulo y un men de sistema.
WS_POPUP |
//crea una ventana "pop-up".
WS_VISIBLE |
//crea una ventana inicialmente visible.
WS_CAPTION CAPTION
//crea una ventana con una barra de ttulo,
"Adquisidor"
//Nombre de la ventana.
FONT 8, "Helv"
// Fuente y tamao de la letra
BEGIN
CONTROL
// palabra clave que indica que vamos a definir un control.
"Tiempo (ms):",
//texto que se mostrara
TEXTO,
//id es el identificador del control.
"static",
// class es la clase de control, en nuestro caso "static".
SS_LEFT |
//indica un simple rectngulo y el texto suministrado se alinea en su
//Interior a la izquierda.
WS_CHILD |
//crea el control como una ventana hija.
WS_VISIBLE,
//crea una ventana inicialmente visible.
8, 9, 84, 8
// coordenadas del control.
CONTROL "Aceptar",
IDOK,
//esta definido dentro de windows.h
"button",
//class es la clase de control, en nuestro caso "button".
BS_PUSHBUTTON | //crea un botn corriente que enva un mensaje WM_COMMAND
BS_CENTER |
// centra el texto horizontalmente en el rea del botn.
WS_CHILD |
WS_VISIBLE |
WS_TABSTOP,
// define un control que puede recibir el foco del teclado cuando el
//Usuario pulsa la tecla TAB.
56, 26, 50, 14
END
Dialogo3 DIALOG //Nombre de arch "mensaje de guardar"
0, 0, 118, 48
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION CAPTION
"Adquisidor" FONT 8, "Helv"
BEGIN
CONTROL "Archivo:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 8, 9, 28, 8
CONTROL "",
ID_TEXTO, "EDIT", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,
36, 9, 76, 12
CONTROL "Aceptar", IDOK, "BUTTON",BS_DEFPUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 8, 26, 45, 14
CONTROL "Cancelar", IDCANCEL, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 61, 26, 45, 14
END
Dialogonum DIALOG //tiempo de adq ES_NUMBER permite la edicin de enteros
0, 0, 118, 48 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "Adquisidor" FONT 8, "Helv"
BEGIN
CONTROL "Tiempo (ms):", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 8, 9, 28, 8
CONTROL "", ID_NUMERO, "EDIT", ES_NUMBER | ES_LEFT | WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 36, 9, 76, 12
CONTROL "Aceptar", IDOK, "BUTTON", BS_DEFPUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 8, 26, 45, 14
CONTROL "Cancelar", IDCANCEL, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 61, 26, 45, 14
END
XI - 15
XI - 16
Una vez realizada la configuracin previa estamos en condiciones de realizar la adquisicin para ello
seleccionamos Adquirir del men Adquirir
Una vez seleccionado visualizaremos el tiempo
durante el cual se llevara a cabo la adquisicin.
Presionando Aceptar la aplicacin nos informa del
comienzo de la adquisicin.
XI - 17
Otra particularidad de nuestra aplicacin es que nos permite reproducir los archivos adquiridos, para ello
se accede a la opcin Reproducir del men Adquirir
Una vez seleccionado, la aplicacin, nos informa del
comienza de la reproduccin.
Para salir de la aplicacin se accede al men Adquirir y se selecciona la opcin Salir o presionado la
cruz X en el borde superior derecho.
Bibliografa:
Win API. Aplicaciones con API 32. Julio de 2004, Salvador Pozo Coronado http:\winapi.conclase.net
Microsoft Windows SDK Multimedia Programmers Reference.
Programacin de sonido con los comandos MCI, Sergi Jord Puig, Audio digital y MIDI, Guas Monogrficas
Anaya Multimedia, Madrid 1997
Materia Integrada:
Informtica II. (En nuestro proyecto se trataron la mayora de los temas de la ctedra )
Consulta realizada al Ing. Vota Ramiro sobre: compilacin, manejo de funciones especiales.
Bibliografa de la materia:
Turbo C/C++, Herbert Schild (Los temas aqu tratados eran de nuestro conocimiento lo cual no fue necesario
el uso de esta bibliografa).
El lenguaje de programacin C, Kernighan y Ritchie. (Los temas de consulta son: proposiciones,
punteros, funciones).
XI - 18
Captulo 12
Transformadas de Fourier y la DFT.
Introduccin.
Los mtodos de Fourier son comnmente usados para el anlisis de seales y el diseo de sistemas en
telecomunicaciones modernas, radar, y procesamiento de imgenes.
Los mtodos clsicos de Fourier tales como la serie de Fourier y la integral de Fourier son usados para seales
y sistemas de tiempo continuo (CT); es decir sistemas en los que una seal caracterstica s(t) , esta definida
en todos los valores de t sobre un continuo inf.<t<inf. Un conjunto mas recientemente desarrollado de
mtodos de Fourier, incluyendo la transformada de fourier de Tiempo Discreto (DTFT) y la Transformada
Discreta de Fourier (DFT ) son extensiones de conceptos bsicos de Fourier que se aplican a seales en
tiempo discreto (DT).
Una seal DT caracterstica s[n], esta definida solamente para valores de n donde n es un entero en el rango
inf<n<inf.
s*(t)=
s(t ) (t nT )
(ec. 1.2.1)
n =
Donde (t) es una funcin impulso CT definida cero para todo t distinto de cero, indefinida en t=0, y teniendo
rea unidad al integrar desde t=-inf. a t=+inf.
Dado que los nicos lugares donde el producto dentro de la sumatoria anterior, no es idnticamente igual a
cero, son los instantes de muestreo, s(t) en la ecuacin (1) puede ser remplazado con s(nT).
Luego:
s*(t)=
s(nt ) * (t nT )
(ec. 1.2.2)
n =
el modelo de muestreo CT, s*(t) consiste de una secuencia de funciones impulso CT uniformemente
espaciadas a intervalos de T segundos y escalados por los valores de la seal s(t) en los instantes de muestreo.
En el dominio DT, el modelo de muestreo es simplemente la secuencia definida al tomar los valores de s(t)
en los instantes de muestreo:
s[n ] = s (t ) |t =nT
(ec. 1.2.3)
En contraste a s*(t), que no esta defina para los instantes de muestreo, s[n] est bien definida en los instantes
de muestreo.
As, est ahora claro, que s*(t) y s[n] son modelos diferentes pero equivalentes del proceso de muestreo en
los dominios CT y DT, respectivamente. Sus equivalencias esta establecida por el hecho de que tienen el
mismo espectro en el dominio de Fourier, y la seal CT subyacente a partir de la cual s*(t) y s[n] son
derivadas, puede ser recuperada por cualquiera de las dos representaciones de muestreo, bajo la condicin de
una razn de muestreo lo suficientemente grande usada en la operacin de muestreo.
XII - 1
s(t)= (1 / 2 )
S ( j )e
jt
(ec.1.3.1)
S ( j ) =
s(t )e
jt
dt
(ec. 1.3.2)
F {s * (t )} = F { s(t ). (t nT )} =
n =
s(nT )e
jTn
(ec. 1.4.1)
n =
Este resultado es comparado ms tarde con el resultado de la operacin sobre el modelo de muestreo DT,
designado como s[n], de la transformada de Fourier DT para ilustrar que los dos modelos de muestreo tienen
el mismo espectro.
S () =
s[n].e
jn
n =
(ec.1.5.1)
s[n]=(1/2)
S ().e
jn
(ec. 1.5.2)
XII - 2
n =
n =
(t nT ) }= (1 / 2 ) S ( j ) F { (t nT )}
S * ( j ) = F {s * (t )} = (1 / 2 ) S ( j ) F { (1 / T ).e j ( 2 / T ) nt }
n =
= (1 / 2 )
S ( j ) (2 / T ) ( (2 / T )n)
n =
El resultado es :
n =
n =
S * ( j ) = (1 / T ) S ( j ( ( 2 / T )n )) = (1 / T ) S ( j ( ns ))
Donde s=(2/T) es la frecuencia de muestreo expresada en radianes por segundo.
Pero el segundo miembro de la ecuacin anterior puede ponerse as:
(1/T)
n =
n =
S (( / T ) (2 / T )n) = (1 / T ). S (( 2 .n) / T )
Esto es S*()=F{s*(t)} consiste de un numero infinito de replicas del espectro CT S()=F{s(t)} posicionadas
a intervalos de (2/T) sobre el eje o a intervalos de 2 sobre el eje .Note que si S() es de banda limitada
con un ancho de banda c, y si T se elije suficientemente pequeo de modo tal que s>2 c luego el espectro
DT es una copia de S() (escalado por 1/T) en la banda base <.
S[k]=
s[n ]e
j 2kn / N
k=0,1N-1.
n =0
N 1
s[n ] = (1 / N ) S [k ]e j 2kn / N
n=0,1,..,N-1
k =0
Materia Integradora.
Anlisis de seales y sistemas. Tema: Transformada de Fourier.
XII - 3
Captulo 13
FFT con MatLab
Introduccin.
Para el anlisis de espectro se utilizo el programa MatLab 6.5
Por simplicidad se copia el archivo WAVE, en nuestro caso Temp.wav, a la carpeta C:\MATLAB6p5\work
o se selecciona el path donde el adquisidor guarda el archivo..
Para poder comenzar con el anlisis de la seal de audio adquirida con el programa adquisidor.exe, abrimos
el archivo M-File procesamiento.m.
Procesamiento.m
Como primer paso el programa carga el archivo temp.wav y devuelve los valores de las muestras en un el
vector Y y la frecuencia de muestreo en la variable Fs.
[Y,Fs]=wavread('temp.wav');
Luego reproduce el archivo de audio adquirido mediante la siguiente sentencia:
wavplay(Y,Fs)
Para poder graficar la seal en tiempo, necesitamos saber el tiempo de duracin del archivo. Para ello,
primero obtenemos la cantidad de muestras tomadas y la guardamos en la variable muestras.
muestras=length(Y)
Teniendo la frecuencia de muestreo Fs y la cantidad de muestras , podemos inferir el tiempo de duracin
como:
tf=muestras*1/Fs
Una vez obtenido el tiempo de duracin, se necesitamos crear un vector de tiempos para poder graficar la
seal.
t=1/Fs:1/Fs:tf;
Teniendo el valor de cada muestra y el tiempo en que fue tomada cada una, graficamos:
figure(1)
plot(t,Y)
title('Seal')
xlabel('Tiempo (Seg)')
ylabel('Amplitud (v)')
grid
Para poder analizar el espectro de la seal tomada, necesitamos aplicar la transformada discreta de fourier
(DFT), ya que la seal no es de tiempo continuo, sino que es una seal muestreada. Para poder calcular la
DFT, usamos el algoritmo de calculo que se denomina FFT (transformada rpida de fourier)..
Para usar la FFT, primero vamos a determinar la cantidad de puntos que vamos a tomar para realizar la FFT.
Si tomamos en cuenta que la frecuencia de muestreo es de 22050 Hz, entonces el periodo de muestreo es de
1/22050=45,35 microsegundos. Si elegimos una cantidad de 8192 muestras, tenemos una ventana de tiempo
de 8192/22050=371ms.
N=8192;
XIII -
Calculamos la FFT.
X = fft(Y,N);
Calculamos el vector modulo de los valores de la FFT.
Xmodulo=abs(X);
Para poder graficar el espectro, calculamos el vector de frecuencias.
f=((Fs)*(1:N))/N;
Por ltimo, graficamos:
figure(2)
plot(f,Xmodulo)
title('Espectro')
xlabel('Frecuencia (Hz)')
ylabel('Amplitud (mv)')
grid
Las lneas siguientes muestran la seal y el espectro en una misma figura:
figure(3)
subplot(2,1,1),plot(t,Y)
title('Seal')
xlabel('Tiempo (Seg)')
ylabel('Amplitud (v)')
grid
subplot(2,1,2),plot(f,Xmodulo)
title('Espectro')
xlabel('Frecuencia (Hz)')
ylabel('Amplitud (mv)')
grid
*Nota: el comando plot usa usa los valores discreto del vector de valor absoluto de los puntos de la FFT e
interpola valores para poder graficar. Una forma de visualizar las seales en tiempo discreto es usando el
comando :
figure(4)
stem(t,Y)
title('Seal')
xlabel('Tiempo (Seg)')
ylabel('Amplitud (v)')
grid
figure(5)
stem(f,Xmodulo)
title('Espectro')
xlabel('Frecuencia (Hz)')
ylabel('Amplitud (mv)')
grid
figure(6)
subplot(2,1,1),stem(t,Y)
title('Seal')
xlabel('Tiempo (Seg)')
ylabel('Amplitud (v)')
grid
subplot(2,1,2),stem(f,Xmodulo)
XIII -
title('Espectro')
xlabel('Frecuencia (Hz)')
ylabel('Amplitud (mv)')
grid
Para correr el programa solo hay que elegir la opcin Debug+Run.
A modo de mostrar los resultados usamos una seal de 2,5 segundos de duracin, mostrando una
aproximacin en tiempo continuo y la real en tiempo discreto, las cuales coinciden.
En tiempo continuo.
XIII -
En tiempo discreto.
XIII -
Espectro continuo.
Espectro discreto.
Bibliografa:
Apuntes de clase. Tcnicas digitales III.
Ayuda de MatLab.
XIII -
Apndice A
Cdigo Fuente del programa
Cabecera ids.h
/* *********** Fichero Cabecera ********** */
/* ****** identificadores de comandos **** */
/*Ctes del men ADQ*/
#define CM_ADQ 100
#define CM_REP 101
#define CM_SALIR 102
/*Ctes del men CONFIG*/
#define CM_ARCH 103
#define CM_TIEMPO 104
/*Ctes del men ESPECTRO*/
#define CM_ESP 112
/*Ctes del men AYUDA*/
#define CM_AYU 113
/* ****** identificadores de dilogo **** */
/* Cuadro de mensaje */
#define TEXTO 106
#define CM_DIALOGO 107
#define ID_TEXTO 108
#define ID_NUMERO 110
Winmenu.c
/***********************************************************/
/********* FICHEROS DE CABECERA ****************************/
/***********************************************************/
#include <windows.h> //cabecera de window
#include <mmsystem.h> // " multimedia
#include <stdlib.h>
#include <stdio.h>
#include "ids.h"
// cabecera del menu (declaracin de ctes)
#pragma comment(lib, "winmm.lib")
/***********************************************************/
/********* DECLARACION DE FUNCIONES*************************/
/***********************************************************/
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);// Declaracin del
procedimiento de ventana
/*declaracin de la funcin de grabacin y reproduccin*/
DWORD playWaveFile(HWND, LPSTR);
//Paso a la funcin el manipulador de ventana
//y un puntero al archivo wav
DWORD recordWAVEFile(HWND, DWORD); //Paso a la funcin el manipulador de ventana
//y el tiempo de grabacin en ms
/* Funciones de manejo de controles*/
XIII -
//tiempo de adquisicin en ms
char Nombre[80];
/***********************************************************/
/********* FUNCION MAIN ************************************/
/***********************************************************/
/* funcin winmain*/
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int
nFunsterStil)
{
/* Declaracin: */
HWND hwnd;
/* manipulador para la ventana principal */
MSG messages;
/* variable para manipular los mensajes */
WNDCLASSEX wincl;
/* estructura para registrar la clase de ventana */
/*declaracin previa del tiempo de adq*/
MilliSeconds = 1000;
/* Inicializacin */
/* Estructura de la ventana */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
/* fc llamada por la ventana */
wincl.style = CS_DBLCLKS;
/* Catch double-clicks */
wincl.cbSize = sizeof(WNDCLASSEX);
/* Usa icono y puntero mouse por defecto */
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0;
/* No extra bytes after the window class */
wincl.cbWndExtra = 0;
/* structure or the window instance */
A-
/***********************************************************/
/********* FIN DE LA FUNCION MAIN **************************/
/***********************************************************/
/*---------------------------------------------------------*/
/***********************************************************/
/********* DECLARACION DE FUNCIONES*************************/
/***********************************************************/
/* Esta funcin es llamada por la funcin del API DispatchMessage()*/
LRESULT CALLBACK WindowProcedure(
HWND hwnd,
// Manipulador de ventana
UINT message,
// Mensaje
WPARAM wParam, // Parmetro palabra, vara
LPARAM lParam
// Parmetro doble palabra, vara
)
{
// DECLARACION DE VARIABLES
A-
A-
A - 10
}
/***********************************************************/
/*---------------------------------------------------------*/
/*---------------- FUNCION REPRODUCIR----------------------*/
/*---------------------------------------------------------*/
A - 11
MCI_PLAY_PARMS mciPlayParms;
//Abrimos dispositivo, indicando tipo y fichero
mciOpenParms.lpstrDeviceType = "waveaudio";
mciOpenParms.lpstrElementName = "temp.wav";
MessageBox(hMainWnd, "Comienzo de la Reproduccin", "Adquisidor", MB_OK);
if (dwRetorno = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID)&mciOpenParms))
{
MessageBox(hMainWnd, "ERROR en apertura", "Adquisidor", MB_OK);
return (dwRetorno); //Error en la apertura
}
//Apertura correcta. Obtenemos el identificador
wIDDispositivo = mciOpenParms.wDeviceID;
MessageBox(hMainWnd, "Apertura OK, ID OK", "Adquisidor", MB_OK);
//Se inicia la reproduccin.
mciPlayParms.dwFrom = 0L;
if (dwRetorno = mciSendCommand(wIDDispositivo, MCI_PLAY,
MCI_FROM | MCI_WAIT, (DWORD)(LPVOID) &mciPlayParms))
{
mciSendCommand(wIDDispositivo, MCI_CLOSE, 0, 0);
MessageBox(hMainWnd, "ERROR reproduccin", "Adquisidor", MB_OK);
return (dwRetorno);
}
mciSendCommand(wIDDispositivo, MCI_CLOSE, 0, 0); // cierro el dispositivo antes de salir
return (0);
};
/***********************************************************/
/*---------------------------------------------------------*/
/*---------------- FUNCION DE DIALOGO ---------------------*/
/*---------------------------------------------------------*/
/***********************************************************/
/*---------------------------------------------------------*/
/*---------------- Fc Imprimir dilogo --------------------*/
/*---------------------------------------------------------*/
BOOL CALLBACK DlgProc2(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
char texto[25];
switch (msg) /* manipulador del mensaje */
{
case WM_INITDIALOG:
sprintf(texto, "T. de adq. (ms): %d", lParam);
SetWindowText(GetDlgItem(hDlg, TEXTO), texto);
return TRUE;
case WM_COMMAND:
EndDialog(hDlg, FALSE);
return TRUE;
}
return FALSE;
}
A - 12
/***********************************************************/
/*---------------------------------------------------------*/
/*-------- FUNCION DE DIALOGO NOMBRE DE ARCHIVO -----------*/
/*---------------------------------------------------------*/
BOOL CALLBACK DlgProc3(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
static DATOS *Datos;
switch (msg) /* manipulador del mensaje */
{
case WM_INITDIALOG:
SendDlgItemMessage(hDlg, ID_TEXTO, EM_LIMITTEXT, 80, 0L);
Datos = (DATOS *)lParam;
SetDlgItemText(hDlg, ID_TEXTO, Datos->Texto);
SetFocus(GetDlgItem(hDlg, ID_TEXTO));
return FALSE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
GetDlgItemText(hDlg, ID_TEXTO, Datos->Texto, 80);
EndDialog(hDlg, FALSE);
break;
case IDCANCEL:
EndDialog(hDlg, FALSE);
break;
}
return TRUE;
}
return FALSE;
}
/***********************************************************/
/*---------------------------------------------------------*/
/*-------- FUNCION DE DIALOGO tiempo de adq---- -----------*/
/*---------------------------------------------------------*/
BOOL CALLBACK DlgProcnum(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
BOOL NumeroOk;
static INDATOS *datos;
int numero;
switch (msg) /* manipulador del mensaje */
{
case WM_INITDIALOG:
datos = (INDATOS *)lParam; //el dato contenido en el estructura lo paso a dato
SetDlgItemInt(hDlg, ID_NUMERO, (UINT)datos->Numero, FALSE);//cambia el contenido del
control a un control numerico
SetFocus(GetDlgItem(hDlg, ID_NUMERO));
return FALSE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK: numero = GetDlgItemInt(hDlg, ID_NUMERO, &NumeroOk, FALSE);//lee el
contenido del control
if(NumeroOk)
A - 13
{
}
else
datos->Numero = numero;
EndDialog(hDlg, FALSE);
}
return TRUE;
}
return FALSE;
Recurso win003.rc
win003 ICON "c:\\tdiii\\Multimedia.ico"
#include <windows.h>
#include "ids.h"
/*DECLARACION DEL MENU*/
Menu MENU
BEGIN
POPUP "&Adquirir"
BEGIN
MENUITEM "&Adquirir", CM_ADQ
MENUITEM SEPARATOR
MENUITEM "&Reproducir", CM_REP
MENUITEM SEPARATOR
MENUITEM "&Salir", CM_SALIR
END
POPUP "&Configurar"
BEGIN
MENUITEM "&Archivo", CM_ARCH
MENUITEM SEPARATOR
MENUITEM "&Tiempo", CM_TIEMPO
END
POPUP "&Espectro"
BEGIN
MENUITEM "&Obtener espectro", CM_ESP
END
POPUP "&Ayuda"
BEGIN
MENUITEM "&Programa", CM_AYU
END
END
/*******DIALOGO*******/
Dialogo2 DIALOG
0, 0, 118, 48
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION CAPTION
"Adquisidor"
FONT 8, "Helv"
BEGIN
CONTROL "Tiempo (ms):",
A - 14
TEXTO,
"static",
SS_LEFT | WS_CHILD | WS_VISIBLE,
8, 9, 84, 8
CONTROL "Aceptar",
IDOK,
"button",
BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
56, 26, 50, 14
END
Dialogo3 DIALOG //Nombre de arch "mensaje de guardar"
0, 0, 118, 48
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION CAPTION
"Adquisidor"
FONT 8, "Helv"
BEGIN
CONTROL "Archivo:",
-1,
"STATIC",
SS_LEFT | WS_CHILD | WS_VISIBLE,
8, 9, 28, 8
CONTROL "",
ID_TEXTO, "EDIT",
ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,
36, 9, 76, 12
CONTROL "Aceptar",
IDOK, "BUTTON",
BS_DEFPUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
8, 26, 45, 14
CONTROL "Cancelar",
IDCANCEL, "BUTTON",
BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
61, 26, 45, 14
END
Dialogonum DIALOG //tiempo de adq
0, 0, 118, 48
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "Adquisidor"
FONT 8, "Helv"
BEGIN
CONTROL "Tiempo (ms):", -1, "STATIC",
SS_LEFT | WS_CHILD | WS_VISIBLE,
8, 9, 28, 8
CONTROL "", ID_NUMERO, "EDIT",
ES_NUMBER | ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,
36, 9, 76, 12
CONTROL "Aceptar", IDOK, "BUTTON",
BS_DEFPUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
8, 26, 45, 14
CONTROL "Cancelar", IDCANCEL, "BUTTON",
BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
61, 26, 45, 14
END
A - 15