Reproductor de archivos MP3 con Realbasic en macOS

Sencillo reproductor de audio MP3 realizado en Realbasic para Mac

«Realbasic es una herramienta de desarrollo visual de aplicaciones que utiliza el lenguaje BASIC, un lenguaje sencillo y directo. Sin embargo, no se trata del lenguaje BASIC tal y como se conocía en la década de 1980, sino que la implementación realizada por Real Software es la de un lenguaje BASIC moderno orientado a objetos, más parecido a lo que podemos conocer de otros lenguajes similares como puedan ser Visual Basic .NET o Delphi.

Cuando se crea un programa (ya sea en Realbasic para Linux, para Windows o para Mac) el mismo código fuente puede usarse tanto para compilar la aplicación para ser utilizada en macOS, Windows y Linux, ya que se puede compilar para las tres plataformas con sólo un clic (sin tener que migrar el código a otro lenguaje). Por ello podemos aprovechar esta herramienta para hacer aplicaciones multiplataforma» (Wikipedia).

Aunque en macOS el entorno de desarrollo más usado es Xcode y el lenguaje de programación específico es Objective-C, Real Software tiene un entorno para programar en Realbasic cuyas ventajas principales son:

  • sencillo de usar facilitando en gran medida la escritura de código
  • lenguaje que recuerda mucho a Visual Basic por lo que los programadores procedentes de Windows se adaptan muy deprisa
  • el mismo código puede ser compilado desde el IDE para Mac, Windows o Linux generando ejecutables diferentes para cada plataforma.

Como inconvenientes se pueden incluir lo poco que se parece a Objective-C y su menor potencia para determinadas tareas. Real Software ofrece una versión de prueba de 28 días plenamente funcional que puede servir para iniciarse en el lenguaje Realbasic. En este artículo se mostrará cómo programar un reproductor de audio muy sencillo como ejemplo básico para tomar contacto con este lenguaje. El ejercicio se basa en uno de los ejemplos instalados por Real Studio en la ruta
/Applications/Real Studio 2012/Example Projects/Graphics and Multimedia/Sound.

Puedes crear un proyecto nuevo o abrir el de ejemplo, que será ampliamente modificado. De cualquiera de las 2 maneras se diseña una ventana con 4 botones como la que muestra la imagen inicial y una etiqueta para mostrar mensajes de error o la canción que está sonando:

  • Abrir: abre un cuadro de diálogo que permite abrir un archivo MP3
  • Parar: detiene la reproducción actual
  • Reproducir: reinicia la reproducción detenida
  • Salir: cierra la aplicación.

(Ver los códigos al final del artículo)

Método GetSound()

Se crea un tipo de archivo dentro de la propia aplicación (busca la línea «Dim mp3Type as New FileType«) aunque no es imprescindible por tratarse de un tipo que ya existe en macOS pero sirve como aprendizaje para otros casos.

Hay un sencillo control de excepciones y errores mediante bucles If…Then para mostrar los mensajes en otro color en lugar del nombre de la canción:

Pero el control avanzado de excepciones se realiza con Try…Catch.

Método PlaySound()

Se limita a hacer sonar el archivo elegido si realmente hay alguno.

Ajustes de compilación

Aquí podemos elegir para qué plataformas queremos crear ejecutable y en el caso de macOS permite elegir entre Carbon (librería de clases más antiguas, de la transición de macOS 9 a X) y Cocoa (clases actuales que utiliza macOS).

Botones default y cancel en el formulario

Entre las propiedades de los botones de comando existen 2 llamadas default y cancel, sólo 1 botón puede tener asignado cada una de ellas de forma que el botón default se activa al pulsar la tecla INTRO y el botón default se activa al pulsar la tecla ESC. En este ejemplo he configurado el botón Abrir como default y el botón Salir como cancel.

Botón Abrir

'Si está sonando otra canción, pararla y dejar en blanco
'la etiqueta con el nombre de la canción y del artista
If mSound <> Nil Then
mSound.Stop
lblNombre.Text = ""
End If

'Método que permite elegir el archivo MP3 y reproducirlo
GetSound


Método GetSound()

lblNombre.TextColor = &c000000 'etiqueta con letras de color negro
lblNombre.Text = "" 'limpiar la etiqueta de texto

'======================
'Abrir cuadro de diálogo para elegir un archivo MP3
Dim dialog As OpenDialog
Dim soundFile As FolderItem

Dim mp3Type as New FileType
mp3Type.Name = "audio/mp3"
mp3Type.MacType = "MP3"
mp3Type.Extensions = "mp3;MP3"

'crear el diálogo (todavía no se muestra)
dialog = New OpenDialog

'Filtrar archivos por extensión, se pueden definir tipos
'de archivos en la pestaña Proyecto con el menú Añadir
'Conjunto de tipos de archivos
dialog.Filter = ".mp3"

'La clase OpenDialog permite personalizaciones…
dialog.PromptText = "Selecciona archivo MP3..."
dialog.Title = "Elegir archivo..."

'Mostrar diálogo desplegable con dlg.showModalWithin(self)
'Mostrar diálogo modal con dlg.showModal
soundFile = dialog.ShowModalWithin(self)

'Si se ha seleccionado algún archivo
If dialog.Result<> Nil Then

If soundFile <> Nil Then
soundFile = GetFolderItem(soundFile.AbsolutePath) 'ruta al archivo elegido
'MsgBox(soundFile.Name)
mSound = soundFile.OpenAsSound 'asignarlo a mSound
lblNombre.Text = soundFile.Name 'mostrar nombre de canción
PlaySound 'reproducir
Else
'MsgBox("No encuentro el archivo " + soundFile.Name)
lblNombre.TextColor = &cb22222 'letras de color magenta
lblNombre.Text = "No encuentro el archivo " + soundFile.Name
End If

Else
'MsgBox "Error. ¿Has pulsado el botón Cancelar?"
lblNombre.TextColor = &cb22222 'letras de color magenta
lblNombre.Text = "Error. ¿Has pulsado el botón Cancelar?"
End If


Método PlaySound()

'iniciar la reproducción
If mSound <> Nil Then
mSound.Play
End If
End Sub


Botón Parar

'Si no suena ninguna canción, no hacer nada
If mSound <> Nil Then
'para la reproducción
mSound.Stop
End If


Botón Reproducir

'Si no suena ninguna canción, no hacer nada
If mSound <> Nil Then
'iniciar la reproducción
mSound.Play
End If
End Sub


Botón Salir

'cerrar el programa
Quit()