Sonidos Visual Basic

Introducción

Mediante este control, podemos reproducir sonido y video. Para ello debemos incorporarlo al proyecto mediante el menú Agregar componente, bajo el nombre de Microsoft Multimedia Control 6.0. (mci32.ocx)

Ventana de componentes:

En el siguiente ejemplo se crea un simple reproductor de archivos Wav, pero antes se describen algunas propiedades y métodos mas importantes de este ocx.

Reproducción de sonido por medio del control de multimedia

El control de multimedia posee una botonera con los clásicos botones de reproducción (play, stop, pause, adelantar, etc..). como muestra la imagen:

Si bien en este ejemplo se utilizará el control de multimedia , cabe aclarar que podemos ejecutar todas las funciones enteramente con código sin utilizar la interface del control, y crear nosotros una interface propia, ya que la que presenta el control no es muy estética que digamos. Esto se logra ocultando el control con la propiedad visible del mismo en False y creando nuestra interface y manipular el mismo mediante código.

Lo primero que se debe tener en cuenta para utilizar el control de multimedia es que antes de reproducir un archivo de sonido debemos indicarle al mismo que tipo de archivo se trata, utilizando para ello la propiedad DevaiceType

Propiedad DevaiceType

Esta propiedad que lleva un dato de tipo string, debemos indicarle los siguientes valores, dependiendo del archivo a reproducir:

  • WaveAudio : Para archivos con extención wav.
  • Sequencer: archivos midi
  • Cdaudio: archivos de musica de cd
  • Avivideo: archivos de video con extención avi

Para definir mediante código en tiempo de ejecución el dispositivo que se utilizará se haría de la siguiente forma:

Esto prepara al control de multimedia para reproducir un cd de música

  1. MMControl1.DeviceType = “cdaudio”

Cargar un archivo para reproducción

Luego de definir el tipo de dispositivo a utilizar, debemos indicarle al control cual es el archivo que queremos abrir, indicando el path o ruta completa del mismo mediante la propiedad FileName. ejemplo:

  1. Option Explicit
  2. Private Sub Form_Load()
  3.     With MMControl1
  4.        .FileName = “c:\windows\archivo.wav”
  5.        .Command = “open”
  6.     End With
  7. End Sub

Importante Definiendo el archivo de esta manera, no haremos que se comience la reproducción, solo lo estamos cargando en la memoria para poder utilizarlo. Primero indicamos la ruta del archivo y luego mediante una propiedad que veremos en detalle en las próximas líneas, llamada Command, le pasamos el valor “Open” para que abra el archivo indicado y lo cargue en la memoria

Comandos para manipular los archivos ( Propiedad command )

Command (comandos) es la propiedad encargada de reproducir un archivo, detenerlo, ponerlo en pausa, ejecutar la bandeja de cd etc… y esta propiedad admite los siguientes valores:

  • Open: Abre al archivo cargándolo en la memoria. Antes de este paso hay que indicar la ruta mediante la propiedad FileName.
  • Close: Cierra el archivo liberando la memoria y poder cargar uno nuevo, o simplemente cerrarlo
  • Play : Comienza la reproducción de un archivo.
  • Pause : Detiene el archivo que está en reproducción. Para reanudar la reproducción se debe ejecutar nuevamente este comando.
  • Prev : Salta a la anterior pista o se posiciona en el comienzo de un archivo.next: salta a la siguiente pista de un cd o se sitúa en el final de un archivo.
  • Seek: Se posiciona en una pista determinada o lugar especifico de un archivo.
  • Eject: Abre la bandeja de cd.

Por ejemplo para reproducir un archivo wav llamado start.wav que está ubicado en la carpeta windows\media se haría de la siguiente forma:

  1. Option Explicit
  2. Private Sub Form_Load()
  3.     With MMControl1
  4.         ‘ — Indicar el archivo
  5.         .FileName = “c:\windows\media\start.wav”
  6.         ‘ — Abrir
  7.         .Command = “Open”
  8.         ‘ — Reproducir
  9.         .Command = “Play”
  10.     End With
  11. End Sub

Importante: si deseamos utilizar otro archivo, debemos cerrar el que estaba previamente cargado, ya que de lo contrario cualquier otro programa, e incluso el nuestro, generará un error en el dispositivo que utiliza windows para reproducir sonido, teniendo en este caso que reiniciar la pc.

Ejemplo para cerrar el dispositivo abierto

‘Cerramos el dispositivo abierto anteriormente
cmultimedia.Command = “close”

  1. With MMControl1
  2.     ‘ — Cerramos el dispositivo
  3.     .Command = “close”
  4. End With

Nota: es recomendable, siempre colocar el comando close en la descarga del formulario, es decir en el evento Unload, para asegurarnos que se cierre el dispositivo MCI.

Propiedad To, From y Length y position

Cuando ejecutamos el comando Play para reproducir un archivo, este lo hace desde la posición actual donde se encontraba el mismo. Por esta razón si ejecutamos Play ,y cuando termine el archivo volvemos a ejecutar Play nuevamente, este no se reproducirá ya que no hay mas archivo que reproducir por que este ha llegado al final.

Para solucionar esto podemos utilizar las siguientes propiedades del control multimedia: To, From y Length

La propiedad From indica el comienzo del mismo o desde donde comenzar.La propiedad To hasta donde ejecutar, y la propiedad Length contiene un valor con la longitud del archivo. Sabiendo esto podemos utilizar la siguiente rutina:

  1. With MMControl1
  2. ‘ — Ejecutar desde el comienzo
  3. .From = 0
  4. ‘ — La propiedad length devuelve un número con la longitud
  5. ‘ — total que utilizaremos para saber donde termina el archivo
  6. .To = cmultimedia.Length
  7. ‘ — Ejecutar el comando Play para reproducir
  8. .Command = “play”
  9. End With

Nota .Otra propiedad interesante para conocer el número de posición que se encuentra actualmente el archivo es la propiedad Position

  1. MMControl1.Position

La propiedad Notify y Wait

La propiedad Notify admite y establece un valor boolean. cuando está en True le indicamos al control de multimedia que cuando se ejecute el próximo comando se dispare un evento llamado Done del control. Este evento se dispara solo para el próximo comando, es decir que si queremos ejecutarlo nuevamente deberemos especificarlo nuevamente mediante código

Texto planoImprimir

  1. MMControl1.Notify = True

Esto es útil por ejemplo para ejecutar el comando Close cada vez que tenemos que cerrar un archivo para poder utilizar otro.

La propiedad Wait se utiliza para avisarle al control que espere o que haga algo para ejecutar el próximo comando. Generalmente solo se utiliza para cargar un archivo en memoria y luego proseguir con los demás comandos. Cuando está en True el control detendrá todos los comandos hasta que indiquemos lo contrario, en este caso mediante la propiedad False.

Propiedad Mode

Esta propiedad nos devuelve información sobre el estado actual de la interface MCI .

Los valores que admite esta propiedad son:

  • mciModeNotOpen: indica que el dispositivo no se encuentra abierto.
  • mciModeStop: el dispositivo se encuentra detenido.
  • mciModePlay: el dispositivo se encuentra actualmente en ejecución.
  • mciModeSeek: el dispositivo se está posicionando en un lugar, por ejemplo está buscando y posicionando en una pista de cd o parte de un archivo.
  • mciModePause: está en pausa
  • mciModeReady: el dispositivo está listo para el próximo comando.

Esta es útil para no ejecutar comandos innecesarios, por ejemplo podríamos hacer una comprobación mediante la constante mciModeNotOpen para saber si un archivo está abierto y de allí tomar una desición:

Ejemplo:

  1. If MMControl1.Mode = MciModeNotOpen Then
  2.     ‘No ejecutamos el comando Play
  3. Else
  4.     ‘Ejecutamos play
  5. End If

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: