Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Reproductor MP3

Estas en el tema de Reproductor MP3 en el foro de Visual Basic clásico en Foros del Web. Buen día a todos. Estoy atascado en un código y aquí dejo la pregunta por si podéis echarme una mano. Creo un archivo de recursos ...
  #1 (permalink)  
Antiguo 25/04/2010, 03:21
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 3
Reproductor MP3

Buen día a todos. Estoy atascado en un código y aquí dejo la pregunta por si podéis echarme una mano.

Creo un archivo de recursos llamado Proyecto1.RES
Ese archivo contiene dos canciones: ID 101 (un tema MP3) e ID 102 (otro tema MP·)

Inserto un control MMC en el formulario llamado mmcMP3

Private Sub Form_Load()
mmcMP3.DeviceType = "MPEGVideo"
mmcMP3.FileName = "Proyecto1.RES"
mmcMP3.Command = "Open"
mmcMP3.Command = "Play"
End Sub


Private Sub Form_Unload(Cancel As Integer)
mmcMP3.Command = "Stop"
mmcMP3.Command = "Close"
End Sub


Todo funciona bien. El problema es que en el archivo RES hay dos ID, y no se como elegir una u otra.


He probado esto y no funciona:

Private Sub Form_Load()
mmcMP3.DeviceType = "MPEGVideo"
mmcMP3.FileName = "LoadResData(101, "CUSTOM")"
mmcMP3.Command = "Open"
mmcMP3.Command = "Play"
End Sub

Private Sub Form_Load()
mmcMP3.DeviceType = "MPEGVideo"
mmcMP3.FileName = "Proyecto1.RES (101, "CUSTOM")"
mmcMP3.Command = "Open"
mmcMP3.Command = "Play"
End Sub


Private Sub Form_Load()
Dim WaveBuffer As String, ResourceId As Long
ResourceId = 101 ó 102
WaveBuffer = StrConv(LoadResData(ResourceId, "CUSTOM"), vbUnicode)
mmcMP3.FileName = "WaveBuffer"
mmcMP3.Command = "Open"
mmcMP3.Command = "Play"
End Sub

Ojalá que alguien pueda darme alguna idea. Gracias y un saludo
  #2 (permalink)  
Antiguo 25/04/2010, 06:59
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 8 meses
Puntos: 29
Respuesta: Reproductor MP3

No se si te servira, pero yo con la api sndplaysound usaba variables de tipo:

SonidoWAV1 = StrConv(LoadResData(101, "CUSTOM"), vbUnicode)

call sndplaysound(sonidowav1,4)

Suerte

PD: Tu fallo parece estar en que usas comillas para encerrar la variable y no debe ser así.

mmcMP3.FileName = WaveBuffer

Aún así no creo que te lo admita como FileName
Tendrías que escribir el fichero en una carpeta temporal y cargarlo desde ahí.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 25/04/2010, 09:15
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Reproductor MP3

Gracias por la ayuda. He quitado las comillas de la variable, pero no funciona. El modo que tu utilizas no me sirve, ya que yo quiero reproducir MP3 y no WAV.
En cuanto a lo que crear un temporal, investigaré y si lo resuelvo ya pongo la solución.

Gracias y un saludo PKJ
  #4 (permalink)  
Antiguo 25/04/2010, 10:18
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Reproductor MP3

He encontrado este módulo en la red (yo no sabría hacerlo) que ha sido la solución.

Module1

Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
Private Function Archivo_Temporal() As String
Dim sSave As String, hOrgFile As Long, hNewFile As Long, bBytes() As Byte
Dim sTemp As String, nSize As Long, Ret As Long
sTemp = String(260, 0)
GetTempFileName Environ("temp"), "TTT", 0, sTemp
Archivo_Temporal = Left$(sTemp, InStr(1, sTemp, Chr$(0)) - 1)
End Function


Function Cargar(ID As Integer) As String
Path = Archivo_Temporal
Dim aDatos() As Byte

' lee los datos en el array de bytes
aDatos = LoadResData(ID, "CUSTOM")

' abre un archivo para escribir los datos en modo binario
Open Path For Binary Access Write As #1

' escribe el array de bytes para
Put #1, , aDatos
' cierra el fichero
Close

Cargar = Path

End Function


En mi código:

mmcMP3.FileName = Cargar (102 ó 101....)

Y ya se puede tener más de una canción.
De todas formas, si hay alguna idea mejor, os agradecería me la dijeseis.

Espero que le sirva a alguien.

Muchas gracias.
Un saludo.

Etiquetas: reproductor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:27.