Versión HTML por Nacho Cabanes
El sonido en el ordenador es uno de los componentes fundamentales
en cualquier programa que se precie, no ya a nivel de video-juego, sino
incluso de aplicaciones que utilizan sonido para resaltar sucesos relevantes
como errores, finalización de procesos, etc. En este primer apartado
trataremos un poco la teoría del sonido (no os asustéis,
os aseguro que absolutamente todo será entendible y hasta os resultará
divertido).
En esta primera parte, sólo tratamos de dar una somera idea de
cómo funciona esto del 'sonido', no trataremos todavía la
programación de ningún dispositivo como el speaker o la tarjeta
de sonido, esto lo haremos más adelante. Pero creo que unas primeras
nociones de cómo se transmite el sonido, y de cómo se genera,
son necesarias en un curso como este, en el que intentamos abarcar y comprender
todo lo que sale de nuestro ordenador, así que manos a la obra.
Así pues hemos quedado en que un
sonido es una simple
vibración del aire. Esta
vibración se representa
|
gráficamente mediante una A
****
****
onda como la de la figura |
* *
*
de la derecha.
| * *
*
|* *
*
La gráfica dibujada con |*
* *
asteriscos representa la -+------------*----------T--------
perturbación mencionada con |
* *
respecto al tiempo
| *
*
| *
*
El tiempo marcado con la |
* *
letra 'T' se le denomina |
****
Período . Es un parámetro
|
de la onda (así nos
referiremos a partir de ahora al hablar de la perturbación).
Este parámetro lo
que nos indica es el tono del sonido que oímos: A un mayor
período el sonido
que oímos es mas grave, y por contra, con un menor período,
el sonido será más
agudo.
En realidad no se suele hablar de período, sino de frecuencia que es la inversa del período (1/T) y se define como numero de ondas por segundo. Teniendo en cuenta lo que hemos dicho antes, un sonido será mas agudo cuanto mayor sea su frecuencia, y más grave cuanto menor.
Otro parámetro de la onda es el que hemos marcado en la figura
como 'A'.Este parámetro se denomina amplitud y es la mayor distancia
de la onda del eje horizontal. La importancia de este parámetro
estriba en que es el que determina el volumen del sonido. A mayor amplitud,
mayor volumen, y viceversa.
1º) Las ondas son funciones continuas
del tiempo.
2º) Los valores que toman las ondas son
valores analógicos.
3º) Cómo reproducimos la onda
una vez que ya la tenemos almacenada.
'Las ondas son funciones continuas del tiempo': Esto quiere decir, en cristiano, que en cualquier intervalo de tiempo que tomemos, la onda puede tomar infinitos valores. Esto es un verdadero problema, pues la información ocupa espacio (ya sea en disco o en memoria) y nosotros no podemos guardar infinitos valores en nuestro PC. Es aquí donde intervienen las 'técnicas de muestreo'.
Muestrear una onda, es coger de ella el valor que toma cada cierto tiempo. Creo que lo mejor es que miréis la figura y así os enteraréis mejor:
|
|
|
71.3 70.0
|
50.0 *X******X**** 60.2
30.4
| 22.1 ***X*****
| | **X***** 20.9
10.1 X*****
| *X***
| | |
| *X**** *****|
| ** |
| | |
| | * X
|
| * |
| | |
| | *|
|
|* |
| | |
| | |
|
-+------|------|------|------|------|------|------|-----|-------
|
Como vemos, hemos tomado de esta onda un total de 8 muestras, obteniendo 8 valores de la onda para el intervalo de tiempo. El objetivo de tomar estas muestras, es que a partir de ellas se pueda reconstruir la onda cuando la tengamos almacenada en nuestro disco duro o en memoria pero esto es otra historia que debe ser contada en otro lugar.
Es evidente que cuantas más muestras tomemos, cuando reproduzcamos el sonido a partir de éllas, más parecida será la onda a la inicial, pero también es evidente que mayor espacio ocuparán en nuestro disco.
Cuanto mayor numero de muestras cojamos por unidad de tiempo se dice que es mayor la 'frecuencia de muestreo'. Esta frecuencia está estandarizada en ciertos valores como son los siguientes:
. 8000 Hz (8000
muestras por segundo): Que es suficiente cuando la onda que digitalizamos
representa la voz humana.
. 11000 Hz,
22000 Hz, 44000 Hz
Estas frecuencias de muestreo no son aleatorias. Hay teoremas y desarrollos' que demuestran que estas frecuencias son las óptimas para sus objetivos, pero no nos vamos a extender más en este asunto.
En cuanto al espacio que ocuparían estas muestras en el disco, es un tema que trataré en el siguiente punto.
'Los valores que toman las ondas son valores analógicos': Como ya sabréis, nuestro querido ordenador, sólo es capaz de representar dígitos binarios (unos y ceros). Por contra, los valores que las ondas pueden tener son, no solo reales, sino infinitos. Por ejemplo un valor que una onda puede tomar es 25.237. Para solucionar esto, lo que hacemos es 'codificar' en binario estos valores.
Es evidente que con 8,16,32,... bits que podamos tener, según la tarjeta de sonido, solo podemos representar un numero finito de valores, con lo que habrá valores que no podamos representar, y habrá un cierto error. Pero también es cierto, que cuantos más bits tenga nuestra tarjeta, mayor numero de valores tendremos, y más exacta será la codificación de los valores de la onda.
Para aclarar todo esto que he escrito seguido, y que parece tan teórico vamos a poner un ejemplo. Imaginad que estamos digitalizando un sonido cualquiera como el ladrido de un perro. Ese sonido es una onda, que vamos a muestrear (tomar valores) a una frecuencia de muestreo de 22000 Hz (22000 muestras por segundo). Si estamos realizando el proceso con una Sound-Blaster (no es por hacer publicidad, es que es la marca que yo tengo) de 16 bits, esto quiere decir que cada muestra que tomamos es codificada con 16 bits. Si suponemos que el ladrido del perro dura 10 seg (ya se que es un ladrido un poco largo, pero es que es por redondear) y echando alguna cuenta:
1 seg=20000 muestras => 10 seg=200000 muestras
200000 muestras a 16 bits cada muestra son 3200000 bits, que, divididos entre 8 bits, que tiene un byte son... 400000 bytes!!!. Casi medio MegaByte para 10 segundos de ladrido de perro. Aquí es donde debemos tomar la decisión de si deseamos calidad o por el contrario poco espacio en disco. En este ejemplo si hubiéramos utilizado una tarjeta de 8 bits, es verdad que hubiéramos tenido una menor calidad en la digitalización, pero nuestro sonido hubiera tenido (200000*8)/8=200000 bytes, es decir, la mitad que en el caso anterior. Bueno, la decisión es vuestra.
'Cómo reproducimos la onda una vez que ya la tenemos almacenada':
En realidad, esta es la parte mas fácil de todo el proceso, ya que
se limita a poner el nivel de potencial que nos den las muestras en cierto
dispositivo (dígase speaker, tarjeta de sonido, DAC conectado al
puerto paralelo, ...), y con esto tenemos el sonido reproducido en la salida.
Posteriormente esta señal se amplifica para subir el volumen al
deseado, obteniendo el ladrido de perro, a nuestra madre gritando, o a
tu amigo al que has digitalizado para cambiarle la voz.
Superposición de sonidos:
La superposición de sonidos consiste en mezclar en una misma
onda dos o más sonidos y que se escuchen todos ellos a la vez. Para
conseguir este efecto es necesario que ambos sonidos hayan sido digitalizados
(muestreados) con una misma frecuencia de muestreo, y lo único que
hay que hacer es sumar los valores de las muestras que correspondan al
mismo instante de tiempo. La onda resultante es pues la suma de las dos
anteriores, obteniéndose así la superposición de los
dos sonidos.
Agregar eco:
Este efecto es muy sencillo de realizar, y consiste en sumarle a una
onda, ella misma desplazada en el tiempo unos milisegundos. Para ello,
a cada muestra se le suma una de un tiempo anterior. La mayor parte de
programas que realizan tratamiento de ondas tienen este efecto, e incluso
algunos permiten definir a voluntad el tiempo de retardo, probar y disfrutar
con ellos, conociendo ahora como funcionan.
Aumentar o disminuir el volumen:
Para realizar este efecto basta con multiplicar por un factor constante
todas las muestras del sonido digitalizado. El factor será una constante
que, si es menor que uno, reducirá el volumen, y si es mayor que
uno, lo amplificará
Bueno, espero que esta primera introducción al tratamiento del
sonido por ordenador no os haya aburrido demasiado. A lo mejor he sido
un poco teórico en mis explicaciones, pero es necesario tener un
sitio donde mirar cuando no sepáis alguna cosa. Además de
lo que vais a flipar con los amigos cuando les contéis esto. Si
tenéis alguna duda mas, ya sabéis donde estoy ...