Uno de los elementos básicos en un Dark Ride son los efectos sonoros y la música ambiente. Debido a la naturaleza de este tipo de atracciones, es posible que sea necesario disponer de una cantidad importante de sonidos que son activados, por ejemplo, cuando un vehículo accede a un lugar determinado, o el efecto especial (FX) que sonará cuando ocurra un determinado evento. Si a esto unimos que es posible que haya muchos visitantes en el interior del Dark Ride y multiples eventos que deben ejecutarse simultáneamente, nos encontramos con la necesidad de disponer de un sistema sonoro que disponga de una cantidad importante de salidas de audio, además de poseer un sistema extremadamente rápido para reproducir simultáneamente cientos de sonidos.
![]() |
![]() |
Con el avance de la tecnología, existe la posibilidad de acceder a nuevos dispositivos de audio y a un número importante de tarjetas de sonido semi-profesionales que, junto con DirectSound de Microsoft permiten desarrollar algunas soluciones en este campo, pero que pueden ser insuficientes según nuestras necesidades. Mirémoslo desde un punto de vista más técnico:
Un sonido digital es simplemente una sucesión de muestras digitalizadas cada cierto tiempo que representan la “presión” del sonido. Cuanta menos distancia (en tiempo) haya entre muestras, mayor será la resolución y calidad del sonido. Por decirlo de otra manera, cuantos más muestreos realicemos en un segundo, mayor será la calidad y precisión en ese segundo, y por tanto diremos que mayor es la frecuencia usada. Un ejemplo: el muestreo del sonido en CD está en 44.1KHz (44.100 muestreos por segundo), y el de un DVD en 48KHz (48.000 muestreos por segundo). De esta forma, si buscamos una calidad de audio semejante a la del CD (44.1 Khz) necesitamos realizar ese número de escrituras en un segundo en la tarjeta de sonido para reproducir nuestro sonido, o realizar ese mismo número de lecturas en ese mismo tiempo si lo que deseamos es “digitalizarlo”, además si el sonido es estéreo, nuestro trabajo se duplica.

En la práctica, resulta poco recomendable “interrumpir” al procesador todo ese número de veces en un segundo sin que afecte al rendimiento general del sistema, así que es usado un sistema de buffering (almacenamiento intermedio), lo que resulta de gran ayuda para reducir ese trabajo. Una solución más razonable es “interrumpir” al microprocesador 100 veces en un segundo y que en cada uno de ellos envie 441 muestreos a la salida de audio. Esto crea un nuevo problema: cuanto mas grande es el buffer para el sonido, mejor eficiencia, pero mayor es el retardo (con un buffer de 441 muestreos obtendremos un retardo (latencia) de 1/100 de segundo, y un maximo de 1/50. Parece realmente poco tiempo para escuchar absolutamente nada que venga de nuestro PC.
Esto nos coloca en una posición delicada: un buffer de gran tamaño tendrá un buen rendimiento, pero también un mayor retardo, un buffer pequeño tendrá menos retardo, e inversamente tendrá un menor rendimiento
Este es un problema que se presenta con DirectSound (parte de DirectX): el tamaño del buffer que usa es demasiado grande para plantearse la reproducción de audio en tiempo real. Afortunadamente, existen soluciones que evitan este problema y reducen la latencia, como es el caso de ASIO (Audio Stream Input Output) y que fue creado por Steinberg (autores entre otros del famoso Cubase) como nueva especificación para el uso de pequeños buffers de audio, dotando al desarrollador de un mecanismo de acceso a bajo nivel al hardware de sonido y disminuyendo la latencia para permitir audio en tiempo real, así como la gestión ordenada y sincronizada de multiples salidas. En un siguiente post contaré mi experiencia con el SDK de ASIO en el desarrollo de una herramienta que permita hasta 96 canales de audio de forma simultánea y en tiempo real…





