Como controlar una lista de reproducción de mp3 sin windows media

Estoy intentando lograr una lista de reproducción de varios archivos mp3 dentro de un formulario con macros de Excel; sin utilizar el control de Windows Media ni ninguna otra aplicación de reproducción que pudiera tener la PC.

La idea es la siguiente: elegir el primer tema a reproducir mediante un click en un botón. Una vez que se acabe el tema, continuar reproduciendo otros tres temas pre-establecidos en el mismo script; sin tener que clickear botones ni elegirlos de un listbox.

He probado con Application. Ontime now+timevalue(xx), "yy". Donde xx es la duración de cada tema ("00:03:00") por ejemplo; mientras que yy es el nombre del procedimiento que contiene la instrucción mciexecute "Play " & mp3 (ruta y nombre del siguiente mp3).

La cosa, "parece" andar bien; pues reproduce los temas en cadena tal como lo deseo, pero el problema es que no respeta el tiempo de duración de cada uno, sino que lo interrumpe en cualquier momento para pasar al siguiente.

1 respuesta

Respuesta
1

Dejo sin efecto la consulta, ya que pude resolverla con el siguiente código:

Sub reloj()
Dim inicio
inicio = Timer
Do While Timer < inicio + tiempo
If Timer = inicio Then mciExecute "Play " & mp3
DoEvents
If detente = True Then Exit Do
Loop
If detente = False Then
mciExecute "Stop " & mp3
hr = False
Call contrep
End If
End Sub

__

Donde la variable "tiempo" es la cantidad de segundos que dura el tema y la variable "mp3" agrupa la ruta y el nombre del tema musical a reproducir.

El procedimiento "contrep" llamado al final es el orden de la lista de reproducción que deseo.

Para conocer el tiempo (en segundos) del primer tema a reproducir, llamo un procedimiento así:

Sub vertiempo(otracarp)
directorio = otracarp
Set oShell = CreateObject("Shell.Application")
Set oDir = oShell.Namespace(directorio)
For Each sFile In oDir.Items
If oDir.GetDetailsOf(sFile, 0) = tema Then
Min = Mid(oDir.GetDetailsOf(sFile, 27), 4, 2)
seg = Mid(oDir.GetDetailsOf(sFile, 27), 7, 2)
tiempo = Min * 60 + seg
End If
Next
End Sub

Donde la variable "otracarp" es la ruta o carpeta dentro de la cual buscar el tema seleccionado en un listbox y la variable "tema" es el nombre del mismo.

__

PD: No recomiendo el uso de Application. Ontime; pues su comportamiento es muy errático, caprichoso y arbitrario; sobre todo a la hora de intentar detenerlo.-

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas