|
|
Artículo realizado por
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.
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
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.
|
|