Reproductor de MP3 en Visual Basic NET

Esta aplicación usa el OCX de Windows Media Player 9 mediante la agregación de una referencia en el proyecto (el OCX se encuentra en la lista de objetos COM). En esta aplicación el OCX no se muestra al usuario y sus funciones se substituyen con botones y código propio. Es necesario tener instalado Windows Media Player 9 para poder ejecutar la aplicación generada. Este control ActiveX nos proporciona funcionalidades de reproducción de archivos multimedia (mp3, wav, wma, avi, etc...) sin que tengamos que crear código específico para esas funciones. Los pasos requeridos para crear el ejercicio son:

1 - Instalar los programas necesarios:

2 - Añadir el control ActiveX al proyecto de Visual Basic .NET:

3 - Desarrollar la aplicación:

El código busca la construcción de los elementos necesarios ya que el control ActiveX está oculto:

4 - Cuadro de diálogo "Abrir archivo":

En el cuadro de diálogo "Abrir archivo" OpenFileDialog1 se filtran los archivos mediante 2 extensiones: MP3 (archivos de audio MP3) y M3U (listas de reproducción de Winamp), pero estos filtros se pueden ajustar a nuestro gusto. Al estar oculto el control OCX de Windows Media Player, no existe ventana de visualización de archivos de vídeo, por lo que la extensión avi no se incluye en los filtros del control OpenFileDialog1.

5 - Generar la solución:

Al usar el menú "Generar solución" del editor de Visual Studio, tendremos en la carpeta correspondiente (por defecto \bin) 3 archivos:

Es necesario tener los 3 archivos juntos en la misma carpeta para que el programa funcione adecuadamente.

6 - Primary Interop Assembly (PIA):

La manera de evitar la necesidad de las 2 librerías nombradas en el punto anterior sería instalando el PIA (primary interop assembly) de Windows Media Services en la Global Assembly Cache (GAC) y registrando después la librería mediante RegSvr32. Aunque hay documentación al respecto (ver este artículo de Microsoft), es un tema complejo que dejo fuera de este ejercicio. Ello facilitaría la distribución de la aplicación a otros sistemas aunque, en su construcción actual, para poder usar la aplicación en ordenadores diferentes basta con tener Windows Media Player 9 instalado y transportar los 3 archivos nombrados (ensamblado *.exe, AxInterop.WMPLib.dll y Interop.WMPLib.dll) a una carpeta común.

7 - Detalles de código:

8 - Utilidad de la aplicación:

Con este programa reproduzco de manera habitual listas de MP3 creadas desde Winamp o el propio Windows Media Player 9. Las clases aquí utilizadas tienen muchas características no empleadas todavía, entre ellas manejo y edición de Playlists, obtención de mayor información sobre el archivo reproducido, etc.
Programadores con más experiencia pueden hacer un programa mucho más completo, aquí solamente se ha intentado mostrar cómo, sin necesidad de tener conocimientos avanzados en Visual Basic .NET, es factible crear aplicaciones a priori tan complejas como un reproductor de archivos multimedia.

9 -
Imagen del programa en funcionamiento:



10 -
Código del programa:

Pulsa aquí para ver el código completo.


NOTA SOBRE LAS VERSIONES DE VISUAL STUDIO:

Este ejercicio ha sido creado con Visual Studio 2003. Aquellos que usen Visual Studio .NET 2002 deben tener en cuenta la existencia de un error documentado, que aparece al compilar (generar la solución), referido a la línea de código:

Me.ocxPlayer.Enabled = True

existente en la región del código generado por el editor, que comienza por:

#Region " Código generado por el Diseñador de Windows Forms "

y dentro de la sección correspondiente a las propiedades del control OCX. Este error se solventa borrando la línea nombrada:

'Me.ocxPlayer.Enabled = True

y compilando después sin ella. Este error no existe en Visual Studio .NET 2003.


Basado en las propuestas de Jim Travis (New Media Platforms Division) en el artículo "Playing Digital Media in a Visual Basic .NET Application" de febrero de 2003.