DirectSound con el control ASprite
volver a la página de tutoriales

Requerimientos

Si desea realizar este tutorial necesitará descargar e instalar los siguientes archivos:

Primero que nada voy a explicar brevemente que es DirectSound y por qué debe usarlo. DirectSound es un API que le permite acceder al hardware de sonido desde Windows y es parte de DirectX. Para una explicación de DirectX y sus componentes, vaya al tutorial de DirectDraw. DirectSound da la posibilidad al programador de tocar varios sonidos al mismo tiempo. Véase gráfico 1.

    Gráfico 1

Esto es muy útil en una aplicación; por ejemplo, un sonido de fondo mientras se escucha un mensaje de error. A pesar de que no es de uso exclusivo para los juegos, el mayor beneficio obviamente es para ellos. La capacidad de mezclar sonidos hace que una explosión no detenga el sonido del motor de un avión. Dado esta pequeña introducción, ejecute Visual Basic y cree un nuevo proyecto.

Asegúrese de tener el control ASprite instalado en su computadora. Ejecute Visual Basic y cree un nuevo proyecto. En el menú Proyecto, haga click en Componentes y active la casilla de Asprite ActiveX Control Module.

El formulario debe parecerse al siguiente:

El nombre de los botones de sonido será btnSonido. Cuando Visual Basic le pregunte si desea hacer un arreglo de controles (array), responda afirmativamente. El botón que en la imagen tiene caption de "Todos a la vez" cambielo por "btnTodos". Coloque el control ASprite en donde le parezca ya que el control es invisible en tiempo de ejecución.

Ahora en la sección de código declaraciones generales, introduzca:
Option Explicit
Esto hará que sea necesario declarar las variables y por lo tanto elimina la posibilidad de confundir las variables por errores de escritura.

Sitúese en la sección Form_Load y escriba lo siguiente:
ChDir App.Path
ASprite1.hWnd = Me.hWnd
ASprite1.SoundInit
ASprite1.SoundLoad 0, "ja.wav"
ASprite1.SoundLoad 1, "expl.wav"
ASprite1.SoundLoad 2, "tal.wav"
ASprite1.SoundLoad 3, "que.wav"

El comando ChDir hace que se fije el directorio de los sonidos en el directorio actual. La propiedad hWnd de ASprite1 especifica que la ventana que se va a usar es la del formulario Form1 (que es lo mismo que escribir Me, ya que estamos dentro de Form1). SoundInit inicializa DirectSound y SoundLoad carga el archivo de sonido en memoria y le asigna un índice que luego será usado a la hora de hacerlo sonar.

Escriba el siguiente código en Private Sub btnSonido_Click(Index As Integer):
ASprite1.SoundPlay Index
La función SoundPlay como ya puede imaginárselo, toca un archivo de sonido cargado en memoria. Como la cantidad de botones en el arreglo y la cantidad de archivos en memoria es la misma, podemos referenciar a los dos con el mismo índice.

Sitúese en Private Sub btnTodos_Click() y escriba:
Dim I As Integer

For I = 0 To 3
ASprite1.SoundPlay I
Next I
Se ejecuta un ciclo para tocar todos los archivos.

Ahora se va a colocar el código para HScroll1_Change:
ASprite1.SoundSetVolume HScroll1.Value
y en HScroll1_Scroll coloque:
HScroll1_Change
Esta barra controla el volumen de los sonidos en memoria. Tenga en cuenta que este no es el mismo volumen de Windows, ya que esto es un efecto que le aplica DirectSound al archivo en tiempo real. Si necesita bajarle el volumen a Windows utilice el API.

Por último pero no menos importante, sitúese en Form_Unload(Cancel As Integer) y escriba:
ASprite1.SoundDisable
SoundDisable deshabilita DirectSound y como esta en Form_Unload solo se ejecuta al cerrar el programa.

Puede descargar el código fuente para este tutorial.

Volver a la página de tutoriales.


Copyright 1998-2000 Andrés Castillo.
1