Aula Macedonia


Curso de Programación Multimedia Bajo DOS


Artículo realizado por
José Antonio Suárez.





Capítulo 10.
Programación de la Sound Blaster (I).

3.- Introducción a la tarjeta de sonido Sound Blaster

3.1.- Especificaciones Técnicas

Creada por la compañía Creative Labs, esta tarjeta de sonido ofrece las siguientes posibilidades a los programadores, sin atender a consideraciones sobre las distintas versiones (1.0, 1.5, 2.0, Pro, ASP, 32...):

Esta tarjeta de audio tiene una serie de chips electrónicos que se encargan de traducir los números en ondas sonoras audibles por el hombre. Para ello, cuenta con dos tipos de chips, principalmente:

Los chips FM se encargan de traducir la información numérica que le suministra el software en ondas sonoras que llegan a la salida de audio de la tarjeta. Estos sonidos son de "nueva" creación, es decir, no tienen que estar grabados previamente, como ocurre con los samples (sonidos digitalizados), sino que son generados por la propia tarjeta. La síntesis de sonido surge como una necesidad de crear estos de forma barata, es decir, sin tener que gastar mucho dinero en el hardware que se necesita para la memoria RAM, la cual es imprescindible en el caso del sonido digital.

La parte de estos chips, de la compañía Yamaha, que más nos interesan son los diferentes componentes que están envueltos en la creación del sonido. Estos componentes o registros de los chips FM pueden ser programados por software, de forma que cambiando su contenido (numérico, por supuesto), podemos hacer que el sonido "suene" de diferente forma cada vez. Con ellos logramos diferentes instrumentos o efectos sonoros con lo cual la puerta está abierta para hacer los cambios que queramos, rompiendo esta flexibilidad con la rigidez de algunos instrumentos que tienen grabados los sonidos en ROM y que por tanto no pueden cambiarse.

Los diferentes registros pueden guardarse en archivos instrumentales que son de pequeño tamaño y que gracias a los cuales podremos tener trompetas, tambores, laudes, saxos, flautas, etc.

La segunda forma de hacer música y sonidos es la digital mediante el DSP. Esta es precisamente en la que se basa gran parte de este Proyecto. Esta forma es muchísimo más complicada, pero presenta la ventaja de ofrecer una calidad mayor, aunque esta estará siempre en consonancia con la Frecuencia de Muestreo, un parámetro que mide la cantidad de información que vamos a tomar del sonido "externo" (medido en hertzios) y que por lo tanto hará que varíe el tamaño en bits de nuestro sample. Un minuto de información sonora, por ejemplo nuestra voz, necesita más de 10 Megabytes de disco duro si la grabamos en estéreo con una frecuencia de muestreo de 44Khz.

Como se ve en el gráfico, los segundos equivalen a la frecuencia en hertzios, por lo que a mayor frecuencia de digitalización por el mismo espacio de tiempo, será necesario mayor espacio de almacenamiento para reflejar los cambios en las ondas.

 

3.2.- Los Puertos de la Sound Blaster

Lo primero que hay que tener en cuenta cuando un programa va a ejecutarse y necesita la existencia de una Sound Blaster (SB), es intentar detectar si está instalada, anulando la salida si no lo está o, por el contrario, activar las rutinas pertinentes si se encuentra presente en el equipo.

La SB está conectada al PC mediante uno de los slots de expansión, los cuales a su vez se conectan con el microprocesador central por medio de unas vías o pistas electrónicas especiales llamadas BUS. El procesador (CPU) está, pues, conectado directamente con la tarjeta SB. Cuando un elemento nuevo se conecta al puerto ,al cuerpo del PC, necesita disponer de un canal de comunicaciones especial y específico con el procesador. Es como si fuese un canal de televisión, pero que en este caso se llama puerto (port).

El puerto de comunicaciones sirve como si se tratase de un muelle de carga. En él se dejan datos y se recogen datos. La CPU deja información y los chips de la SB toman y dejan información nueva para que la CPU sepa en qué estado de funcionamiento se encuentra. Funcionan exactamente igual que una celdilla RAM, es decir, tiene 8 bits donde se pueden guardar ceros y unos.

Los puertos de que puede disponer un ordenador PC son bastantes, concretamente 65536 diferentes. Potencialmente este número significa que se pueden conectar 65536 periféricos al PC, pero en la realidad no, ya que algunos periféricos, entre ellos la SB, utilizan varios puertos a la vez.

La tarjeta SB tiene adjudicados, o mejor dicho escogidos por la compañía creadora, un rango de puertos sobre los que puede funcionar, teniendo en cuenta no interaccionar con otros elementos. Estos se pueden escoger por el usuario cambiando la posición de un jumper (pequeño conector de color negro normalmente, que sirve para puentear las patillas metálicas o pins de ciertos elementos hardware). La posición de conexión de dicho jumper podrá, posteriormente, detectarse desde nuestros programas. La razón de este cambio se basa en la posible colisión entre dos periféricos, ya que como se indicó antes, el canal de acceso a la CPU debe ser exclusivo.

De todos los puertos de la SB, el más importante y el primero que debemos conocer es el puerto BASE. Este es el que sirve como referencia a los demás y el que se puede configurar mediante el jumper. Así tenemos el siguiente rango de posibles puertos a elegir: 210h, 220h, 234h, 240h, 250h, y 260h.

Desde este puerto parten los otros puertos de entrada y salida de la tarjeta, los cuales están siempre a la misma distancia numérica del puerto base. Con ello, y sólo cambiando el BASE, cambian los demás.

Por ejemplo, los puertos del DSP (Digital Sound Procesor) o verdadero corazón de la SB están siempre a la misma distancia del puerto base de entrada y salida (I/O port, base address).

En la siguiente tabla de puertos del DSP podemos ver esto último:
 

02x6h DSP Reset Port Sólo escritura
02xAh DSP Read Data Port Sólo lectura
02xCh DSP Write Data, Command Escritura
02xCh DSP Write Buffer Status (bit 7) Lectura
02xEh DSP Data Available Status (bit 7) Sólo lectura
 

La "x" central deberá sustituirse por los números 1,2,3,4,5 y 6, que son las posibles opciones. Por ejemplo, si el puerto base está en la dirección 220h, el puerto DSP Read Data Port estará en el 22Ah.




AULA MACEDONIA
a
MACEDONIA Magazine